一、简介

YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度。 
其核心出发点是为了分离资源管理与作业调度/监控,实现分离的做法是拥有一个全局的资源管理器(ResourceManager,RM),以及每个应用程序对应一个的应用管理器(ApplicationMaster,AM),应用程序由一个作业(Job)或者Job的有向无环图(DAG)组成。

YARN可以将多种计算框架(如离线处理MapReduce、在线处理的Storm、迭代式计算框架Spark、流式处理框架S4等) 部署到一个公共集群中,共享集群的资源。并提供如下功能:

  • 资源的统一管理和调度: 
    集群中所有节点的资源(内存、CPU、磁盘、网络等)抽象为Container。计算框架需要资源进行运算任务时需要向YARN申请Container, YARN按照特定的策略对资源进行调度进行Container的分配。
  • 资源隔离: 
    YARN使用了轻量级资源隔离机制Cgroups进行资源隔离以避免相互干扰,一旦Container使用的资源量超过事先定义的上限值,就将其杀死。

二、Yarn结构体系

 

hadoop yarn 流程 hadoop中yarn的作用_Hadoop

1 RM(ResourceManager) + N NM(NodeManager)

ResourceManager

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

           一个集群active状态的RM只有一个,负责整个集群的资源管理和调度

NodeManager

         1)定期向RM汇报本节点的资源使用请求和各个Container的运行状态
         2)接收并处理RM的container启停的各种命令
         3)单个节点的资源管理和任务管理

         整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况

ApplicationMaster

         1)数据切分
         2)为应用程序向RM申请资源(container),并分配给内部任务
         3)与NM通信以启停task, task是运行在container中的
         4)task的监控和容错

         每个应用/作业对应一个,负责应用程序的管理

Container

         对任务运行情况的描述:cpu、memory、环境变量

YARN执行流程

         1)用户向YARN提交作业
         2)RM为该作业分配第一个container(AM)
         3)RM会与对应的NM通信,要求NM在这个container上启动应用程序的AM
         4)  AM首先向RM注册,然后AM将为各个任务申请资源,并监控运行情况
         5)AM采用轮训的方式通过RPC协议向RM申请和领取资源
         6)AM申请到资源以后,便和相应的NM通信,要求NM启动任务
         7)NM启动我们作业对应的task