Hadoop Yarn工作原理工作流程

507 阅读3分钟

YARN的工作流程:

组件图:www.processon.com/view/link/6…

风轮-YARN工作流程.png

ResourceManager(RM)

RM是一个全局的资源管理器,负责整个系统的资源管理的分配和管理。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Application Manager,ASM)

  • 调度器 调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等) 将系统的资源分配给各个正在进行的应用程序。需要注意的是,该调度器是一个纯调度器,它不再从事任何与具体应用程序相关的工作。 这些都交给ApplicationMaster完成。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”表示。
ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM,主要功能:

  • RM调度器协商以获取资源(用container表示)
  • 将得到的任务进一步分配给内部的任务
  • 与NM通信以启动、停止任务
  • 监控所有任务的状态,并在任务失败的时候重新为任务申请资源并重启任务

当前YARN自带了两个AM实现,一个用于演示AM编写方法的实例程序,它可以申请一定数目的Container以并行运行一个Shell命令或者Shell脚本。 另一个是运行MapReduce应用程序的AM--- MRAppMaster

NodeManager

Nm是每个节点上的资源和任务管理器,一方面,他会定时的向RM汇报本节点上的资源使用情况和各个Container的运行状态。另一方面,它接受并处理来自AM的Container启动、停止请求

Container

Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当AM向RM申请资源时。RM为AM返回的资源是用Container表示的。YARN会表示为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。需要注意的是,Container不同于MRv1中的solt,它是一个动态资源划分单位,是根据应用程序动态生成的,YARN只支持CPU和内存两种资源,使用Cgroup进行隔离

YARN组成结构 (1).png

YARN的基本组成架构:

组件图:www.processon.com/view/link/6…

  • 1.用户向YARN中提交应用程序,其中包括ApplicationMaster程序,启动ApplicatioMaster的命令、用户程序
  • 2.ResourceManager为该应用程序分配第一个container,并对应的NodeManager通信,要求它在这个container中启动应用程序的ApplicationMaster
  • 3.ApplicationMaster首先向ResourceManager注册。
  • 4.ApplicationMaster采用轮询的方式通过RPC协议来向ResourceManager申请和领取资源
  • 5.一旦ApplicationMaster申请到资源后,便于对应的NodeManager通信
  • 6.NodeManager为任务设置好运行环境(包括环境变量,JAR包,二进制程序后,将任务启动命令写到一个脚本中)
  • 7.各个任务通过RPC协议向ApplicationMaster向ResourceManager汇报自己的进度