HadoopHa 介绍
HA(High Available), 高可用,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,分为活动节点(Active)及备用节点(Standby)。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。
HadoopHa详情
Hadoop1.X版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用。为了解决这个问题,出现了一堆针对HDFS HA的解决方案(如:Linux HA, VMware FT, shared NAS+NFS, BookKeeper, QJM/Quorum Journal Manager, BackupNode等)。
hadoop2.x之后,Clouera提出了QJM/Qurom Journal Manager,这是一个基于Paxos算法(分布式一致性算法)实现的HDFS HA方案,它给出了一种较好的解决思路和方案,QJM主要优势如下:
不需要配置额外的高共享存储,降低了复杂度和维护成本。
消除spof(单点故障)。
系统鲁棒性(Robust)的程度可配置、可扩展。基本原理就是用2N+1台 JournalNode 存储EditLog,每次写数据操作有>=N+1返回成功时即认为该次写成功,数据不会丢失了
HadoopHa执行流程
高可用方案中NN有两个,一个是Active状态,表示正在对外提供服务的,活跃的NN。
StandBy状态,不是对外提供服务的,随时准备替换ActiveNN.
ZKFC:监控NN所在节点的硬件设备、软件(NN)、操作系统。同时维护与ZK的通信。HA方案中只有两个NN,每个NN都有一个ZKFC.
NN Active 状态和StandBy状态的确认:
两个NN到ZK集群注册一个临时的ZNode,哪个先注册成功,哪个就是Active,另外一个就是StandBy.
当ActiveNN节点故障 ActiveZKFC通知ZK删除临时ZNode StandBy状态的ZKFC订阅这个临时ZNode的变换,若ZNode消失,立刻同时StandBy NN StandBy NN 远程登录NN,执行Kill -9 ActiveNN StandBy NN通知StandBy ZKFC去ZK上注册临时ZNode。
两个元数据信息如何实现快速同步?
JournalNode(JN) :高效的存储系统,能够实现数据的超快速写入与读取。JN是一个小集群(小的文件系统)。节点数需要是奇数台(1、3、5)
ActiveNN实时将FSimage和日志接入JN。StandByNN实时获取JN内部的数据,实现两个节点的实时元数据同步。
ResourceManager也存在单点问题
解决方案ResourceManager HAS
两个ResourceManager,一个Active 一个StandBy。
两个ResourceManager切换是在ZK注册临时节点。