目录
- 背景
- 第一部分 常用快捷键
- 参考文献及资料
背景
Yarn作为资源统一管理平台是从第一代MapReduce
(MRv1
)演进而来。在最初的MRv1
架构中,主要构成有三部分:
- 编程模型,
MapReduce API
; - 资源管理和作业控制模块,
JobTracker
(作业跟踪器)、TaskTracker
(任务跟踪器); - 数据处理引擎,
MapTask
、ReduceTask
;
其中JobTracker
单一服务运行在主节点,负责调度集群所有的任务,并监控任务的状态。每个工作节点均运行一个TaskTracker
负责执行JobTracker
分发的任务。架构上不足有:
JobTracker
服务单点故障风险;JobTracker
服务太重,承担了集群的资源管理和任务调度;
JobTracker
承担了集中式调度器角色,将集群中资源分配、任务分配和监控一个人扛,在高并发场景下容易出现负载过重,产生单点风险。
另外TaskTracker
将资源强制划分为Map task slot
和Reduce task slot
,并且map task
和reduce task
只能使用对应的solts
资源。当任务的map
和reduce
任务数量发生倾斜的时候,就会出现计算资源使用低效。
集群中
solts
资源由两个参数决定:(mapred.tasktracker.map.tasks.maximum
、mapred.tasktracker.reduce.tasks.maximum
)。
Yahoo
和Hortonworks
于2012年在Hadoop 2.0
版中引入了YARN
,架构上将JobTracker
功能进行了拆分。将调度工作拆解为两层:中央调度器和计算框架调度器。中央调度器管理集群中所有资源的状态,它掌握整个集群的资源信息,按照一定的调度策略(如:FIFO、Fair、Capacity、Delay、Dominant Resource Fair等)将资源粗粒度地分配给计算框架调度器,各个框架收到资源后再根据作业特性细粒度地将资源分配给执行器执行具体的计算任务。双层调度架构大大减轻了中央调度器的负载,提升了集群并发性能和资源利用率。
新的架构就是Yahoo发布的Yarn架构(Yet Another Resource Negotiator)。原架构中的JobTarcker
被拆解为:
ResourceManger
,集群管理器。负责整个集群的资源管理和调度,承担中央调度器角色。ResourceManager
有两个组件构成:应用程序管理器(
Application Manager
简称ASM
)。主要负责:1.管理监控各个系统的应用,包括启动ApplicaitonMaster
,监控ApplicaitonMaster
运行状态; 2.跟踪分配给ApplicationMaster
的进度和状态。调度器(
Scheduler
)。调度器根据资源容量、队列等限制条件(如队列资源和队列任务数量限制),将集群资源分配给正在运行的应用程序。即分配资源容器(Resource Container
)给ApplicaitonMaster
,分配单位Resource Container
将CPU和内存资源封装。调度器是一个可配置可插拔的组件,用户可以自己设计新的调度器,Yarn提供多个可选项(Fair Scheduler
和Capacity Scheduler
等)。ApplicationMaster
,负责应用任务内部的调度和监控,承担框架调度器角色。用户提交的每个应用都会对应一个
ApplicationMaster
,主要负责监控应用,任务容错(重启失败的task)等。它同时会和ResourceManager
和NodeManager
有交互,向ResourceManager
申请资源,请求NodeManager
启动或停止task。
Yarn
(MRv2
)架构上已经不单单支持运行MapReduce
任务,架构解耦后可以支持Tez
、Spark
、Storm
、Flink
等多种计算框架的运行。本文将详细阐述MapReduce
任务在新架构Yarn
上运行细节。
第一部分 角色说明
MapReduce on Yarn
运行模式下,主要涉及下面的角色:
ResourceMange
,中央调度器角色;NodeManagers
,节点管理器,负责管理Container
;MapReduce ApplicationManager
,框架调度器角色。负责协调运行MapReduce
任务。
整个调度过程如下:
第二部分 任务提交
第三部分 任务初始化
第四部分 任务分配
第五部分 任务执行
第六部分 任务监控
第七部分 任务完成
第八部分 总结
参考文献及资料
1、Hadoop 新 MapReduce 框架 Yarn 详解,链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/
2、Hadoop: Writing YARN Applications,链接:https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html
3、MapReduce Tutorial,链接:https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html