Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
Yarn的基本架构
Yarn主要由:ResourceManager、NodeManger、ApplicationMaster和Container等组件构成。
Yarn工作机制

- 客户端提交作业到APPManager,申请jobID,这个ID是唯一的
- ResourceManager返回一个作业ID,并将路径发送给客户端
- 客户端将运行所需要的资源(jar包、配置文件、分片信息等)向指定HDFS路径上传
- 上传成功后,向ResourceManager发送请求:执行作业
- APPManager将请求转发给调度器
- 调度器将任务放置队列中,当执行到请求的时候,则开始让AppManager分配容器,调用节点资源管理器开辟资源池,启动AppMaster
- 命令节点管理器开辟容器启动AppMaster
- AppMaster开始接收HDFS的共享文件,然后根据切片信息,创建map任务、reduce任务
- 向调度器请求资源,开辟map、reduce任务
- 返回执行信息
- 通知NodeManager启动任务
- NodeManager启动任务
- map、reduce任务接收共享文件数据
- 任务完成之后AppMaster通知AppManager释放资源
资源调度器
Hadoop作业调度器主要有三种:FIFO、Capacity Schedule 和 Fair Schedule。Hadoop2.7.2默认的资源调度器是Capacity Schedule。具体设置: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>
FIFO(先进先出调度器)
Capacity Scheduler(容量调度器)
Fair Scheduler(公平调度器)
来源:oschina
链接:https://my.oschina.net/u/4427158/blog/3161112