如何使用4个节点搭建Hadoop2.x HA测试集群

51次阅读
没有评论

共计 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 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计6883字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)