hadoop namenode HA 高可用概念和切换NameNode

nn高可用

1、架构介绍

上图,加入zookeper集群,当nn主节点挂掉,通过zk自动将nn副本升级为主节点。
为了提供快速故障转移,备用节点还必须具有关于群集中块的位置的最新信息。为了实现这一点,DataNode配置了所有NameNode的位置,并向NN发送块位置信息和心跳。

如图中的jn集群。当Active节点执行任何名称空间修改时,它会将修改记录持久地记录到大多数这些JN中。待机节点能够从JN读取编辑,并且不断观察它们对编辑日志的更改。当备用节点看到编辑时,它会将它们应用到自己的命名空间。这可确保在发生故障转移之前完全同步命名空间状态,保证两个nn数据最终的一致性。
1)如何确定哪个nn是主节点
图中还新增了一个zkfc角色,是一个jvm进程,用于监控nn状态。当nn启动后,zkfc检测到各自nn都已启动正常运行后,zkfc向zk发送创建锁的消息,谁的锁创建成功,则对应的nn标识为主节点,其它的zkfc则会对该节点进行watch,即监控,并注册回调方法。
2)nn主节点挂掉后,nn副本如何升级为主节点
当nn主节点挂掉后,对应的zkfc检测到nn状态,向zk发送删除锁的消息,锁删除成功后,则触发一个事件,该事件回调副本对应的zkfc,zkfc得到消息后先取zk争夺创建锁,完成后检测nn主节点是否挂掉,挂掉则升级副本为主节点,没挂掉则将主节点降级为副本,将自己对应的nn升级为主节点。
3)主节点zkfc挂掉,主节点没挂
zkfc在zk创建的锁属于临时节点,该节点属于对应的回话session。
zkfc挂掉,zkfc和zk之间tcp链接会随之断开,session随之消失,锁被删除,触发一个事件回调副本的zkfc,zkfc得到消息后先取zk争夺创建锁,完成后检测nn主节点是否挂掉,挂掉则升级副本为主节点,没挂掉则将主节点降级为副本,将自己对应的nn升级为主节点。

2、手动切换NN

查看NameNode的状态
hdfs haadmin -getServiceState nn1
手动切换nn1为active
hdfs haadmin -transitionToActive nn1 ##切换成active
 

发布了159 篇原创文章 · 获赞 75 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/xuehuagongzi000/article/details/105018397