YARN框架解析

YARN作为资源管理框架,将JobTracker的资源管理与作业调度分离,由ResourceManager和ApplicationMaster负责。四大核心组件包括ResourceManager、NodeManager、ApplicationMaster和Container。ResourceManager处理客户端请求,监控NodeManager和ApplicationMaster;ApplicationMaster管理应用程序实例,负责数据切分和资源申请;NodeManager管理节点资源,响应ResourceManager和ApplicationMaster的命令;Container抽象任务运行环境。YARN作业运行包括作业提交、初始化、任务分配、任务运行、进度状态更新和作业完成等步骤。

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

 YARN框架

Yarn是资源管理框架,其核心思想是把JobTracker的资源管理和作业调度分开,分别由ResourceManager和ApplicationMaster进程实现

Yarn的4大核心组件分别为ResourceManager、NodeManager、ApplicationMaster和Container

(1)     ResourceManager(RM):控制集群并管理应用程序对基础资源的分配。

总体而言RM具有以下特征:

      1)处理客户端请求

         2)启动或监控ApplicationMaster

1) 监控NodeManager

2) 资源的分配与调度

(2)      ApplicationMaster(AM):管理在Yarn内运行的每个应用程序实例

总体而言AM具有以下特征:

1)负责数据的切分

       2)为应用程序申请资源并分配给内部的任务

1) 任务的监控与容错

(3)      NodeManager(NM):管理Yarn集群中的每个节点

总体而言NM具有以下特征:

1) 管理每个节点的资源

2) 处理来自ResourceManager的命令

3) 处理来自ApplicationMaster的命令

(4)      Container:对Yarn中资源的抽象

总体而言Container具有以下作用:

对任务运行环境进行抽象,封装CPU,内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息

Yarn作业运行的步骤:

1.     作业提交:

1) Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业

2) 作业ID由ResourceManager分配

3) 作业的Client核实作业的输出,计算输入的split,将作业的资源(Jar包,配置信息,split信息)拷贝至HDFS

4) 调用ResourceManager.submitApplication()提交作业

2.     作业初始化

1) ResourceManager收到submitApplication()的请求后,便将请求转发给调度器(Scheduler),调度器分配container,ResourceManager在该Container中启动ApplicationMaster

2) ApplicationMaster创建bookkeeping对象监控作业的进度,得到任务的进度以及完成报告

3) 由HDFS得到客户端计算好的split信息,为每个split创建map任务,根据mapreduce.job.reduces创建reduce任务

3.     任务分配

若作业很小,ApplicationMaster会选择在自己的JVM中运行任务

若作业不小,则ApplicationMaster向ResourceManager请求container运行所有的map和reduce任务,这些请求通过心跳来传输,包括每个map任务的数据位置,比如存放split的主机名和机架,调度器(schedule)利用·这些信息调度任务,尽量把任务分配给提供给存放split的节点或者分配给和存放split节点相同机架的节点上

4.     任务运行

当任务由ResourceManager的Schdule分配给一个container后,ApplicationMaster联系NodeManager启动Container,任务运行前首先需要本地化任务所需的资源,比如作业配置,JAR文件,以及分布式缓存中的所有文件,最后运行Map或者Reduce任务 ,YarnChild运行在专用的JVM,但Yarn不支持JVM重用

5.     进度和状态更新

Yarn中的任务将其进度和状态返回给ApplicationMaster,客户端每秒向ApplicationMaster请求进度更新

6.     作业完成

客户端每5分钟通过调用waitForCompletion()检查作业是否完成,时间间隔可以配置,作业完成后ApplicationMaster和Container清理工作状态,OutputCommiter的作业清理也会调用,作业的信息会被作业历史服务器存储以备用户检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值