首先是选择谁是 NameNode Active,然后另一个就是Standby。而选择是通过投票机制完成的。
当选择完成要进行NameNode的状态的转化你,而状态的转换是通过FailoveController完成的且和NameNode的当前装填保持一致,也就是说NN是Active的状态时候FailoveController也是Active的状态
FailoverController的作用
(1)远程的Cmds控制NameNode状态切换。(为什么要切换?? 为了换掉的时候只单单的通过切换命令就可以完成了)
(2)对NameNode做健康检查,然后将状况汇报给Zookeep,Zookeep就知道每一台机器的状态,当Active NN挂掉的时候就Zookeep就在Standby中的多态机器中选择一个,通过FailoverController将它的状态转为Active
Zookeep的官网资料:
ZooKeeper Getting Started Guide
http://zookeeper.apache.org/doc/r3.4.11/zookeeperStarted.html
搭建需要至少三个副本
Zookeeper的功能以及工作原理 - FelixZh - 博客园
https://www.cnblogs.com/felixzh/p/5869212.html
Hadoop高可用集群(HA+JournalNode+zookeeper) - CSDN博客
http://blog.csdn.net/Dr_Guo/article/details/50939537