第四章 YARN
YARN 简介
是针对MapReduce1 的缺点开发的
1 | 设计 YARN 的最初目的是改善 MapReduce 的实现。后来 YARN 演变为一种资源调度框架, |
MapReduce1工作流程
MapReduce1 当任务过多时,不利于系统扩展;难以支持其他的框架;JobTracker单点故障
1 | MapReduce 1 的具体工作过程可描述如下。 |
MapReduce2
YARN 进程
ResourceManager
NodeManager
什么是YARN
YARN :Yet Another Resource Negotiator,另一种资源协调者。
最初是为了改善MapReduce的实现,但也是一种资源调度框架,具有通用性,可为上层应用提供统一的资源管理和调度,可以支持其他的分布式计算模式(如Spark)。
它的引入为集群在利用率、资`源统一管理和数据共享等方面带来了巨大好处。
YARN架构
容器 Container
Container是YARN中资源的抽象,它封装了某个节点上的多维度资源。YARN 会为每个任务分配 Container。
YARN中资源包括内存、CPU、磁盘输入输出等等
ResourceManager
负责资源分配和管理
主要由调度器和应用程序管理器两个组件组成
- 调度器(Scheduler):
调度器根据资源情况为应用程序分配封装在Container中的资源。 - 应用程序管理器(Application Manager):
应用程序管理器负责管理整个系统中所有应用程序
NodeManager
是每个节点上的资源和任务管理器
- 定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态;
- 接收并处理来自ApplicationManager的Container启动/停止等请求。
ApplicationMaster(主应用)
ApplicationMaster是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager 协同工作来运行和监控任务。
用户提交的每一个应用程序均包含一个ApplicationMaster。
主要功能包括:
1)、与ResourceManager调度器协商以获取抽象资源(Container);
2)、负责应用的监控,跟踪应用执行状态,重启失败任务等;
3)、与NodeManager协同工作完成Task的执行和监控。
YARN中应用运行机制(流程)
1 | (1)Client 向 ResourceManager 提交 YARN Application; |
YARN中任务进度监控
1 | YARN 中任务进度的监控与 MapReduce 1 中任务进度的监控相比有了很大的变化,由各任务 |
MapReduce1与YARN组成对比
1 | 可以看出,在 YARN 中,与 JobTracker 不同的是,ResourceManager 与 |
Yarn对MapReduce运行性能提升
主要特点: ResourceManager与Application Master分离
性能提升:可以扩展支持10,000个节点,100,000个任务
YARN调度器
FIFO Scheduler
最简单的调度器,任务先提交先执行
Capacity Scheduler
分成多个队列,每个队列占用一定资源,可以看作是FIFO Scheduler的多队列版本
每个队列可以限制资源使用量。但是,队列间的资源分配以使用量作排列依据,使得容量小的队列有竞争优势
注意:如果不限制某队列最大容量,则运行过程中,它可以占用全部资源。
Fair Scheduler
假设每个任务具有相同的优先级,平均分配系统的资源
单队列
多队列
三种调度器比较
世界上那些最容易的事情中,拖延时间最不费力。



