HA总结,zookeeper,HDFS,YARN

HDFS-HA架构

HA总结,zookeeper,HDFS,YARN

 

  • ActiveNode和StandbyNode形成互备,当Active挂掉的时候启动standby作为active对外提供服务。
  • ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换,
  • 共享存储系统:主NN和备份NN实现元数据同步的关键,新的NN只有在确认元数据完全同步后才能继续对外提供服务。
  • DataNode节点:除了同步元数据之外,还 需要同步hdfs数据块和datanode的映射关系,DN会像主NN和备份NN上报数据块的位置信息。
  • ZK集群:为主备切换控制器提供主备选举支持,

JournalNode

用来存放editlog,active往里写,standby从中读取editlog实现数据同步。active状态的NN的命名空间有任何改动时,会通知大部分JournalNode进程,standby读取JNs中的变更信息,并监控editlog的变化,把变化应用于自己的命名空间。standby可保证在集群出错时,命名空间状态已经完全同步了。

JNs时非常轻量级的,可部署在其他机器上,必须至少三个节点,奇数个。

HDFS高可用切换的核心,ZKFS

ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换

  • HealthMonitor:主要负责检测 NameNode 的健康状态,如果检测到 NameNode 的状态发生变化,会回调 ZKFailoverController 的相应方法进行自动的主备选举。主要是磁盘存储资源是否充足。
  • ActiveStandbyElector:主要负责完成自动的主备选举,内部封装了 Zookeeper 的处理逻辑,一旦 Zookeeper 主备选举完成,会回调 ZKFailoverController 的相应方法来进行 NameNode 的主备状态切换。
  • ZKFailoverController:协调HealMonitor和ActiveStandbyElector对象,处理它们发来的event变化事件,完成自动切换的过程。

 

 

YARN-HA架构

HA总结,zookeeper,HDFS,YARNHA总结,zookeeper,HDFS,YARN

集群概述:

RM :ResourceManage:r一个集群只有一个active状态的,负责整个集群的管理和调度
1). 处理客户端请求
2). 启动监控ApplicationMaster(AM,一个作业对应一个)
3). 监控NM
4). 系统资源的分配和调度

NM :负责单个节点的资源管理和使用以及task运行
1). 定期想RM汇报本节点的资源使用情况和container运行情况
2). 接收处理RM对container的启停各种命令
3). 单节点资源管理和任务管理

ZK

在ZooKeeper上会有一个/yarn-leader-election/yarn1的锁节点,所有的ResourceManager在启动的时候,都会去竞争写一个Lock子节点:/yarn-leader-election/yarn1/ActiveBreadCrumb,该节点是临时节点。ZooKeepr能够为我们保证最终只有一个ResourceManager能够创建成功。创建成功的那个ResourceManager就切换为Active状态,没有成功的那些ResourceManager则切换为Standby状态。

ZKFC
 zkfc:是RM里面的一个线程,在HDFS HA中,zkfc是一个独立的进程。作用 是监控RM的健康状态,并执行选举作用。
RMStateStore:
   RM会把job的信息存放在zookeeper的/rmstore目录下,active RM会向这个目录写app的信息。当active RM挂掉之后,standby RM会通过zkfc切换为active状态,然后从zookeeper的/rmstore目录下读取相应的作业信息。重新构建作业的内存信息,启动内部服务,开始接受NM的心跳信息,构建集群的资源信息,并且接受客户端的作业提交请求