Fork me on GitHub

MapReduce on Yarn机制总结

目录

  • 背景
  • 第一部分 常用快捷键
  • 参考文献及资料

背景

Yarn作为资源统一管理平台是从第一代MapReduceMRv1)演进而来。在最初的MRv1架构中,主要构成有三部分:

  • 编程模型,MapReduce API
  • 资源管理和作业控制模块,JobTracker(作业跟踪器)、TaskTracker(任务跟踪器);
  • 数据处理引擎,MapTaskReduceTask

其中JobTracker单一服务运行在主节点,负责调度集群所有的任务,并监控任务的状态。每个工作节点均运行一个TaskTracker负责执行JobTracker分发的任务。架构上不足有:

  • JobTracker服务单点故障风险;
  • JobTracker服务太重,承担了集群的资源管理和任务调度;

JobTracker承担了集中式调度器角色,将集群中资源分配、任务分配和监控一个人扛,在高并发场景下容易出现负载过重,产生单点风险。

另外TaskTracker将资源强制划分为Map task slotReduce task slot,并且map taskreduce task只能使用对应的solts资源。当任务的mapreduce任务数量发生倾斜的时候,就会出现计算资源使用低效。

集群中solts资源由两个参数决定:(mapred.tasktracker.map.tasks.maximummapred.tasktracker.reduce.tasks.maximum)。

YahooHortonworks于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 SchedulerCapacity Scheduler等)。

  • ApplicationMaster,负责应用任务内部的调度和监控,承担框架调度器角色。

    用户提交的每个应用都会对应一个ApplicationMaster,主要负责监控应用,任务容错(重启失败的task)等。它同时会和ResourceManagerNodeManager有交互,向ResourceManager申请资源,请求NodeManager启动或停止task。

YarnMRv2)架构上已经不单单支持运行MapReduce任务,架构解耦后可以支持TezSparkStormFlink等多种计算框架的运行。本文将详细阐述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

0%