yarn任务调度–capacity scheduler(容量调度) / fair schedule

2019/2/19 星期二

yarn任务调度–capacity scheduler(容量调度) / fair scheduler(公平调度)
由于集群资源有限,当无法满足众多application 的资源请求时,yarn 需要适当的策略对application 的资源请求进行调度;
Scheduler 概述
Yarn 中实现的调度策略有三种:FIFO/Capacity/Fair Schedulers
(1)FIFO Scheduler:

yarn任务调度--capacity scheduler(容量调度) / fair schedule

将所有application 按提交的顺序排队,先进先出
优点—->简单易懂且不用任何配置
缺点—->不适合于shared clusters;大的应用会将集群资源占满从而导致大量应用等待
小结:
1、一个队列可以使用yarn的全部资源;
2、后提交的任务必须等前面的任务运行完成之后,才可以得到资源并执行。

(2)Capacity Scheduler //此部分查看参考链接 讲的很详细

yarn任务调度--capacity scheduler(容量调度) / fair schedule

将application 划分为多条任务队列,每条队列拥有相应的资源 在队列的内部,资源分配遵循FIFO 策略队列资源支持弹性调整:一个队列的空闲资源可以分配给“饥饿”队列(注意:一旦之前的空闲队列需求增长,因为不支持“先占”,不能强制kill 资源container,则需要等待其他队列释放资源;为防止这种状况的出现,可以配置队列最大资源进行限制)
任务队列支持继承结构
小结:
最大化集群吞吐量
•核心思想
–集群资源由多个队列分享
–空闲队列可以把资源“借”给忙队列
–需要时可以取回
•调度策略
–应该获得的资源/实际获得的资源,选择比值最低的队列
–队列内FIFO
–考虑限制:单个用户使用资源、使用其他队列资源

(3)Fair Scheduler

yarn任务调度--capacity scheduler(容量调度) / fair schedule

不需要为特定small application 保留资源,而是在需要执行时进行动态公平分配;动态资源分配有一个延后,因为需要等待large job 释放一部分资源 Small job 资源使用完毕后,large job 可以再次获得全部资源 Fair Scheduler 也支持在application queue 之间进行调度
小结:
多用户公平共享集群资源
•作业池
–每个用户单独资源池
–作业放进共享资源池
–每个作业最低资源保障
•调度策略
–默认FIFO
–队列内调度策略可配置

//Fair调度器的设计目标是为所有的应用分配公平的资源(对公平的定义可以通过参数来设置)。在上面的“Yarn调度器对比图”展示了一个队列中两个应用的公平调度;当然,公平调度在也可以在多个队列间工作。举个例子,假设有两个用户A和B,他们分别拥有一个队列。当A启动一个job而B没有任务时,A会获得全部集群资源;当B启动一个job后,A的job会继续运行,不过一会儿之后两个任务会各自获得一半的集群资源。如果此时B再启动第二个job并且其它job还在运行,则它将会和B的第一个job共享B这个队列的资源,也就是B的两个job会用于四分之一的集群资源,而A的job仍然用于集群一半的资源,结果就是资源最终在两个用户之间平等的共享。

参考链接:
http://www.mamicode.com/info-detail-1097801.html
Hadoop 的三种调度器FIFO、Capacity Scheduler、Fair Scheduler:
https://blog.csdn.net/xiaomage510/article/details/82500067
Fair Scheduler与Capacity Scheduler比较
https://blog.51cto.com/qishi23/1599138

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/193684.html

(0)
上一篇 2021年11月15日
下一篇 2021年11月15日

相关推荐

发表回复

登录后才能评论