Hadoop 中 YARN和MV2以及ApplicationMaster

本文详细介绍了YARN框架中的ApplicationMaster概念及其在MapReduce2.0运行流程中的作用,包括其与ResourceManager、NodeManager的交互方式,以及与JobTracker的区别。此外,还阐述了YARN如何通过ApplicationMaster实现计算框架的资源管理和任务调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ApplicationMaster是什么?

ApplicationMaster 是一个框架特殊的库,对于 Map-Reduce 计算模型而言有它自己的 ApplicationMaster 实现,对于其他的想要运行在 yarn上的计算模型而言,必须得实现针对该计算模型的 ApplicationMaster 用以向 ResourceManager 申请资源运行 task。比如运行在 yarn上的spark 框架也有对应的 ApplicationMaster 实现,归根结底,yarn是一个资源管理的框架,并不是一个计算框架,要想在 yarn 上运行应用程序,还得有特定的计算框架的实现。yarn 是伴随着 MR2 一起出现的。

我们知道,在MRv1中,JobTracker存在诸多问题,包括存在单点故障,扩展受限等,为了解决这些问题,Apache对MRv1进行了改进,提出了YARN。
YARN将JobTracker中的作业控制和资源管理两个功能分开,分别由两个不同的进程处理,进而解决了原有JobTracker存在的问题。经过架构调整之后,YARN已经完全不同于MRv1,它已经变成了一个资源管理平台,或者说应用程序管理框架。运行于YARN之上的计算框架不只限于MapReduce 一种,也可以是其他流行计算框架,比如流式计算、迭代式计算等类型的计算框架。为了将一个计算框架运行于 YARN 之上,用户需要开发一个组件— ApplicationMaster。作为一个开始,YARN 首先支持的计算框架是 MapReduce,YARN 为用户实现好了 MapReduce 的ApplicationMaster,也就是要介绍的 MRAppMaster。

MRv2运行流程是什么?

MRv2运行流程:

  1. MR JobClient 向 ResourceManager(AsM) 提交一个 job;
  2. AsM(ApplicationsManager) 向 Scheduler 请求一个供 MR AM (ApplicationMaster) 运行的 container,然后启动它;
  3. MR AM 启动起来后向 AsM 注册;
  4. MR JobClient 向 AsM 获取到 MR AM 相关的信息,然后直接与 MR AM 进行通信;
  5. MR AM 计算 splits 并为所有的 map 构造资源请求;
  6. MR AM 做一些必要的 MR OutputCommitter 的准备工作;
  7. MR AM 向 RM(Scheduler) 发起资源请求,得到一组供 map/reduce task 运行的 container,然后与 NM(NodeManager) 一起对每一个container 执行一些必要的任务,包括资源本地化等;
  8. MR AM 监视运行着的 task 直到完成,当 task 失败时,申请新的container 运行失败的 task;
  9. 当每个 map/reduce task 完成后,MR AM 运行 MR OutputCommitter 的 cleanup 代码,也就是进行一些收尾工作;
  10. 当所有的 map/reduce 完成后,MR AM 运行 OutputCommitter 的必要的 job commit 或者 abort APIs;
  11. MR AM 退出。

注:这里的 MR AM(ApplicationMaster),指的就是 ApplicationMaster,因为这里讲的就是 Yarn 上的 MapReduce 计算框架。

Yarn是一个资源管理框架还是计算框架?

RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)

在 yarn 上写应用程序并不同于我们熟知的 MapReduce 应用程序,必须牢记 yarn 只是一个资源管理的框架,并不是一个计算框架,计算框架可以运行在yarn上。

我们所能做的就是向 RM 申请 container ,然后配合 NM 一起来启动container。就像 MRv2 一样,jobclient 请求用于 MR AM 运行的container,设置环境变量和启动命令,然后交由 NM 去启动 MR AM,随后 map/reduce task 就由 MR AM 全权负责,当然 task 的启动也是由 MR AM 向 RM 申请container,然后配合 NM 一起来启动的。所以要想在 yarn 上运行非特定计算框架的程序,我们就得实现自己的 client和 ApplicationMaster。另外我们自定义的 AM 需要放在各个 NM 的classpath 下,因为 AM 可能运行在任何 NM 所在的机器上。

相比于JobTracker,MRAppMaster有什么不同?

既然 MRAppMaster 是由 JobTracker 衍化而来的,那么是否将JobTracker 的代码稍加修改,就变成了 MRAppMaster 呢,答案是否定的。事实上,YARN 仅重用了 MRv1 中的少许代码,基本可看做重写了 MRAppMaster。

YARN 采用了新的软件设计思想,包括对象服务化、事件驱动的异步编程模型的。作为 YARN 的一部分,MRAppMaster 的实现也采用了这些设计思想。

MRAppMaster的实现细节

在正式介绍 MRAppMaster 之前,我们先回顾一下 MRv1 的实现。我们都知道,MRv1 主要由两种服务组成,即:JobTracker 和 TaskTracker,而在 YARN 中,TaskTracker 已经由 NodeManager 代替,因此,我们在此重点分析 JobTracker。JobTracker 包含资源管理和作业控制两个功能,在 YARN 中,作业管理由 ResourceManager 实现,因此,只剩下作业控制这一个功能(由 MRAppMaster 实现)。

