HA执行流程
1、集群启动2个NN,每个NN都会有一个ZKFC,每个zkfc到Zookeeper上争抢一个临时节点,哪个优先抢占到了这个临时节点,哪个就是Active,没有抢到的就是standby ,同时变为standby的ZKFC会申请临时节点的watch,监控临时节点的状态,(若节点发生变化,表示Active出现异常);
2、HA方案中有两个NN,一个是NN,一个是SNN(standbyNN), 每个NN都会有一个ZKFC,ZKFC的作用是监控NN健康状态和与Zookeeper保持连接,这个链接就是申请临时节点的链接。
3、当ActiveNN出现异常,Active状态的ZKFC得知异常后断开与Zookeeper的链接,此时ZK上的临时节点就会消失。StandbyZKFC收到zk的断开信息,通知standbyNN, standbyNN远程登录到原始activeNN节点,强行killNN进程。
4、通知standbyZKFC抢占Zookeeper上的临时节点,抢占成功,将状态从standby变为active
5、当原始activeNN重新恢复后,优先到Zokeeper上申请临时节点,此时已被申请,他只能申请临时节点的watch充当standbyNN角色。