hadoop集群资源管理系统YARN以及YARN的运行原理

一.简介:

YARN (Yet Another Resource Negotiator)

1.  (官网解释)最基本的思想是纱线拆分功能的资源管理与作业调度/监控到单独的进程。具体设想是全球(ResourceManagerRM)和每应用程序(applicationmasterAM)。应用程序是一个单一的DAG或作业的作业。

2.在hadoop 1.x中jobtracker负责作业的调度(将任务与tasktracker匹配)和任务进度监控(跟踪任务,重启失败或延迟的任务;记录任务流水,如维护计数器的计数)而到了hadoop2.x中 出现了yarn这一独立的服务来专门管理这些,大体结构如下

hadoop集群资源管理系统YARN以及YARN的运行原理

二.yarn的架构

当我们在搭建好的集群中运行hdfs和yarn的时候jps查看进程发现(见下图)

hadoop集群资源管理系统YARN以及YARN的运行原理

我们发现 其中ResourceManager运行在主节点master上而nodemanager运行在从节点datanode上,所以我们可以理解为它的设计思想跟namenode与datanode的关系有些相似 可以理解为从*到地方之间的关系,*管理着地方,地方想要做什么要跟*去申请。下边我来具体介绍一下这些进程

1.ResourceManager:
    资源管理器,是yarn的主要进程,主要负责资源的管理、分配以及资源的调度。
    主要有以下组成:
    1)applicationmanager:主要进行资源的管理和分配,主要和applicationMaster进行交互。
    2)scheduler:资源调度器,主要负责application资源调度。
        1)FIFO调度:先进先出,以队列的方式进行APP的排序。
        2)容量调度:将资源分配为多个子队列,进行资源调度。现有版本,默认采用容量调度机制。
        3)公平调度:公平调度资源
2.NodeManager:
    节点管理器,主要负责具体资源的分配,和Resourcemanager进行交互,汇报资源状态等。
    创建Container容器。一个nodemanager节点会分配多个Container,一个Container不会跨多个nodemanager。
    1秒钟和RM进行交互一次。
3.Container:
    容器。用于指定一个资源的分配。
    理念:管理相关的服务器资源,主要包括:CPU,内存(现有版本)
          期望:CPU,内存,磁盘,IO,带宽。
4.applicationMaster:
    应用管理者。提交一个job,只有一个AM,主要负责监控当前作业运行状态,和RM交互,汇报作业情况以及资源的使用情况。
三.运行机制

见下图:

hadoop集群资源管理系统YARN以及YARN的运行原理

1.用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等

2.ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。

3.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源

4.一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态

5.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己

四.MapReduce1(hadoop1.x的jobtracker)与yarn的比较

hadoop集群资源管理系统YARN以及YARN的运行原理

与MapReduce1相比 YARN可以在更大规模的集群上运行。当节点数达到4000,任务数达到40000时 MapReduce会遇到可拓展瓶颈,瓶颈源自于jobtracker必须同时管理作业和任务这样一个事实,YARN利用其资源管理器和application master分离的架构优点克服了这个局限性,可以拓展到面向将近10000个节点和100000个任务(此段话是hadoop权威指南摘要)