Yarn资源调度理解

一、Yarn介绍


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

ResourceManager 和 NodeManager(NM)组成了基本的数据计算框架。ResourceManager 协调集群的资源利用, 任何 Client 或者运行着的 applicatitonMaster 想要运行 Job 或者 Task 都得向 RM 申请一定的资 源。ApplicatonMaster 是一个框架特殊的库,对于 MapReduce 框架而言有它自己的 AM 实现, 用户也可以实现自己的 AM,在运行的时候,AM 会与 NM 一起来启动和监视 Tasks。

二、Yarn的重要概念

(1)ResourceManager

ResourceManager是基于应用程序对集群资源的需求进行调度的Yarn集群主控节点,负责协调和管理整个集群(所有NodeManager)的资源,响应用户提交的不同类型应用的解析,调度,监控等工作。ResourceManager会为每一个Application一个MRAPPMaster,并且MRAPPMaster分散在各个NodeManager节点

它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationManager)

ResourceManager的主要职责:

1、处理客户端的请求

2、启动或者监控MRAPPMater

3、资源的分配与调度

4、监控NodeManager

2)NodeManager

NodeManager是Yarn集群中真正的资源提供者,是真正执行应用程序的容器的提供者,监控应用程序的资源使用情况,并通过心跳机制向ResourceManager进行汇报以更新自己的健康状态。同时其也会监督Container的生命周期管理,监控每个Container的资源使用情况,追踪节点健康状况。

NodeManager的职责:

1、管理单个几点的资源

2、处理来自ResourceManager的命令

3、处理来自MRAppMaster的命令

(3)MRAppAMaster

1、MRAppMaster对应一个应用程序,向ResourceManager申请执行任务的资源容器,运行任务,监控整个任务的执行,跟踪整个任务的状态,处理任务失败以及异常情况

(4)Container

Container容器是一个抽象出来的逻辑资源单位,容器是由ResourceManager Scheduler服务动态分配的资源构成,它包括该节点上的一定量CPU,内存,磁盘,网络等信息,MapReduce程序的所有Task都是在一个容器里执行完成的,容器的大小可以动态调整。

(5)ApplicationsManager

应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交,与调度器协商启动AM、监控AM运行状态并在失败的时候重启。

(6)Scheduler

调度器根据应用程序的资源需求进行资源分配,不参与应用程序具体的执行和监控等工作,资源分配的单位是Container,调度器是一个可插拔的组件,用户可以根据自己的需求实现自己的调度器。(FIFO调度器,公平调度器,容量调度器)

三、Yarn作业执行流程

Yarn资源调度理解_第1张图片

 1.客户端向Yarn中提交应用程序,其中包括MRAppMaster程序,启动MRAppMaster的命令,用户程序等。

 2.ResourceManager为该程序分配一个Container,并与对应的NodeManager通讯,要求它这个Container中启动应用程序MRAppMaster

3.MRAppMaster向RM注册自己,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后将为各个任务申请资源,并监控它的运行状态,直到运行结束,重复4到7的步骤

4.MRAppMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源

5.一旦MRAppMater申请到资源后,便于对应的NodeManager通讯,要求它启动任务

6.NodeManager为任务设置好环境后,将任务启动命令写到一个脚本中,并且通过运行该脚本启动任务

7.各个任务通过RPC协议向MRAppMaster汇报自己的状态和进度,以让MRAppMaster随时掌握各个任务的运行状态,从而可以

在任务失败的时候重新启动任务

8、应用程序运行完成后,MRAppMaster向ResourceManager注销并关闭自己。

你可能感兴趣的:(Yarn资源调度理解)