当前位置:网站首页>第五章 Yarn资源调度器
第五章 Yarn资源调度器
2022-07-06 09:29:00 【留不住斜阳】
Yarn是一个资源调度平台,为运算程序提供服务器运算资源,相当于一个分布式的操作系统,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
5.1 Yarn基本架构
YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成,如图所示。
5.2 Yarn工作机制
工作机制详解
- MR程序提交到客户端所在的节点。
- YarnRunner向ResourceManager申请一个Application。
- RM将该应用程序的资源路径返回给YarnRunner。
- YarnRunner将运行所需资源提交到HDFS上。
- 程序资源提交完毕后,申请运行MRAppMaster。
- RM将用户的请求初始化成一个Task。
- 其中一个NodeManager领取到Task任务。
- 该NodeManager创建容器Container,并产生MRAppMaster。
- Container从HDFS上拷贝资源到本地。
- MRAppMaster向RM 申请运行MapTask资源。
- RM将运行MapTask任务分配给另外两个NodeManager,两个NodeManager分别领取任务并创建容器。
- MRAppMaster向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask。
- MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
- ReduceTask向MapTask获取相应分区的数据。
- 程序运行完毕后,MRAppMaster会向RM申请注销自己。
5.3 作业提交全过程
(1) 作业提交
第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。
第2步:Client向RM申请一个作业id。
第3步:RM给Client返回该job的资源提交路径和作业id。
第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。
第5步:Client提交完资源后,向RM申请运行MRAppMaster。
(2) 作业初始化
第6步:当RM收到Client的请求后,将该job添加到任务调度器中。
第7步:某一个空闲的NM领取到该Job。
第8步:该NM创建Container,并产生MRAppMaster。
第9步:MRAppMaster下载Client提交的资源到本地。
(3) 任务分配
第10步:MRAppMaster向RM申请运行多个MapTask任务资源。
第11步:RM将MapTask任务分配给另外两个NodeManager,另NodeManager分别领取任务并创建容器。
(4) 任务运行
第12步:MRAppMaster向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据进行处理。
第13步:MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
第14步:ReduceTask向MapTask获取相应分区的数据。
第15步:程序运行完毕后,MRAppMaster会向RM申请注销自己。
(5) 进度和状态更新
YARN中的任务将其进度和状态(包括counter)返回给应用管理器, 客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新,展示给用户。
(6) 作业完成
除了向ResourceManager请求作业进度外, 客户端每5秒都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后, 应用管理器和Container会清理工作状态。作业的信息会被作业历史服务器存储以备之后用户核查。
5.4 资源调度器
目前,Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.7.2默认的资源调度器是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>
1.先进先出调度器(FIFO)
2.容量调度器(Capacity Scheduler)
图中queueA分配最多20%资源,queueB分配50%,queueC分配30%。其中queueC,配置租户ss、cls。
- 多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略。
- 容量保证:管理员可为每个队列设置资源最低保证和资源使用上限(如图中queueA分配20%资源上限)
- 灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。
- 多租户:支持多用户共享集群(如图中queueC,配置租户ss、cls)和多应用程序同时运行;为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。
3.公平调度器(Fair Scheduler)
5.5 任务的推测执行
1.作业完成时间取决于最慢的任务完成时间
一个作业由若干个Map任务和Reduce任务构成。因硬件老化、软件Bug等,某些任务可能运行非常慢。
思考:系统中有99%的Map任务都完成了,只有少数几个Map老是进度很慢,完不成,怎么办?
2.推测执行机制
发现拖后腿的任务,比如某个任务运行速度远慢于任务平均速度。为拖后腿任务启动一个备份任务,同时运行。谁先运行完,则采用谁的结果。
3.执行推测任务的前提条件
(1)每个Task只能有一个备份任务
(2)当前Job已完成的Task必须不小于0.05(5%)
(3)开启推测执行参数。mapred-site.xml文件中默认是打开的。
<property>
<name>mapreduce.map.speculative</name>
<value>true</value>
<description>If true, then multiple instances of some map tasks may be executed in parallel.</description>
</property>
<property>
<name>mapreduce.reduce.speculative</name>
<value>true</value>
<description>If true, then multiple instances of some reduce tasks may be executed in parallel.</description>
</property>
4.不能启用推测执行机制情况
(1) 任务间存在严重的负载倾斜;
(2) 特殊任务,比如任务向数据库中写数据。
5.算法原理
假设某一时刻,任务T的执行进度为progress,则可通过一定的算法推测出该任务的最终完成时刻(estimateEndTime)。另一方面,如果此刻为该任务启动一个备份任务,则可推断出它可能的完成时刻estimateEndTime’
estimatedRunTime=(currentTimestamp-taskStartTime)/progress
推测运行时间=(当前时间-任务启动时间)/任务进度
estimateEndTime=taskStartTime+estimatedRunTime
推测结束时间=任务启动时间+推测运行时间
estimateEndTime'=currentTimestamp+averageRunTime
推测备份任务结束时间=当前时间+完成任务平均时间
(1) MR总是选择(estimateEndTime-estimateEndTime’)差值最大的任务,并为之启动备份任务;
(2) 为了防止大量任务同时启动备份任务造成的资源浪费,MR为每个作业设置了同时启动的备份任务数目上限;
(3) 推测执行机制实际上采用了经典的优化算法:以空间换时间,它同时启动多个相同任务处理相同的数据,并让这些任务竞争以缩短数据处理时间。显然,这种方法需要占用更多的计算资源。在集群资源紧缺的情况下,应合理使用该机制,争取在多用少量资源的情况下,减少作业的计算时间。
边栏推荐
- Market trend report, technological innovation and market forecast of China's double sided flexible printed circuit board (FPC)
- Read and save zarr files
- 顺丰科技智慧物流校园技术挑战赛(无t4)
- Advancedinstaller安装包自定义操作打开文件
- Flag framework configures loguru logstore
- Maximum product (greedy)
- 业务系统从Oracle迁移到openGauss数据库的简单记录
- Codeforces Round #801 (Div. 2)A~C
- 力扣——第298场周赛
- Codeforces round 797 (Div. 3) no f
猜你喜欢
It is forbidden to trigger onchange in antd upload beforeupload
顺丰科技智慧物流校园技术挑战赛(无t4)
Tree of life (tree DP)
拉取分支失败,fatal: ‘origin/xxx‘ is not a commit and a branch ‘xxx‘ cannot be created from it
Sword finger offer II 019 Delete at most one character to get a palindrome
Summary of game theory
Advancedinstaller installation package custom action open file
使用jq实现全选 反选 和全不选-冯浩的博客
去掉input聚焦时的边框
Some problems encountered in installing pytorch in windows11 CONDA
随机推荐
VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
window11 conda安装pytorch过程中遇到的一些问题
AcWing:第56场周赛
Summary of FTP function implemented by qnetworkaccessmanager
< li> dot style list style type
Research Report on hearing health care equipment industry - market status analysis and development prospect prediction
计算时间差
2078. Two houses with different colors and the farthest distance
1855. Maximum distance of subscript alignment
Bisphenol based CE Resin Industry Research Report - market status analysis and development prospect forecast
Opencv learning log 26 -- detect circular holes and mark them
图图的学习笔记-进程
(lightoj - 1349) Aladdin and the optimal invitation (greed)
Read and save zarr files
Share an example of running dash application in raspberry pie.
Market trend report, technical innovation and market forecast of China's desktop capacitance meter
628. Maximum product of three numbers
Useeffect, triggered when function components are mounted and unloaded
(lightoj - 1369) answering queries (thinking)
Kubernetes集群部署