YARN 运行机制

本文深入解析了YARN(Yet Another Resource Negotiator)的架构组成及运行机制,包括ResourceManager、NodeManager、AppMaster和Container等核心组件的功能,以及作业提交、初始化和任务分配的具体流程。

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

1. YARN 整体架构

YARN 框架是 hadoop 的资源管理器,在介绍它的运行机制之前,我们先了解一下 YARN 中几个基础组件:Resource Manager、Node Manager、Container 以及 AppMaster。

ResourceManager:ResourceManager 在整个集群中就只有一个,其主要负责和客户端进行通信,为每个节点进行资源的调度以及分配,与 AppMaster 一起进行资源的分配。

NodeManager:YARN 中每个节点都存在一个 NodeManager,其主要对容器中的资源进行监控,处理来自 AppMaster 和 ResourceManager 的命令。

AppMaster: ApplicationMaster 管理在 YARN 中运行的每个应用程序实例。还负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源的使用(CPU、内存等的资源分配)。

Container:Container 是 YARN 中的资源抽象,它包含了很多纬度,如内存、CPU、网络等。Resource Manager 为 AppMaster 返回的资源便是用Container 表示的。YARN 会为每个任务分配一个 Container,且该任务只能使用该Container中描述的资源。

YARN 的架构图如下:

yarn整体架构

2. YARN 运行机制

了解了 YARN 的整体架构之后,我们再来看看 YARN 的运行机制,先用一张图表示 YARN 的运行机制,稍后再对其中的步骤一一进行说明:

YARN运行机制

我们在这样的场景下讨论 YARN 的运行机制:当写了一个 MapReduce 程序时,利用 hadoop jar 命令提交给 hadoop,在提交的 jar 包中会包含一个 main 方法,main 中的 job.waitforcompletion 代码会启动 RunJar 的进程,YARN 的资源调度是通过 RunJar 进程来完成。

2.1 作业提交

RunJar 进程会向集群提交 job,Resource Manager 会为本次 job 提供一个 jobID,还会返回本次作业提交的资源路径 staging-dir。接着,客户端将资源(包括Jar包, 配置文件,)提交到 HDFS 中,最后,通过调用 ResourceManager 的 submitApplication 方法来提交作业。

2.2 作业初始化

提交完成之后,ResourceManager 会将本次作业添加到一个任务队列中,然后将这些任务分配给各个 NodeManager 中,并且为每个 NodeManager 创建一个的资源容器。创建完成之后,ResourceManager 会在容器内启动 AppMaster 进程,启动完成之后在 ResourceManager 中进行注册,这样就保持了 ResourceManager 和 AppMaster 的通信。

2.3 任务分配

由创建的 AppMaster 去分配在哪些 NameNode 上运行 map 和 reduce 程序,运行 map 和 reduce 的程序会从 HDFS 中获取相关的资源再执行 map 和 reduce 程序,这个进程为 YarnChild。任务完成之后,AppMaster 向 ResourceManager 注销自己,ResourceManager 会回收相关的资源。

以上便时 YARN 运行时的整体流程。

转载于:https://my.oschina.net/firepation/blog/2966517

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值