namenode启动都是standby。
- 利用zookeeper来选举一个为active
ZooKeeper客户端ZKFC: ZKFailoverController
- 给namenode添加失效备缓监控器(ZKFC: ZKFailoverController),131和132
NN HA 自动故障转移原理图
-
Zookeeper FC对Namenode进行生命状态监控
- zookeeper集群
通过配置文件实现故障转移
- 启用故障转移(hdfs-site.xml)
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property> - 故障转移依赖zookeeper集群
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop-senior.beifeng.com:2181,hadoop-senior02.beifeng.com:2181,hadoop-senior03.beifeng.com:2181</value>
</property>
自动故障转移启动
- 关闭所有HDFS 服务 sbin/stop-dfs.sh(131节点)
停止顺序:namenode->datanode->journalnode - 向子节点(132/133)同步core-site.xml和hdfs-site.xml
命令:scp -r etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml root@hadoop-senior02.beifeng.com:/opt/app/hadoop-2.5.0/etc/hadoop/
-
启动Zookeeper 集群 bin/zkServer.sh start (131,132,133)
-
初始化 HA 在Zookeeper中状态 bin/hdfs zkfc -formatZK
对ha在zookeeper中的状态进行初始化
在zookeeper服务器上创建一个目录(hadoop-ha)
通过zookeeper客户端可以看一下这个过程。
查看:bin/zkCli.sh -server 192.168.57.131:2181
注意添加ip要不然就会报错。
命令执行前服务器目录结构
命令执行后
-
启动HDFS服务 sbin/start-dfs.sh
启动顺序 namenode-->datanode-->journalnode-->zkfc
干掉131看一下是否可以自动切换到132的namenode
zookeeper集群死掉后不影响hdfs文件系统,只是不能够故障自动转移了。 在各个NameNode节点上启动DFSZK Failover Controller,先在那台机器启动,
那个机器的NameNode就是Active NameNode
sbin/hadoop-daemon.sh start zkfc