概要:

    yarn 是Hadoop2.x 运算引擎,她不仅仅可以运行MapReduce,还可以运行DAG(storm应用),hive,hbase,pig,spark等应用,yarn的设计目的是能够使各种应用运行在Hadoop之上,并且通过yarn从系统层面进行统一的管理,各个应用互不干扰,共享整个集群的资源.

     yarn的设计思想是把 资源管理,任务调度/监控独立出来,成为单独的守护进程,



yarn的组成

       ResourceManager: 包括 App Manager(应用管理器) 和  Resource Scheduler(调度器)

             AppManager: 应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动AppMaster、监控AppMaster运行状态并在失败时重新启动它等。

             ResourceScheduler :调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。

      NodeManager: 包括 AppMaster, Container,NodeManager是每个节点上的资源和任务管理器,一方面,它会定时地向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AppManager的Container启动/停止等各种请求。

            Container:是每个节点上的资源抽象,封装了每个节点上的资源

            AppMaster:是client提交的应用,每个应用对应一个 AppMaster,一个NodeManager上可以            有多个 AppMaster,AppMaster与对应的每个NodeManager节点上的Container进行通信监控任            务执行状态,并且汇报给ResourceManager的App Manager,

 



yarn 原理图

Grafana hadoop指标 hadoop yarn权威指南_Hadoop


                                    (这里盗用官网的一张图)

 



简述yarn运行原理

  1. 用户client 向ResourceManager 提交应用
  2. ResourceManager 为应用程序分配第一个container,并且和响应的NodeManager通信,请求在这这个container中为应用启动一个AppMaster
  3. 这个AppMaster首先向ResourceManager注册自己,为了让client能够通过AppManager监控到任务的状态,并且ResourceManager会为这个AppMaster分配 container,这些container在不同的NodeManger中,
  4. AppMaster申请到资源(container)之后,就会与响应的NodeManger进行通讯,并且启动任务
  5. 各个任务通过 RPC(远程调用协议)向AppMaster汇报自己的状态和进度,
  6. 应用运行完毕之后,AppMaster向AppManager汇报完毕,并且注销关闭自己.

(注意: mapreduce应用会在执行完毕之后关闭注销,但是 storm的topology任务除非手动kill否则永远执行)