MRAppMaster是MapReduce的ApplicationMaster实现,它使得MapReduce计算框架可以运行于YARN之上。在YARN中,MRAppMaster负责管理MapReduce作业的生命周期,包括创建MapReduce作业,向ResourceManager申请资源,与NodeManage通信要求其启动Container,监控作业的运行状态,当任务失败时重新启动任务等。
YARN使用了基于事件驱动的异步编程模型,它通过事件将各个组件联系起来,并由一个中央事件调度器统一将各种事件分配给对应的事件处理器。在YARN中,每种组件是一种事件处理器,当MRAppMaster启动时,它们会以服务的形式注册到MRAppMaster的中央事件调度器上,并告诉调度器它们处理的事件类型,这样,当出现某一种事件时,MRAppMaster会查询<事件,事件处理器>表,并将该事件分配给对应的事件处理器。
接下来,我们分别介绍MRAppMaster各种组件/服务的功能。
ContainerAllocator
与ResourceManager通信,为作业申请资源。作业的每个任务资源需求可描述为四元组<Priority, hostname,capability,containers>,分别表示作业优先级、期望资源所在的host,资源量(当前仅支持内存),container数目。ContainerAllocator周期性通过RPC与ResourceManager通信,而ResourceManager会为之返回已经分配的container列表,完成的container列表等信息。
ClientService
ClientService是一个接口,由MRClientService实现。MRClientService实现了MRClientProtocol协议,客户端可通过该协议获取作业的执行状态(而不必通过ResourceManager)和制作业(比如杀死作业等)。
Job
表示一个MapReduce作业,与MRv1的JobInProgress功能一样,负责监控作业的运行状态。它维护了一个作业状态机,以实现异步控制各种作业操作。
Task
表示一个MapReduce作业中的某个任务,与MRv1中的TaskInProgress功能类似,负责监控一个任务的运行状态。它为花了一个任务状态机,以实现异步控制各种任务操作。
TaskAttempt
表示一个任务运行实例,同MRv1中的概念一样。
TaskCleaner
清理失败任务或者被杀死任务产生的结果,它维护了一个线程池,异步删除这些任务产生的结果。
Speculator
完成推测执行功能。当一个任务运行速度明显慢于其他任务时,Speculator会为该任务启动一个备份任务,让其同慢任务一同处理同一份数据,谁先计算完成则将谁的结果作为最终结果,另一个任务将被杀掉。该机制可有效防止“拖后腿”任务拖慢整个作业的执行进度。
ContainerLauncher
与NodeManager通信,要求其启动一个Container。当ResourceManager为作业分配资源后,ContainerLauncher会将资源信息封装成container,包括任务运行所需资源、任务运行命令、任务运行环境、任务依赖的外部文件等,然后与对应的节点通信,要求其启动container。
TaskAttemptListener
管理各个任务的心跳信息,如果一个任务一段时间内未汇报心跳,则认为它死掉了,会将其从系统中移除。同MRv1中的TaskTracker类似,它实现了TaskUmbilicalProtocol协议,任务会通过该协议汇报心跳,并询问是否能够提交最终结果。
JobHistoryEventHandler
对作业的各个事件记录日志,比如作业创建、作业开始运行、一个任务开始运行等,这些日志会被写到HDFS的某个目录下,这对于作业恢复非常有用。当MRAppMaster出现故障时,YARN会将其重新调度到另外一个节点上,为了避免重新计算,MRAppMaster首先会从HDFS上读取上次运行产生的运行日志,以恢复已经运行完成的任务,进而能够只运行尚未运行完成的任务。
Recovery
当一个MRAppMaster故障后,它将被调度到另外一个节点上重新运行,为了避免重新计算,MRAppMaster首先会从HDFS上读取上次运行产生的运行日志,并恢复作业运行状态。
在接下来几篇文章中,我将深入剖析以上这些组件的实现原理,主要包括以下系列文章:
1.YARN/MRv2 MRAppMaster深入剖析—作业生命周期
2.YARN/MRv2 MRAppMaster深入剖析—ContainerAllocator分析
3.YARN/MRv2 MRAppMaster深入剖析—ContainerLauncher分析
4.YARN/MRv2 MRAppMaster深入剖析—推测执行机制
5.YARN/MRv2 MRAppMaster深入剖析—作业恢复
分享到:
相关推荐
YARN(MRv2)搭建
yarn-v0.23.2.tar.gz 在安装ambari,源码编译的时候下载的文件有问题 手动下载 地址 https://github.com/yarnpkg/yarn/releases/download/v0.23.2/yarn-v0.23.2.tar.gz
Apache Flink是一个开源的分布式流处理框架,用于在...通过这些资源,用户可以深入了解Flink在分布式环境中的运行机制,掌握在YARN/K8S平台上部署Flink集群的最佳实践,并对Flink的核心概念和技术细节有更全面的认识。
《Hadoop技术内幕深入解析YARN架构设计与实现原理》这本书深入探讨了Hadoop生态系统中的核心组件YARN(Yet Another Resource Negotiator),它是Hadoop 2.x版本中的关键改进,旨在解决早期Hadoop MapReduce的资源...
Hadoop技术内幕深入解析YARN架构设计与实现原理
脚本使用:vim编辑脚本,按照自己的配置修改主机号,我的是hadoop1、2是NN;hadoop2、3是Spark Master;hadoop3还是RM;hadoop4、5、6是DN、NM、Spark Worker。编辑完成后在满足“前提”的任意一台主机运行均可。 ...
《Hadoop技术内幕深入解析YARN架构设计与实现原理》这本书由董西成撰写,是了解和掌握YARN(Yet Another Resource Negotiator)的核心参考资料。YARN是Hadoop生态系统中的关键组件,它作为数据处理框架的资源管理器...
《Hadoop技术内幕深入解析YARN架构设计与实现原理》.(董西成).PDF
《Hadoop技术内幕:深入解析YARN架构设计与实现原理》是一本专注于Hadoop生态系统中资源管理和调度核心组件——YARN(Yet Another Resource Negotiator)的专著。这本书全面介绍了YARN的架构、设计思想以及实际操作...
《Hadoop技术内幕:深入解析YARN架构设计与实现原理》这本书主要聚焦于Hadoop生态系统中的资源管理和调度系统——YARN(Yet Another Resource Negotiator)。YARN是Hadoop 2.x版本的重要创新,旨在解决Hadoop 1.x中...
2. **锁定文件**:Yarn 使用 `yarn.lock` 文件来确保所有开发者的环境中安装的包版本一致,解决了 npm 的版本漂移问题,提高了项目的可预测性和可重复性。 3. **并行下载**:Yarn 能够并行下载依赖包,显著提升了...
《董西城-Hadoop技术内幕-深入理解YARN架构设计与实现原理》是一部全面解析Hadoop生态系统中YARN(Yet Another Resource Negotiator)核心组件的专业著作。这本书详细介绍了YARN的架构、设计思想以及实现机制,旨在...
对于深入理解YARN的工作机制,对源码的剖析是非常必要的。这有助于开发者更准确地把握各个组件之间的交互细节,从而更好地利用YARN的功能。例如,通过跟踪`getNewApplication`和`submitApplication`方法的具体实现,...
《Hadoop技术内幕:深入Yarn架构设计与实现原理》这本书深入探讨了Hadoop生态系统中的核心组件YARN(Yet Another Resource Negotiator),它是Hadoop 2.x版本中的关键改进,旨在解决早期Hadoop MapReduce的资源管理...
《hadoop技术内幕:深入解析yarn架构设计与实现原理》是“hadoop技术内幕”系列的第3本书,前面两本分别对common、hdfs和mapreduce进行了深入分析和讲解,赢得了极好的口碑,hadoop领域几乎人手一册,本书则对yarn...
《Hadoop技术内幕:深入解析YARN架构设计与实现原理》是一本专注于Hadoop生态系统中的核心组件YARN(Yet Another Resource Negotiator)的专著。这本书以高清文字版的形式提供了对YARN的深入理解,旨在帮助读者掌握...
《Hadoop技术内幕深入解析YARN架构设计与实现原理》是由董西成撰写的一本专著,主要聚焦于Hadoop生态系统中的YARN(Yet Another Resource Negotiator)框架。这本书详细阐述了YARN的架构设计原则、核心组件以及其...