HA(高可用)搭建
前言:
HDFS的高可用简单来说分为两部分:共享editLog和ZKFC对NN的状态的控制
目录
一、准备工作
1.部署图,node01节点部署主NameNode,node02节点部署备NameNode,node03、node04为DataNode;
ZK: Zookeeper,分布式应用程序协调服务
ZKFC: ZooKeeper Failover Controller,是Hadoop中通过ZK实现FC功能的一个实用工具。FC是要和NN一一对应的,每个运行NN的节点必须要运行一个zkfc。它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态,如果某台机器上的ZKFC监测到异常,那么会通过Fencing功能关闭它(确保关闭或者不能提供服务,否者可能出现脑裂的情况),然后在ZK上删除它对应ZNode,其他机器ZKFC会收到消息并从新选举一个节点为Active状态
JNN: JournalNode Daemon,,JournalNode守护进程。为了使备用节点保持其状态与Active节点同步,两个节点都与一组称为“JournalNodes”(JN)的单独守护进程通信。当Active节点执行任何修改时,它会将修改记录持久地记录到大多数这些JN中。待机节点能够从JN读取编辑,并且不断观察它们对编辑日志的更改。当备用节点看到编辑时,它会将它们应用到自己的namespace。如果发生故障转移,Standby将确保在将自身升级为Active状态之前已从JournalNodes读取所有编辑内容。这可确保在发生故障转移之前完全同步namespace状态。JournalNodes只允许一个NameNode进行写操作。
JournalNode守护程序相对轻量级,因此这些守护程序可以合理地与其他Hadoop守护程序并置在机器上,例如NameNodes,JobTracker或YARN ResourceManager。注意:必须至少有3个JournalNode守护进程,因为编辑日志修改必须写入大多数JN。这将允许系统容忍单个机器的故障。您也可以运行3个以上的JournalNodes,但为了实际增加系统可以容忍的失败次数,您应该运行奇数个JN(即3,5,7等)。请注意,当使用N JournalNodes运行时,系统最多可以容忍(N-1)/ 2个故障并继续正常运行。