利用zookeeper来实现namanode的高可用(HA)(第二篇,接上篇)
机器设备:为了叙述方面 采用nodeX的形式来表示主机名
192.168.159.31(node1) Namenode
192.168.159.32(node2) zookeeper Datanode JN(JournalNode)
192.168.159.33(node3) zookeeper Datanode JN
192.168.159.34(node4) zookeeper Datanode JN
192.168.159.35(node5) Namenode
第一步:
1:zookeeper环境已经搭好,并启动
2:hadoop在.bash_profile已经配置好
3:hadoop-env.sh JAVA_HOME已经配置好
第二步:
node1可以免密登录到node2,node3,node4,node5;
node5可以免密登录到node1
具体怎么做我不做解释,很简单的
第三步:
在node1上配置hadoop然后 scp到其他主机上即可
vim hdfs-site.xml (汉字不要复制)
name>dfs.ha.automatic-failover.enabled
第四步:
vim core-site.xml
第五步:
把node1上配置好的hadoop scp到node2...node5上
第六步:
在node2,node3,node4上执行: (这是第一次运行环境的时候需要,为hdfs namenode -format做准备)
hadoop-daemon.sh start journalnode
第七步:
在任意一个namenode节点上运行.比如在node1上
hdfs namenode -format
成功之后执行
hadoop-daemon.sh start namenode 启动节点
在node5上执行
hdfs namenode -bootstrapStandby
然后在node5上启动namenode
hadoop-daemon.sh start namenode 启动节点
第七步的作用是:首先在一个节点上格式化namenode,然后把元数据fsimage复制到另一个namenode节点上
最后:
在node1上执行: stop-dfs.sh
全面启动:stop-dfs.sh
验证:
1:利用jps检验是否成功:
node1,node5
7512 DFSZKFailoverController
7745 Jps
7626 NameNode
node2,node3,node4
3165 Jps
2931 QuorumPeerMain (zookeeper进程)
3068 JournalNode (JN进程)
2983 DataNode
2:页面验证
192.168.159.31:50070
192.168.159.35:50070
这两个中一个是active,另一个是standby
然后把active的进程kill掉,就可以看到原先是standby的变为了active了
这样就表示成功啦.