HA功能中ZKFC对NN状态的控制

Posted lxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HA功能中ZKFC对NN状态的控制相关的知识,希望对你有一定的参考价值。

ZKFC : zookeeper FailoverController

NN : name node

 

 

Hadoop 2.0 HA架构图:

 

技术分享

 

FC是要和NN一一对应的,两个NN就要部署两个FC。它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个 特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。

 

ZKFC是Hadoop中通过ZK实现FC功能的一个实用工具。

 

ZKFC的主类是org.apache.hadoop.hdfs.tools.DFSZKFailoverController

 

  • formatZK

 

创建特定目录,作为后续写节点状态的父路径。如果该目录已经存在,清理原有目录为空目录。

 

  •  HealthMonitor

 

在一个独立线程中,通过RPC方式,周期性的调用HAServiceProtocol接口的monitorHealth方法,获取NN的状态。并把状态报告给ActiveStandbyElector 

 

  •  ActiveStandbyElector

 

ActiveStandbyElector 负责判断哪个NN可以成为Active。它通过ZK,看哪个能够成功的创建一个特定的ephemeral lock file (znode),哪个就是Active,其它的成为Standby。在一个节点被通知变成Active后,它必须确保自己能够提供一致性的服务(数据一致性),否则它需要主动退出选举。

 

如果一个ActiveHealthMonitor监控到状态异常,这里会作出判断,先通过Fenceing功能关闭它(确保关闭或者不能提供服务),然后在ZK上删除它对应ZNode

 

发送上述事件后,在另外一台机器上的ZKFC中的ActiveStandbyElector 会收到事件,并重新进行选举(尝试创建特定ZNode),它将获得成功并更改NN中状态,从而实现Active节点的变更。

 

以上是关于HA功能中ZKFC对NN状态的控制的主要内容,如果未能解决你的问题,请参考以下文章

[Hadoop]Hadoop章3 NameNode的ZKFC机制

Hadoop 之 HA

大数据 Hadoop 高可用HA(Journal,ZooKeeper)

解决HA is not enable for this namenode错误

当实际的活动名称节点关闭时,HDFS HA 集群备用节点不会变为活动状态

Hdfs的HA高可用