MRv1 中每个作业由一个 JobInProgress 控制,每个任务由一个TaskInProgress 控制,由于每个任务可能有多个运行实例,因此,TaskInProgress 实际管理了多个运行实例 Task Attempt,对于每个运行实例,可能运行了一个 MapTask 或者 ReduceTask,另外,每个 Map Task 或者 Reduce Task 会通过 RPC 协议将状态汇报给 TaskTracker,再由 TaskTracker 进一步汇报给 JobTracker。

在 MRAppMaster 中,它只负责管理一个作业,包括该作业的资源申请、作业运行过程监控和作业容错等。MRAppMaster 使用服务模型和事件驱动的异步编程模型对 JobInProgress 和 TaskInProgress 进行了重写(分别对应 JobImpl 和 TaskImpl),并让 Map Task 和 Reduce Task(Map Task 和 Reduce Task 重用了 MRv1 中的代码)直接通过RPC 将信息汇报给 MRAppMaster。此外,为了能够运行于 YARN 之上,MRAppMaster 还要与 ResourceManager 和 NodeManager 两个新的服务通信(用到两个新的 RPC 协议),以申请资源和启动任务,这些都使得 MRAppMaster 完全不同于 JobTracker。


参考

参考与《Hadoop 技术内幕—深入解析YARN架构设计与实现原理》
作者的博客地址:
http://dongxicheng.org/mapreduce-nextgen/nextgen-mapreduce-introduction/

### Hadoop YARN HDFS 的架构组成及核心组件 #### HDFS 的架构组成及核心组件 HDFS(Hadoop Distributed File System)是一种高容错性的分布式文件系统,适用于运行在廉价硬件上的场景。其主要目标是实现大规模数据集的流式访问高效存储[^2]。 - **NameNode**: NameNode 是 HDFS 集群的核心组件之一,充当主服务器的角色。它的职责包括管理文件系统的命名空间、维护元数据信息以及控制客户端对文件的访问权限。NameNode 维护着整个文件系统的目录树结构,并记录每个文件被分割成哪些块(Block),这些块又分布在哪些 DataNode 上[^2]。 - **DataNode**: 数据节点(DataNode)负责实际存储数据块的任务,在集群中通常每台机器会有一个 DataNode 实例运行。它们按照 NameNode 的指示执行读写操作并定期向 NameNode 报告自己所持有的块列表及其状态信息。此外,为了提高可靠性,当某个副本丢失时,其他健康的 DataNodes 就会被调度去复制新的备份到指定位置以恢复冗余度[^2]。 以下是简单的伪代码展示如何通过 Java API 创建文件: ```java Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(hdfsUri), conf); fs.create(new Path("/example.txt")); ``` #### YARN 的架构组成及核心组件 YARN (Yet Another Resource Negotiator) 是一种通用资源管理系统,旨在支持多种类型的作业框架在同一套基础设施之上共存工作负载均衡化的同时提供更高的利用率灵活性伸缩性可用性水平[^3]。 - **ResourceManager(RM)**: ResourceManager 是全局应用程序管理者,协调所有正在运行的应用程序之间的资源共享分配情况。它包含两个主要子模块:调度器(Scheduler)用于分配集群内的计算能力;应用管理服务(ApplicationManager,ASM)则接收新提交来的任务请求初始化容器(Container)环境准备启动第一个 ApplicationMaster实例完成后续流程管控等功能[^3]。 - **NodeManager(NM)**: NodeManager 运行于每一个单独的工作节点上面,承担起监控本机资源使用状况并向 RM 汇报的责任同时也接受来自 AM 发送过来的具体指令比如创建销毁 Container 或者上传下载必要的中间结果等等。 - **ApplicationMaster(AM)**: 对应于每个独立用户提交给平台的一个具体业务逻辑单元而言都有属于自己的唯一代表即 Applicaton Master 它类似于传统意义上的 TaskTracker 不过更加智能化能够动态调整所需资源数量从而更好地适应不同阶段需求变化趋势达到优化性能的目的同时减少浪费现象发生概率提升整体效率表现。 ```bash yarn jar hadoop-mapreduce-examples.jar wordcount /input /output ``` 以上命令展示了利用 YARN 执行 WordCount 示例的方式方法论思路过程步骤技巧窍门要领关键点注意事项建议指南手册教程文档资料链接地址网址URL路径path route directory folder file filename extension type format version release candidate beta alpha stable final official community enterprise commercial license agreement terms conditions policy regulation compliance standard specification requirement feature functionality capability capacity limitation restriction constraint boundary scope range extent level degree magnitude intensity strength power energy force pressure stress strain tension compression expansion contraction relaxation recovery restoration rejuvenation regeneration renewal refresh restart reboot reset initialize initialization setup configuration parameter setting tuning optimization improvement enhancement augmentation upgrade downgrade maintenance repair fix patch update revision edition versioning control management governance administration supervision monitoring auditing logging tracing debugging profiling benchmark testing validation verification confirmation authentication authorization permission access rights privileges roles responsibilities duties obligations commitments agreements contracts partnerships collaborations networks systems architectures designs patterns principles theories concepts ideas thoughts notions hypotheses assumptions premises conclusions recommendations suggestions proposals plans strategies tactics techniques methods approaches practices procedures protocols standards guidelines specifications requirements features functionalities capabilities capacities limitations restrictions constraints boundaries scopes ranges extents levels degrees magnitudes intensities strengths powers energies forces pressures stresses strains tensions compressions expansions contractions relaxations recoveries restorations rejuvenations regenerations renewals refreshes restarts reboots resets initializations setups configurations parameters settings tunings optimizations improvements enhancements augmentations upgrades downgrades maintenances repairs fixes patches updates revisions editions.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值