HDFS HA系列实验之三:HA+NFS+zookeeper

由于时间关系,原规划在Hadoop cluster2上实施HA+NFS+zookeeper的,改成了在Hadoop cluster1上实施,这样省略了ssh无密码登陆配置环节和hadoop集群配置环节。本篇的配置环境是基于 HDFS HA系列实验之二:HA+JournalNode+zookeeper  上进行的。

1:原理图
HDFS HA系列实验之三:HA+NFS+zookeeper_第1张图片
A:NN1、NN2(或者更多个NN节点)只有一个是Active状态,通过自带ZKFailoverController组件(zookeeper客户端)和zookeeper集群协同对所有NN节点进行检测和选举来达到此目的。
B:Active NN 的EditLog 写入NFS共享目录/mnt/cluster1中,Standby NN通过 共享目录/mnt/cluster1获取Editlog,并在本地运行来保持和Active NN 的元数据同步。
C:如果不配置zookeeper,可以手工切换Active NN/Standby NN;如果要配置zookeeper自动切换,还需要提供切换方法,也就是要配置dfs.ha.fencing.methods参数。

2:NFS客户端配置
启动product201、product202的NFS客户端并设置成启动时自动加载
[root@product201 /]# chkconfig rpcbind on
[root@product201 /]# chkconfig nfslock on
[root@product201 /]# service rpcbind restart
[root@product201 /]# service nfslock restart
[root@product201 /]# mkdir -p /mnt/cluster1
[root@product201 /]# mkdir -p /mnt/cluster2
[root@product201 /]# chown -R hadoop:hadoop /mnt/cluster1
[root@product201 /]# chown -R hadoop:hadoop /mnt/cluster2
[root@product201 /]# mount -t nfs productserver:/share/cluster1 /mnt/cluster1
[root@product201 /]# mount -t nfs productserver:/share/cluster2 /mnt/cluster2
[root@product201 /]# echo "mount -t nfs productserver:/share/cluster1 /mnt/cluster1">>/etc/rc.d/rc.local
[root@product201 /]# echo "mount -t nfs productserver:/share/cluster2 /mnt/cluster2">>/etc/rc.d/rc.local

3:Hadoop配置
配置前停止所有和hadoop相关的进程,可以通过jps查看并确认
A:重建数据目录和日志目录
所有hadoop节点都要运行
[hadoop@product201 hadoop220]$ rm -rf mydata logs
[hadoop@product201 hadoop220]$ mkdir mydata logs

B:修改配置并发放到各节点
[hadoop@product201 hadoop220]$ cd etc/hadoop
[hadoop@product201 hadoop]$ vi hdfs-site.xml
[hadoop@product201 hadoop]$ cat hdfs-site.xml

<property> <name>dfs.namenode.shared.edits.dir</name> <value>file:///mnt/cluster1</value> <description>多个namenode共享NFS目录。</description> </property>

[hadoop@product201 hadoop]$ scp hdfs-site.xml product202:/app/hadoop/hadoop220/etc/hadoop/.  
[hadoop@product201 hadoop]$ scp hdfs-site.xml product203:/app/hadoop/hadoop220/etc/hadoop/.  
[hadoop@product201 hadoop]$ scp hdfs-site.xml product204:/app/hadoop/hadoop220/etc/hadoop/.  
[hadoop@product201 hadoop]$ cd ../..

4:运行Hadoop
关于Hadoop HA启动流程图参见 HDFS HA系列实验之经验总结
A:启动zookeeper
[hadoop@product202 hadoop220]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
[hadoop@product203 hadoop220]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
[hadoop@product204 hadoop220]$ /app/hadoop/zookeeper345/bin/zkServer.sh start

B:格式化namenode并注册zookeeper锁
[hadoop@product201 hadoop220]$ bin/hdfs namenode -format
[hadoop@product201 hadoop220]$ bin/hdfs zkfc -formatZK

C:启动nn1
[hadoop@product201 hadoop220]$ hadoop-daemon.sh start zkfc
[hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start namenode

D:启动nn2,在nn2上同步nn1的元数据信息
[hadoop@product202 hadoop220]$ hadoop-daemon.sh start zkfc
[hadoop@product202 hadoop220]$ bin/hdfs namenode -bootstrapStandby
[hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start namenode

E:启动datanode
[hadoop@product201 hadoop220]$ sbin/hadoop-daemons.sh start datanode

HDFS HA系列实验之三:HA+NFS+zookeeper_第2张图片
 
HDFS HA系列实验之三:HA+NFS+zookeeper_第3张图片
 
HDFS HA系列实验之三:HA+NFS+zookeeper_第4张图片
 

TIPS:
相关的hadoop配置文件下载(HA+NFS+Zookeeper)

你可能感兴趣的:(hadoop,hdfs,HA)