共计 6883 个字符,预计需要花费 18 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下如何使用 4 个节点搭建 Hadoop2.x HA 测试集群,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
搭建 Hadoop2.x HA1. 机器准备
虚拟机 4 台
10.211.55.22 node1
10.211.55.23 node2
10.211.55.24 node3
10.211.55.25 node4
2. 四台主机节点安排 nodenamenodedatanodezkzkfcjnrmapplimanagernode11
11
node211111
1node3
11
111node4
1
111
总结:
node 启动节点数 node14node27node36node453. 所有机器准备工作 3.1 主机名及每台 hosts dns 文件配置
修改虚拟机的名称
修改 mac 的 node1 node2 node3 node4 的 dns
hostname
node1 node2 node3 node4
vi /etc/sysconfig/network
宿主机及 node1 node2 node3 node4
vi /etc/hosts
10.211.55.22 node1
10.211.55.23 node2
10.211.55.24 node3
10.211.55.25 node4
重启
3.2 关闭防火墙
service iptables stop chkconfig iptables off
检查
service iptables status
3.3 配置免密钥
这里使用 dsa 算法
node1 node2 node3 node4 本身机器配置免密钥
$ ssh-keygen -t dsa -P -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
从 node1 拷贝到 node2 node3 node4
scp ~/.ssh/id_dsa.pub root@node2:~
scp ~/.ssh/id_dsa.pub root@node3:~
scp ~/.ssh/id_dsa.pub root@node4:~
node2 node3 node4 自身追加:cat ~/id_dsa.pub ~/.ssh/authorized_keys
从 node2 拷贝到 node1 node3 node4
scp ~/.ssh/id_dsa.pub root@node1:~
scp ~/.ssh/id_dsa.pub root@node3:~
scp ~/.ssh/id_dsa.pub root@node4:~
node1 node3 node4 自身追加:cat ~/id_dsa.pub ~/.ssh/authorized_keys
从 node3 拷贝到 node1 node2 node4
scp ~/.ssh/id_dsa.pub root@node1:~
scp ~/.ssh/id_dsa.pub root@node2:~
scp ~/.ssh/id_dsa.pub root@node4:~
node1 node2 node4 自身追加:cat ~/id_dsa.pub ~/.ssh/authorized_keys
从 node4 拷贝到 node1 node2 node3
scp ~/.ssh/id_dsa.pub root@node1:~
scp ~/.ssh/id_dsa.pub root@node2:~
scp ~/.ssh/id_dsa.pub root@node3:~
node1 node2 node3 自身追加:cat ~/id_dsa.pub ~/.ssh/authorized_keys
3.4 时间同步 ntp
所有机器:
yum install ntp
ntpdate -u s2m.time.edu.cn
在启动的时候,需要同步一下保险,最好设置局域网时间同步,保持同步
检查:date
3.5 安装 java jdk
安装 jdk,配置环境变量
所有机器:
卸载 openjdk:
java -version
rpm -qa | grep jdk
rpm -e --nodeps java-1.6.0-openjdk-javadoc-1.6.0.0-1.41.1.10.4.el6.x86_64
rpm -qa | grep jdk
安装 jdk:
rpm -ivh jdk-7u67-linux-x64.rpm
vi ~/.bash_profile
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bash_profile
检查:
java -version
3.6 上传软件及解压
上传 hadoop-2.5.1_x64.tar.gz
scp /Users/mac/Documents/happyup/study/files/hadoop/hadoop-2.5.1_x64.tar.gz root@node1:/home
node2
node3
node4
上传 zk
scp /Users/mac/Documents/happyup/study/files/hadoop/ha/zookeeper-3.4.6.tar.gz root@node1:/home
node2
node3
解压:
node1 node2 node3 node4
tar -xzvf /home/hadoop-2.5.1_x64.tar.gz
node1 node2 node3
tar -xzvf /home/zookeeper-3.4.6.tar.gz
3.7 快照
hadoop 完全 ha 准备工作
3.1 主机名及每台 hosts dns 文件配置
3.2 关闭防火墙
3.3 配置所有机器的互相免密钥
3.4 时间同步 ntp
3.5 安装 java jdk
3.6 上传解压软件 hadoop zk
这时候做一个快照,其他机器也可以使用
4.zk 安装配置 4.1 修改配置文件 zoo.cfg
ssh root@node1
cp /home/zookeeper-3.4.6/conf/zoo_sample.cfg /home/zookeeper-3.4.6/conf/zoo.cfg
vi zoo.cfg
其中把 dataDir=/opt/zookeeper
另外在最后添加:server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
:wq
4.2 修改工作目录
到 datadir 目录下:mkdir /opt/zookeeper
cd /opt/zookeeper
ls
vi myid, 填写 1 :wq
拷贝相关文件到 node2 node3
scp -r /opt/zookeeper/ root@node2:/opt 修改为 2
scp -r /opt/zookeeper/ root@node3:/opt 修改为 3
4.3 同步配置
拷贝 zk 到 node2 node3
scp -r /home/zookeeper-3.4.6/conf root@node2:/home/zookeeper-3.4.6/conf
scp -r /home/zookeeper-3.4.6/conf root@node3:/home/zookeeper-3.4.6/conf
4.4 添加环境变量
node1 node2 node3
添加 PATH
vi ~/.bash_profile
export ZOOKEEPER_HOME=/home/zookeeper-3.4.6
PATH 添加 :$ZOOKEEPER_HOME/bin
source ~/.bash_profile
4.5 启动
启动:cd zk 的 bin 目录下:zkServer.sh start
3214 QuorumPeerMain
依次启动 node1 node2 node3
5.hadoop 安装配置 5.1 hadoop-env.sh
cd /home/hadoop-2.5.1/etc/hadoop/
vi hadoop-env.sh
改动:export JAVA_HOME=/usr/java/jdk1.7.0_67
5.2 slaves
vi slaves
node2
node3
node4
5.3 hdfs-site.xml
vi hdfs-site.xml
property
name dfs.nameservices /name
value cluster1 /value
/property
name dfs.namenode.rpc-address.cluster1.nn1 /name
value node1:8020 /value
/property
property
name dfs.namenode.rpc-address.cluster1.nn2 /name
value node2:8020 /value
/property
name dfs.namenode.http-address.cluster1.nn1 /name
value node1:50070 /value
/property
property
name dfs.namenode.http-address.cluster1.nn2 /name
value node2:50070 /value
/property
name dfs.namenode.shared.edits.dir /name
value qjournal://node2:8485;node3:8485;node4:8485/cluster1 /value
/property
name dfs.client.failover.proxy.provider.cluster1 /name
value org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider /value
/property
name dfs.ha.fencing.ssh.private-key-files /name
value /root/.ssh/id_dsa /value
/property
value true /value
/property
5.4 core-site.xml
vi core-site.xml
property
name fs.defaultFS /name
value hdfs://cluster1 /value
/property
property
name hadoop.tmp.dir /name
value /opt/hadoop /value
/property
property
name ha.zookeeper.quorum /name
value node1:2181,node2:2181,node3:2181 /value
/property
5.5 mapred-site.xml
vi mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
property
name mapreduce.framework.name /name
value yarn /value
/property
5.6 yarn-site.xml
vi yarn-site.xml 无需配置 applicationmanager,因为和 datanode 相同
property
name yarn.nodemanager.aux-services /name
value mapreduce_shuffle /value
/property
property
name yarn.resourcemanager.ha.enabled /name
value true /value
/property
property
name yarn.resourcemanager.cluster-id /name
value rm /value
/property
property
name yarn.resourcemanager.ha.rm-ids /name
value rm1,rm2 /value
/property
property
name yarn.resourcemanager.hostname.rm1 /name
value node3 /value
/property
property
name yarn.resourcemanager.hostname.rm2 /name
value node4 /value
/property
property
name yarn.resourcemanager.zk-address /name
value node1:2181,node2:2181,node3:2181 /value
/property
5.7 同步配置文件
同步到 node2 node3 node4
scp /home/hadoop-2.5.1/etc/hadoop/* root@node2:/home/hadoop-2.5.1/etc/hadoop
scp /home/hadoop-2.5.1/etc/hadoop/* root@node3:/home/hadoop-2.5.1/etc/hadoop
scp /home/hadoop-2.5.1/etc/hadoop/* root@node4:/home/hadoop-2.5.1/etc/hadoop
5.8 修改环境变量
node1 node2 node3 node4
vi ~/.bash_profile
export HADOOP_HOME=/home/hadoop-2.5.1
PATH 添加::$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bash_profile
5.8 start
1. 启动 node1 node2 node3 的 zk
启动:cd zk 的 bin 目录下:zkServer.sh start
3214 QuorumPeerMain
依次启动 node1 node2 node3
2. 启动 journalnode, 用于格式化 namenode 如果是第二次重新配置,删除 /opt/hadoop /opt/journal/data node1 node2 node3 node4
在 node2 node3 node4 分别执行:
./hadoop-daemon.sh start journalnode
jps 验证是否有 journalnode 进程
3. 格式化一台 namenode node1
cd bin
./hdfs namenode -format
验证打印日志, 看工作目录有无文件生成
4. 同步这个 namenode 的 edits 文件到另外一个 node2,要启动被拷贝的 namenode node1
cd sbin
./hadoop-daemon.sh start namenode
验证 log 日志 cd ../logs tail -n50 hadoop-root-namenode
5. 执行同步 edits 文件
在没有格式化到 namenode 上进行(node2)cd bin
./hdfs namenode -bootstrapStandby
在 node2 上看有无文件生成
6. 到 node1 停止所有服务
cd sbin
./stop-dfs.sh
7. 初始化 zkfc,zk 一定要启动,在任何一台 namenode 上
cd bin
./hdfs zkfc -formatZK
8. 启动
cd sbin:
./start-dfs.sh
sbin/start-yarn.sh
jps:remanager nodemanager
node1:8088
或者 start-all.sh
2.x 中 resourcemanager 需要手动启动 node3 node4
yarn-daemon.sh start resourcemanager
yarn-daemon.sh stop resourcemanager
9. 查看是否启动成功及测试
jps
hdfs webui:
http://node1:50070
http://node2:50070 standby
rm webui:
http://node3:8088
http://node4:8088
上传文件:cd bin
./hdfs dfs -mkdir -p /usr/file
./hdfs dfs -put /usr/local/jdk /usr/file
关闭一个 rm,效果
关闭一个 namenode 效果
10. 出现问题解决方法
1. 控制台输出
2.jps
3. 对应节点的日志
4. 格式化之前要删除 hadoop 工作目录,删除 journode 的工作目录
以上是“如何使用 4 个节点搭建 Hadoop2.x HA 测试集群”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!