Yarn详解

Yarn概述

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce运算程序则相当于运行于操作系统之上的应用程序

Yarn工作机制

1.Yarn运行机制,如图24所示

2.工作机制详解

(1)Mr程序提交到客户端所在的节点。

(2)Yarnrunner向Resourcemanager申请一个Application。

(3)rm该应用程序的资源路径返回给yarnrunner

(4)该程序将运行所需资源提交到HDFS上

(5)程序资源提交完毕后,申请运行mrAppMaster

(6)RM将用户的请求初始化成一个task

(7)其中一个NodeManager领取到task任务。

(8)该NodeManager创建容器Container,并产生MRAppmaster

(9)Container从HDFS上拷贝资源到本地

(10)MRAppmasterRM 申请运行maptask资源。

(11)RM运行maptask任务分配给另外两个NodeManager另两个NodeManager分别领取任务创建容器。

(12)MR向两个接收到任务的NodeManager发送程序启动脚本这两个NodeManager分别启动maptaskmaptask数据分区排序。

(13)MrAppMaster等待所有maptask运行完毕后,向RM申请容器,运行reduce task

(14)reduce task向maptask获取相应分区的数据。

(15)程序运行完毕后,MR会向RM申请注销自己。

资源调度器

目前,Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.7.2默认的资源调度器是Capacity Scheduler

具体设置详见:yarn-default.xml文件

<property>

    <description>The class to use as the resource scheduler.</description>

    <name>yarn.resourcemanager.scheduler.class</name>

<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>

</property>

1.先进先出调度器(FIFO),如图所示

2.容量调度器(Capacity Scheduler),如图所示

3.公平调度器(Fair Scheduler),如图所示