Hadoop中ZKFailoverController如何申请锁?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
若每个namenode是健康的,则每个NN所对应的zkfc会在zookeeper中保持一个打开的会话;对于active状态的namenode,其zkfc还会在zookeeper中占有一个短暂类型的znode,当主namenode挂掉时,其znode将会被删除,其ZKFailoverController跟主NameNode无法通信,此时主NN所对应的FailoverController就会把主NN宕机的信息汇报给Zookeeper,其它的ZKFailoverController便从ZK中得到了这条信息,然后它们给各自监控的NameNode发送切换指令。当其中一个备用namenode率先得到这把锁,即可升级为主namenode,同时标记状态为active,当宕机的namenode,重新启动,他会再次注册zookeeper,若发现已经有znode了,就自动变为standby状态,如此往复循环,保证高可靠性。