hadoop架构总结(三)

hadoop架构总结(三)

摘自机械工业出版社出版的《hadoop大数据技术基础及应用》,个人学习总结。

YARN

YARN资源管理系统正式出现是在hadoop2.0版本,目的是解决1.0中执行mapreduce时JobTracker兼并资源调度和任务监控的过载问题。YARN是一个通用的资源调度管理器,除了为hadoop的mapreduce提供服务,还可以为spark/strom/hive等工具提供资源服务,可以说集群的资源都是由YARN进行管理,任何计算框架都需要请求YARN获取资源,提供资源利用率,避免资源竞争。

YARN基本架构

hadoop架构总结(三)_第1张图片

  1. 资源管理器

    ResourceManager是一个全局资源管理器,它负责整个系统的资源管理和任务调度,主要有两个组件构成:资源调度器(ResourceScheduler)、应用程序管理器(ApplicationManaher)

    • ResourceScheduler

      只负责调度,不参与任何与应用程序有关的工作,它将系统中的资源分配给各个正在运行中的程序,不负责监控或跟踪应用的执行状态,也不负责任务失败后的处理。调度器是一个可插拔组件,根据需要调整调度器,常用的有先进先出调度器、公平调度器、均衡调度器

    • ApplicationManager

      全局应用程序管理器,负责整个系统中所有应用程序的管理,包括应用程序的提交,与调度器来协商资源启动应用管理器,监控应用管理器的运行状态,并在失败时通知它。

  • 应用程序管理器ApplicationMaster

    用户提交的每个应用程序都包含一个ApplicationMaster,与资源管理器协商获取资源,将获得的资源分配给具体的任务,负责与节点管理器通信以启动或停止具体任务,监控该应用管理器下的所有任务运行状态,当任务失败时,重新为任务申请资源。

  • 节点管理器

    NodeManager,负责具体的任务执行,定时向资源管理器汇报本节点的资源使用情况和各个容器的运行状态,并且接收并处理应用程序管理器的启动停止命令。

  • 容器

    Container,对资源的抽象,封装了内存、CPU、磁盘等资源。当应用程序向资源管理器申请资源时,资源管理器就是返回一个容器,得到容器资源的任务只能使用该容器。

    YARN工作流程

    1. 客户端向资源管理器提交一个作业,作业包括应用程序管理器程序,启动应用程序管理器和用户程序(如mapreduce)。
    2. 资源管理器会为该应用程序分配一个资源容器,它首先会随机跟节点管理器通信,要求它在这个容器中启动应用程序管理器。
    3. 应用程序管理器启动之后,首先向资源管理器注册,这样用户可以直接通过资源管理器产看应用程序的运行状态,然后它将为各个任务申请资源并监控他们的状态,直到任务执行结束。,它会以轮询的方式,通过RPC协议向资源管理器申请和领取资源,一旦申请到资源,立马与节点管理器通信,通知它开始启动运行任务。
    4. 各个任务通过RPC向应用管理器汇报自己的运行状态和进度,一旦任务失败应用管理器就会重启该任务,重新申请资源。应用程序运行完成后,应用程序管理器就会像资源管理器注销资源关闭任务。
  • YARN的容错性

    YARN负责集群的资源管理器,重要性不亚于HDFS的namdnode。

    • 资源管理器单点故障

      与hdfs一样采取HA架构,主节点故障切换备用节点继续工作。

    • 节点管理器任务的容错

      应用程序管理器决定如何处理失败任务。

    • 应用程序管理器的容错

      由资源管理器负责重启,资源管理器会保存已经运行的任务,重启后不需要重新运行。

    YARN HA

    与hdfs的HA架构一样,设置两个资源管理器,同时只有一个处于Active状态对外提供服务,另外一个Standby等待故障切换。

    1. 实现主备节点间故障转移的对比

      YARN HA让主备节点控制器作为资源管理器的一部分,而NameNode HA的主备节点控制器是一个单独运行的进程。这样YARN HA 可以更快的完成主备故障切换。

    2. 实现主备节点间数据共享的对比

      正常情况下,YARN备节点不会主动同步主节点数据,而是在主备切换后,才从共享存储系统读取所需数据,因为YARN资源管理器保存的信息非常少,大部分信息都是可以重构,原有的资源信息很快就变成过去式,所以没有同步的必要。

你可能感兴趣的:(hadoop,yarn)