美文网首页大数据处理
HA总览:Zookeeper、HDFS、YARN

HA总览:Zookeeper、HDFS、YARN

作者: OzanShareing | 来源:发表于2020-01-18 20:05 被阅读0次

    一、HDFS-HA架构


    • NameNodeActiveNodeStandbyNode形成互备,当Active挂掉的时候启动Standby作为Active对外提供服务。

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

    • 共享存储系统NameNode备份NameNode实现元数据同步的关键,新的NameNode只有在确认元数据完全同步后才能继续对外提供服务。

    • DataNode节点:除了同步元数据之外,还需要同步hdfs数据块datanode的映射关系,DataNode会向主NameNode和备份NameNode上报数据块的位置信息。

    • Zookeeper集群:为主备切换控制器提供主备选举支持。

    JournalNode


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

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

    HDFS高可用切换的核心:ZKFC


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

    • HealthMonitor:主要负责检测 NameNode 的健康状态,如果检测到 NameNode 的状态发生变化,会回调 ZKFailoverController 的相应方法进行自动的主备选举。主要是磁盘存储资源是否充足。

    • ActiveStandbyElector:主要负责完成自动的主备选举,内部封装了 Zookeeper 的处理逻辑,一旦 Zookeeper 主备选举完成,会回调 ZKFailoverController 的相应方法来进行 NameNode 的主备状态切换。

    ZKFailoverController:协调HealthMonitorActiveStandbyElector对象,处理它们发来的event变化事件,完成自动切换的过程。

    二、YARN-HA架构

    集群概述:

    RMResourceManager):一个集群只有一个active状态的,负责整个集群的管理和调度

    1. 处理客户端请求
    2. 启动监控ApplicationMaster(AM:一个作业对应一个)
    3. 监控NodeManager
    4. 系统资源的分配和调度

    NMNodeManager):负责单个节点的资源管理和使用以及task运行

    1. 定期向RM汇报本节点的资源使用情况和container运行情况
    2. 接收处理RMcontainer的启停各种命令
    3. 单节点资源管理和任务管理

    Zookeeper

    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的心跳信息,构建集群的资源信息,并且接受客户端的作业提交请求。

    三、HDFS的NameNode和YARN的ResourceManager之间的关系

    在所有的HDFSYARN的框架介绍中,没有具体介绍这两个框架的整合使用。也没有一张图来表明两个框架之间的分工合作。

    对于HDFSNameNodeYARNResourceManager之间的关系也很模糊。在集群搭建的时候,有节点启动了HDFS,有节点启动了YARN,这两者之间的关系和协同工作由下图来描述。

    很粗的框图

    Hadoop提供的服务,主要是两个:分布式存储分布式计算

    分布式就是由多台机器协同来完成的任务。

    Hadoop的分布式系统,都采用Master-Slave的主从模式,在这样的模式下,分布式存储系统(HDFS)的主节点,是NameNode。分布式资源管理系统(Yarn)的主节点,是ResourceManager

    可以把Hadoop想象成单机操作系统扩展到一个集群的情况,其中的NameNode就是文件系统的中央管理枢纽,ResourceManager就相当于单机中负责管理机器中的内存、cpu的那个操作系统的调度系统。

    其实这两个框架谈不上什么分工协作的。 HDFS可以理解为像个文件系统,YARN可以理解为像个shell。 从设计的初衷上,二者就没什么分工协作, 说得更专业点,叫"耦合度低"。假设我们写一个MRv2(yarn)的简单程序,如果输入输出都不是HDFS路径,而是本地硬盘路径(local)的话,那这个程序跟hdfs可能就完全没有关系了。

    相关文章

      网友评论

        本文标题:HA总览:Zookeeper、HDFS、YARN

        本文链接:https://www.haomeiwen.com/subject/reclzctx.html