YARN结构分析与工作流程

YARN Architecture

Link: http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/YARN.html

YARN结构图。图中有两个Application,因此有两个ApplicationMaster。4个节点,其中一个节点运行ResourceManager,另外3个节点运行NodeManager。

Yarn的基本思想就是让资源管理器作业调度/监视器分别成为守护进程。RM和NM构成了数据计算框架。

1、ResourceManager属于集群级别,整个集群只有一个RM,RM负责集群中所有应用的资源管理,当多个作业同时提交时,RM在多个竞争的作业之间权衡优先级并进行资源的仲裁,当资源分配完毕后,RM就不再关心每个应用内部的资源分配,也不关注每个应用的状态。因此RM对于每个应用来说,只进行一次资源分配,大大减轻了RM的负荷,使其扩展性大大增强。

 

RM主要包含两个部分:

(1)Yarn Scheduler。Scheduler根据不同应用对资源的需求情况(Container, memory, cpu, disk, network etc),为应用分配资源。它并不监控应用的状态,不会重启失败的tasks。它基于应用程序的资源申请来执行资源调度,目前能够调度的资源包括CPU核数和内存。支持的调度器包括:FIFO调度器、Capacity调度器、自适应调度器、自学习调度器、动态优先级调度器等。

The Scheduler has a pluggable policy which is responsible for partitioning the cluster resources among the various queues, applications etc. The current schedulers such as the CapacityScheduler and the FairScheduler would be some examples of plug-ins

(2)ApplicationManager。ApplicationManager负责管理已经提交的应用的集合。在应用提交后,首先检查ApplicationMaster资源请求的合法性,然后确定没有其他已经提交的应用使用了相同的ID。它还负责记录和管理已经结束的应用。

ApplicationManager负责:

①接收提交的作业

②negotiating the first container for executing the application specific ApplicationMaster

③restarting the ApplicationMaster container on failure

 

2、NodeManager属于节点(机器)级别,每个机器有一个NM,它负责保持与RM的同步,跟踪节点的健康状况,管理各个COntainer的生命周期,监控每个Container的资源使用情况,管理分布式缓存,管理各个Container生成的日志,提供不同Yarn应用可能需要的辅助服务。其中对于Container的管理是NodeManager的核心功能

每个机器的NM的行为:

(1)       对它的containers负责,启动并监控containers的资源使用情况(cpu, memory, disk, network)。每个container在给定的资源下执行针对于Application的进程(可以是Unix Process或是Linux cgroup)

(2)       向RM发送报告

 

3、ApplicationMaster属于应用级别,每个应用对应一个AM,不同的计算矿建的AM的实现也是不同的。它负责向RM申请资源,在对应的NodeManager上启动Container来执行任务,并在应用中不断监控这些Container的状态。

每个应用的AM的行为:

(1)       向RM请求资源(与RM的Scheduler协商)

(2)       与containers协作完成任务的执行和监视

 

 

 

posted @ 2018-04-03 22:30  sodawoods  阅读(432)  评论(0编辑  收藏  举报