1. YARN概述

1.1 YARN在Hadoop生态圈中的定位

  • Hadoop 1.x,MR既要负责分布式计算,还需要负责计算过程中的资管管理和任务调度
  • Hadoop2.x,更新了Hadoop的架构,使用YARN(Yet Another Resource Negotiator,另一种资源判决者/调度者)进行专门的资源组管理和任务调度,而MR通过调用YRN的API实现分布式计算,减轻了MR的压力
  • 同时,YARN还具备足够的通用性,除了能支持MR之外,它还能支持其他的分布式计算模式,如Spark、Tez等
  • 可以说,YARN是一种通用的资源管理和任务调度框架
  • 大部分时候,用户并不是直接使用YARN请求和使用集群资源的API,而是调用构建在YARN之上的分布式计算框架的API实现分布式计算。
  • YARN很好地向用户隐藏了资源管理的细节,书中将HDF、HBase称为集群中的存储层,YARN称为是集群中的计算层。而像MR、Spark这样的分布式计算框架,是集群中的应用层

1.2 YARN的两种守护进程及application master

守护进程1:

  • Resource Manager,一个全局的资源管理器,负责管理和分配整个集群中的计算资源

守护进程2:

  • Node Manager,运行在所有的节点上,是YARN在每个节点上的代理,管理集群中的单个计算节点,负责启动和监控container
  • container是有资源限制的(如内存和CPU)、用于执行特定应用程序进程

应用程序中Application master

  • 应用程序级别(application-specified)的进程,负责管理运行在YARN上的应用程序

1.3 YARN应用的运行机制

  • 书中给出了一幅很简单的图,用于描述YARN应用的运行机制
  • 相对详细的图,如果需要了解更多的内部机制可以参考:yarn详解

YARN应用的运行流程如下:

  1. client向YARN的Resource Manager提交应用程序,包括启动Application master的必需信息,如Application master程序、启动命令和用户程序等。

  2. Resource manager为该应用程序分配第一个container,并与container所在的Node manager通信,要求Node manager启动container并在container中运行Application master

  3. Application master首先向Resource manager注册自己,并与Resource maneger保持心跳。 —— 用户可以通过Resource maneger获取应用程序的运行状态。

  4. Application master采用轮询的方式、通过RPC向Resource manager申请更多的container

  5. 申请到container后,Application master会与container所在的Node manager建立通信,要求Node manager启动container,从而运行具体的应用程序任务

  6. 各个任务会通过RPC向Application master上报自己的进度和运行状态,这样Application master便可以对任务进行监控和管理

    • 当任务运行失败时,Application master可以向Resource manager申请新的container,以重新运行该任务
    • client也可以通过RPC直接访问 Application master,获取任务的运行状态
  7. 应用程序运行完成后,Application masterResource manager注销并关闭自己。这时,Application master分配到的container,可以被Resource manager回收

1.4 通过运行机制,总结三种角色的作用

Resource maneger