1 ZKFC解析
HA(High Availability)是HDFS支持的一个重要特性,可以有效解决Active Namenode遇到故障时,将可用的Standby节点变成新的Active状态的问题,使集群能够正常工作。目前支持冷切换和热切换两种方式。冷切换通过手动触发,缺点是不能够及时恢复集群。实际生产中以应用热切换为主,通过自主检查Namenode健康状态、Zookeeper维护Active信息、多种Namenode隔离方法,可以做到自动感应故障发生并实现自主切换。伴随有ZKFC运行进程的Namenode都会参与选举。
1.0 zkfc介绍
ZKFC(ZK Failover Controller) 是HA热切换的主要实现者。当工作时,与Namenode(主要是Active和Standby节点)一对一搭配合作。
ZKFC的默认实现者是DFSZKFailoverController,运行时需要独立开启一个JVM进程,并且需要和Namenode位于同一节点,这样做的好处是能够“近距离”了解Namenode的健康状态。
ZKFC主要由以下几个部分组成。
- HealthMonitor:负责及时获取本地Namenode的监控状态,辅助ActiveStandbyElector做决策参考。
- ActiveStandbyElector:根据HealthMonitor获得的最新数据,根据一定策略决定是否进行Namenode隔离和HA状态更新。
- NNHAServiceTarget:作为HAServiceProtocol的