Hadoop HA 详解
1. HDFS HA
1.1 HDFS HA介绍
- HDFS HA指的是 NameNode HA
- HDFS HA是在Hadoop 2.0.0 之后才开始引入使用的,3.0.0之后NameNode的数量可以大于等于2
- Hadoop 集群中的HDFS 在没有部署HA之前,只有一个NameNode进程来维护元数据信息,还有一个Secondary NameNode进程可以做默认一个小时一次的冷备,但是还无法即时做故障转移,单点故障(SPOF:single point of failure)
1.2 HDFS HA架构
- 需要一个ZK集群
- 每个NameNode 对应一个ZKFailoverController 进程,是NameNode的守护进程,用于Active NameNode的选举,监控nn的健康状态,向zk集群定期的发送心跳 让自己被选举上,当被zk选举为active时,zkfc通过rpc协议调用让nn状态转换为nn active
- 当一个Active NameNode挂了之后,由ZKFC来进行选举Active NameNode
- 需要一个Quorum Journal Manager 集群,Quorum Journal Manager节点数:2N +1 ,允许失败的数量:(节点数-1)/2,这是一个日志集群,主要是主责是用来管理多个NameNode之间的数据同步,当Active NodeNode 数据更新时,更新的元数据会通过Quorum Journal Manager 集群流入到Standby NameNode,以此来做元数据同步
- DataNode会向 Active NameNode、Standby NameNode发送心跳
- 对于大数据来说存储挺重要的,为了防止NameNode切换有延迟,建议zk集群重新部署一个新的,不和线上其他的组件共用一个zk集群
2 Yarn HA
2.1 Yarn HA介绍
- Yarn HA指的是ResourceManager 节点的HA
- 在Hadoop 2.4 之后 Hadoop才支持ResourceManager HA
2.2 Yarn HA 架构
- 需要一个zk集群,用于选举Active ResourceManager
- 元数据记录在zk集群里面
- ResourceManager在启动是,通过zk 选举出Active ResourceManager,然后Active ResourceManager 向zk集群hadoop-ha目录写个lock文件,写成功标识为active,否则为standby
- Standby ResourceManager 会一直监控这个lock文件是否存在,假如不存在,就尝试去创建,争取为active ResourceManager
- Yarn HA zkfc是ResourceManager中一个独立的线程,而不是HDFS HA中的独立进程,zkfc是为了故障转移