yarn的三种调度策略配置参数?
三种调度器
FIFO调度器
先进先出,但不适合资源公平性
容量调度器
独立的专门队列保证小作业也可以提交后就启动,队列容量是专门保留的
以整个集群的利用率为代价,与FIFO比,大作业执行的时间要长
公平调度器
不需要预留资源,调度器可以在运行的作业之间动态平衡资源,大作业启动时,因为是唯一运行的,所以获得集群的所有资源,之后小作业启动时,被分配到集群的一半的资源,这样每个作业都能公平共享资源
调度器配置
容量调度器
1) 多个组织共享集群,每个组织配置一个队列,一个队列分配一定的集群资源
2) 同一个队列可以进一步划分,同一个组织不同用户共享队列所分配的资源,使用FIFO调度
3) 队列资源不足时,可以等待其他队列释放的资源或者使用集群中其他空闲资源,这可能会使得实际使用的队列容量超出配置的容量,这叫做“弹性队列”
4) 为队列设置一个最大容量限制,可以防止队列过多侵占其他队列资源
容量调度器配置
在capacity-scheduler.xml配置yarn.scheduler.capacity..
作业的队列放置
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
指定时间获得资源低于公平共享份额的一半,调度器抢占其他容器。
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.