YARN三种调度方式

墨蓝 2024-04-18 11:43 171阅读 0赞

1. 三种调度器

三种调度方式

FIFO调度器

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

容量调度器

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

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

公平调度器

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

2. 调度器配置

容量调度器

  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

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

job的队列放置

  1. 使用基于规则的系统确定job队列放置,匹配对应的用户队列直到使用default队列
  2. 直接就使用default,所有job公平分配

抢占

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

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

抢占超时设置

yarn.scheduler.fair.preemption

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

  1. 最小共享抢占

defaultMinSharePreemptionTimeout

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

  1. 公平共享抢占

defaultFairSharePreemptionTimeout

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

发表评论

表情:
评论列表 (有 0 条评论,171人围观)

还没有评论,来说两句吧...

相关阅读

    相关 YARN调度

    YARN的三种调度器 什么是Scheduler(调度器) > Scheduler即调度器,根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业

    相关 Yarn资源调度

    由于Yarn良好的兼容性和扩展性,目前可以支持大部分数据引擎,所以了解Yarn的资源调度原理很有必要,Yarn主要由四个重要角色组成: ResourceManager:

    相关 Yarn调度策略

    -------------------- 理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经