YARN三种调度器和配置策略

本文介绍了YARN的三种调度器:FIFO、容量调度器和公平调度器。FIFO简单但不公平,容量调度器保障了队列资源,而公平调度器实现了资源的公平分配。对于配置,容量调度器通过队列分配资源,支持弹性队列;公平调度器不仅在用户队列间公平,也在作业间公平,并可配置抢占策略确保资源公平。

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

三种调度器


FIFO调度器

先进先出,但不适合资源公平性

容量调度器

独立的专门队列保证小作业也可以提交后就启动,队列容量是专门保留的

以整个集群的利用率为代价,与FIFO比,大作业执行的时间要长

公平调度器

不需要预留资源,调度器可以在运行的作业之间动态平衡资源,大作业启动时,因为是唯一运行的,所以获得集群的所有资源,之后小作业启动时,被分配到集群的一半的资源,这样每个作业都能公平共享资源


调度器配置

容量调度器

1) 多个组织共享集群,每个组织配置一个队列,一个队列分配一定的集群资源

2) 同一个队列可以进一步划分,同一个组织不同用户共享队列所分配的资源,使用FIFO调度

3) 队列资源不足时,可以等待其他队列释放的资源或者使用集群中其他空闲资源,这可能会使得实际使用的队列容量超出配置的容量,这叫做“弹性队列”

4) 为队列设置一个最大容量限制,可以防止队列过多侵占其他队列资源

容量调度器配置

在capacity-scheduler.xml配置yarn.scheduler.capacity.<queue-path>.<sub-property>

作业的队列放置

job放置的队列取决于job本身,可以在mapreduce中配置mapreduce.job.queuename,如果队列不存在,则报错,不指定则使用默认default队列

队列名是指队列层次的最后一层,不包含之前路径


公平调度器

既实现了用户队列间的公平调度,也实现了队列内作业间的公平调度

假设用户A,B各自拥有队列Q1,Q2

1) A先启动一个job J1,则J1占用集群所有资源

2) B启动一个job J2,则Q1中的J1需要分一半资源给Q2中的J2

3) B又启动一个job J3,则Q2中的J2需要分一半资源给Q2中的J3

公平调度器配置

1) 因为yarn-site.xml中默认使用容量调度器(CDH除外),首先修改其中yarn.resourcemanager.scheduler.class为公平调度器:

org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

2) 可以修改队列内的调度策略,默认使用公平调度,也支持FIFO

job的队列放置

1) 使用基于规则的系统确定job队列放置,匹配对应的用户队列直到使用default队列

2) 直接就使用default,所有job公平分配

抢占

允许调度器终止占用资源超过公平共享份额队列的容器,这些容器资源释放后被分配给资源数量低于应得份额的队列

抢占的影响:因为被终止的容器需要重新执行而降低集群效率

抢占超时设置

yarn.scheduler.fair.preemption

设置超时参数,设定时间都是秒级别

1) 最小共享抢占

defaultMinSharePreemptionTimeout

指定时间未获得被承诺的最小共享资源,调度器则抢占其他容器

2) 公平共享抢占

defaultFairSharePreemptionTimeout

指定时间获得资源低于公平共享份额的一半,调度器抢占其他容器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值