yarn工作原理

简介: yarn工作原理

基本架构

概念解析


1. ResourceManager


   ResourceManager是master上的进程,负责整个分布式系统的资源管理和调度。他会处理来自client端的请求(包括提交作业/杀死作业);启动/监控Application Master;监控NodeManager的情况,比如可能挂掉的NodeManager。


2. NodeManager


   相对应的,NodeManager时处在slave节点上的进程,他只负责当前slave节点的资源管理和调度,以及task的运行。他会定期向ResourceManager回报资源/Container的情况(heartbeat);接受来自ResourceManager对于Container的启停命令。


3. Application Master


   每一个提交到集群的作业都会有一个与之对应的Application Master来负责应用程序的管理。他负责进行数据切分;为当前应用程序向ResourceManager去申请资源(也就是Container),并分配给具体的任务;与NodeManager通信,用来启停具体的任务,任务运行在Container中;而任务的监控和容错也是由Application Master来负责的。


4. Container


   那么container又是什么呢?它包含了Application Master向ResourceManager申请的计算资源,比如说CPU/内存的大小,以及任务运行所需的环境变量和队任务运行情况的描述。AM也是在container上运行的,不过AM的container是RM申请的。

工作流程:

20180523171336608.png

(1)Client向ResourceManager提交作业(可以是Spark/Mapreduce作业)


(2)ResourceManager会为这个作业分配一个container


(3)ResourceManager与NodeManager通信,要求NodeManger在刚刚分配好的container上启动应用程序的Application Master


(4)Application Master先去向ResourceManager注册,而后ResourceManager会为各个任务申请资源,并监控运行情况


(5)Application Master采用轮询(polling)方式向ResourceManager申请并领取资源(通过RPC协议通信)


 (6) Application Manager申请到了资源以后,就和NodeManager通信,要求NodeManager启动任务


     最后,NodeManger启动作业对应的任务。  

工作机制


(0)Mr 程序提交到客户端所在的节点。


(1)Yarnrunner 向 Resourcemanager 申请一个 Application。


(2)rm 将该应用程序的资源路径返回给 yarnrunner。


(3)该程序将运行所需资源提交到 HDFS 上。


(4)程序资源提交完毕后,申请运行 mrAppMaster。


(5)RM 将用户的请求初始化成一个 task。


(6)其中一个 NodeManager 领取到 task 任务。


(7)该 NodeManager 创建容器 Container,并产生 MRAppmaster。


(8)Container 从 HDFS 上拷贝资源到本地。


(9)MRAppmaster 向 RM 申请运行 maptask 资源。


(10)RM 将运行 maptask 任务分配给另外两个 NodeManager,另两个 NodeManager 分


别领取任务并创建容器。


(11)MR 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个 NodeManager


分别启动 maptask,maptask 对数据分区排序。


(12)MrAppMaster 等待所有 maptask 运行完毕后,向 RM 申请容器,运行 reduce task。


(13)reduce task 向 maptask 获取相应分区的数据。


(14)程序运行完毕后,MR 会向 RM 申请注销自己。


理解重点:


1.  Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)。


2.  Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster;

3. Container的运行是由ApplicationMaster向资源所在的NodeManager发起的,Container运行时需提供内部执行的任务命令(可以是任何命令,比如java、Python、C++进程启动命令均可)以及该命令执行所需的环境变量和外部资源(比如词典文件、可执行文件、jar包等)。

另外,一个应用程序所需的Container分为两大类,如下:

      (1) 运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;

      (2) 运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。

以上两类Container可能在任意节点上,它们的位置通常而言是随机的,即ApplicationMaster可能与它管理的任务运行在一个节点上。


 



相关文章
|
资源调度 分布式计算 监控
|
1月前
|
资源调度 分布式计算 监控
【Hadoop Yarn】Yarn 工作机制
【4月更文挑战第7天】【Hadoop Yarn】Yarn 工作机制
|
6月前
|
资源调度 分布式计算 Hadoop
YARN简单概述
YARN简单概述
25 0
|
10月前
|
资源调度 调度 容器
Yarn 的工作原理、流程【重要】
Yarn 的工作原理、流程【重要】
87 0
|
缓存 资源调度 安全
yarn 学习总结
yarn 是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具,它仍然使用 npm 的registry,不过提供了全新 CLI 来对包进行管理
|
资源调度 分布式计算 Spark
Spark的YARN模式运行机制
Spark的YARN模式运行机制
202 0
Spark的YARN模式运行机制
|
资源调度
yarn简单使用
yarn简单使用
191 0
yarn简单使用
|
资源调度 分布式计算 Java
YARN and MapReduce的【内存】优化配置详解
在Hadoop2.x中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container。 使之专注于其擅长的数据处理任务, 将无需考虑资源调度.
1436 0
|
资源调度 分布式计算 监控
YARN 基本架构|学习笔记
快速学习 YARN 基本架构
YARN 基本架构|学习笔记
|
资源调度 分布式计算 Hadoop
YARN 工作机制|学习笔记
快速学习 YARN 工作机制
106 0
YARN 工作机制|学习笔记

相关实验场景

更多