当前位置:网站首页>yarn入门(一篇就够了)
yarn入门(一篇就够了)
2022-07-07 00:33:00 【杨林伟】
文章目录
01 引言
参考资料:《Yarn【架构、原理、多队列配置】 》
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

02 yarn架构
yarn主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成,如下图:
2.1 ResourceManager
ResourceManager(RM)主要的作用如下:
- 处理客户端请求;
- 监控NodeManager;
- 启动或监控ApplicationMaster;
- 资源的分配与调度。
2.2 NodeManager
NodeManager(NM)主要作用如下:
- 管理单个节点上的资源;
- 处理来自ResouceManager的命令;
- 处理来自ApplicationMaster的命令。
2.3 ApplicationMaster
ApplicationMaster(AM)作用如下:
- 负责数据的切分;
- 为应用程序申请资源并分配给内部的任务;
- 任务的监控与容错。
2.4 Container
Container是yarn中的资源抽象,它封装了某个节点上的维度资源,如:内存、CPU、硬盘和网络等。
03 yarn工作原理
3.1 yarn工作机制
yarn工作机制图如下(图片来源于:https://www.cnblogs.com/wh984763176/p/13225690.html):
流程如下:
- MR程序提交到客户端所在的节点。
- YarnRunner向ResourceManager申请一个Application。
- RM将该应用程序的资源路径返回给YarnRunner。
- 该程序将运行所需资源提交到HDFS上。
- 程序资源提交完毕后,申请运行mrAppMaster。
- RM将用户的请求初始化成一个Task。
- 其中一个NodeManager领取到Task任务。
- 该NodeManager创建容器Container,并产生MRAppmaster。
- Container从HDFS上拷贝资源到本地。
- MRAppmaster向RM 申请运行MapTask资源。
- RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。
- MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。
- MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
- ReduceTask向MapTask获取相应分区的数据。
- 程序运行完毕后,MR会向RM申请注销自己。
3.2 yarn任务提交流程
① 作业提交
- 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。
- 第2步:Client向RM申请一个作业id。
- 第3步:RM给Client返回该job资源的提交路径和作业id。
- 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。
- 第5步:Client提交完资源后,向RM申请运行MrAppMaster。
② 作业初始化
- 第6步:当RM收到Client的请求后,将该job添加到容量调度器中。
- 第7步:某一个空闲的NM领取到该Job。
- 第8步:该NM创建Container,并产生MRAppmaster。
- 第9步:下载Client提交的资源到本地。
③ 任务分配
- 第10步:MrAppMaster向RM申请运行多个MapTask任务资源。
- 第11步:RM将运行MapTask任务分配给另外两个NodeManager,另两个
NodeManager分别领取任务并创建容器。
④ 任务运行
- 第12步:MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。
- 第13步:MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
- 第14步:ReduceTask向MapTask获取相应分区的数据。
- 第15步:程序运行完毕后,MR会向RM申请注销自己。
⑤ 进度和状态更新
- YARN中的任务将其进度和状态(包括counter)返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新, 展示给用户。
⑥ 作业完成
- 除了向应用管理器请求作业进度外, 客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。
04 yarn资源调度器
Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler和Fair Scheduler。
Hadoop3.1.3默认的资源调度器是Capacity Scheduler。
具体设置详见:yarn-default.xml文件
<property>
<description>The class to use as the resource scheduler.</description>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
4.1 FIFO调度器
先进先出:同一时间队列中只有一个任务在执行:
4.2 容器调度器
多队列:每个队列内部先进先出, 同一时间队列中只有一个任务在执行, 队列的并行度为队列的个数。
容器调度器支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略;
为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源进行限定:
- 首先,计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列(即最闲的);
- 其次,按照作业优先级和提交时间的顺序,同时考虑用户资源量限制和内存限制对队列内任务排序。
如上图,三个队列同时按照任务的先后顺序依次执行,比如:job11,job21和job31分别排在队列最前面,先运行,也是并行运行。
4.3 公平调度器
多队列:每个队列内部按照缺额大小分配资源启动任务,同一时间队列中有多个任务执行。队列的并行度大于等于队列的个数


公平调度器有如下特点:
- 支持多队列多作业,每个队列可以单独配置;
- 同一队列的作业按照器优先级分享整个队列的资源,并发执行;
- 每个作业可以设置最小资源值,调度器会保证作业获得其以上资源;
- 设计目标是在时间尺度上,所有作业获得公平的资源。某一时刻一个作业应获资源和实际获取资源的差距叫“缺额”;
- 调度器会优先为缺额大的作业分配资源。
05 文末
本文主要讲解了yarn的组成、工作机制原理及其三种资源调度器,谢谢大家的阅读,本文完!
边栏推荐
- How does mapbox switch markup languages?
- Interview questions and salary and welfare of Shanghai byte
- 随机生成session_id
- Go 语言的 Context 详解
- [shell] clean up nohup Out file
- "Multimodal" concept
- 拼多多新店如何获取免费流量,需要从哪些环节去优化,才能有效提升店内免费流量
- What is dependency injection (DI)
- How to get free traffic in pinduoduo new store and what links need to be optimized in order to effectively improve the free traffic in the store
- SQLSTATE[HY000][1130] Host ‘host. docker. internal‘ is not allowed to connect to this MySQL server
猜你喜欢

Determine whether the file is a DICOM file

Differences and introduction of cluster, distributed and microservice

C#可空类型

404 not found service cannot be reached in SAP WebService test

English grammar_ Noun possessive

《2022中国低/无代码市场研究及选型评估报告》发布

爬虫练习题(三)
![Paper reading [MM21 pre training for video understanding challenge:video captioning with pre training techniqu]](/img/9c/1f031400f0e201df47bd51547ff73f.png)
Paper reading [MM21 pre training for video understanding challenge:video captioning with pre training techniqu]

Pytorch builds neural network to predict temperature

mac版php装xdebug环境(m1版)
随机推荐
pytorch_ 01 automatic derivation mechanism
Hcip seventh operation
On the difference between FPGA and ASIC
Question 102: sequence traversal of binary tree
淘寶商品詳情頁API接口、淘寶商品列錶API接口,淘寶商品銷量API接口,淘寶APP詳情API接口,淘寶詳情API接口
消息队列:重复消息如何处理?
[solved] record an error in easyexcel [when reading the XLS file, no error will be reported when reading the whole table, and an error will be reported when reading the specified sheet name]
随机生成session_id
架构设计的五个核心要素
nodejs获取客户端ip
如何提高网站权重
Educational Codeforces Round 22 B. The Golden Age
Win configuration PM2 boot auto start node project
"Multimodal" concept
SQLSTATE[HY000][1130] Host ‘host. docker. internal‘ is not allowed to connect to this MySQL server
Reptile exercises (III)
盘点国内有哪些EDA公司?
SAP ABAP BDC (batch data communication) -018
EMMC print cqhci: timeout for tag 10 prompt analysis and solution
[daily training -- Tencent selected 50] 235 Nearest common ancestor of binary search tree