Fair 调度器简单配置指南

当 YARN 调度器配置为 Fair 时,可以配置一个 fair-scheduler.xml。在此文件里,设置各个队列的资源和规则。

fair-scheduler.xml 的配置如下:

<?xml version="1.0"?>
<allocations>
  <queue name="default">
    <weight>1</weight>
    <schedulingPolicy>fair</schedulingPolicy>
    <minResources>314572mb,100vcores</minResources>
    <maxResources>3145720mb,500vcores</maxResources>
    <maxRunningApps>10</maxRunningApps>
  </queue>
  <queue name="queueA">
    <weight>2</weight>
    <schedulingPolicy>fair</schedulingPolicy>
    <minResources>800000mb,200vcores</minResources>
    <maxResources>2000000mb,500vcores</maxResources>
    <maxRunningApps>30</maxRunningApps>
  </queue>
  <queue name="queueB">
    <weight>2</weight>
    <schedulingPolicy>fair</schedulingPolicy>
    <minResources>400000mb,100vcores</minResources>
    <maxResources>2000000mb,500vcores</maxResources>
    <maxRunningApps>20</maxRunningApps>
  </queue>
  
  <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
  <userMaxAppsDefault>500</userMaxAppsDefault>
 
  <queuePlacementPolicy>
     <rule name="specified" create="false"/>
     <rule name="primaryGroup" create="false"/>
     <rule name="user" create="false" />
     <rule name="reject"/>
  </queuePlacementPolicy>
</allocations> 

内容解释

fair-scheduler.xml 分为 3 个部分,第 1 部分是队列设置,第 2 部分是默认设置,第 3 部分是队列放置策略。

队列设置

一个队列的设置如下,如果增加一个队列,则可以在文件里新增一个 queue 项。以下为队列 queueA 的设置。

  <queue name="queueA">
    <weight>2</weight>
    <schedulingPolicy>fair</schedulingPolicy>
    <minResources>800000mb,200vcores</minResources>
    <maxResources>2000000mb,500vcores</maxResources>
    <maxRunningApps>30</maxRunningApps>
  </queue>

配置项解释

  • name="queueA" 是这个队列的名称,队列的名称必须唯一。
  • weight: 。队列的权重,默认是 1,权重是 2 的队列将会收到默认权重 2 倍的资源。
  • schedulingPolicy:队列内 application 的调度策略。允许的值包括“fifo”,“fair” 和 “drf”。默认是“fair”,即同一个队列的各 application 公平的获得队列的资源。如果为"fifo",提交时间较早的 application 优先分配容器。“drf” 是基于vcore和内存的策略,而不是只基于内存的调度策略。
  • minResources: 队列的最小资源,采用"X mb, Y vcores”"的形式。如果一个队列的最小资源未能得到满足,那么它将优先获得可用资源。有可能一个队列处于最小资源之下,但是在它提交 application 时不会立刻达到最小资源,因为已经在运行的 application 可能已经使用这些资源。当有资源释放时,资源优先分配给没有达到 minResources 的队列。如果此配置超过集群最大值,虽然显示 minResources 很大,最多也只能使用集群最大值的资源。
  • maxResources: 一个队列允许的最大资源,采用“X mb, Y vcores”的形式。一个队列永远不会分配资源总量超过这个限制。如果此配置超过集群最大值,最多也只会显示集群的最大值。
  • maxRunningApps: 限制队列可以同时运行的 application 数量。当该队列正在运行的 application 数量达到此值,新的 application 需要排队。

默认的配置

默认的配置是当队列没有设置此项时,用此设置。

  <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
  <userMaxAppsDefault>500</userMaxAppsDefault>
  • queueMaxAMShareDefault:限制队列用于运行 Application Master 的资源比例,默认值是0.5f,即 50%。
  • userMaxAppsDefault:限制用户可以并行运行的 application 数量。当超过此值后,该用户的 application 需要排队。

队列放置策略

     <rule name="specified" create="false"/>
     <rule name="primaryGroup" create="false"/>
     <rule name="user" create="false" />
     <rule name="reject"/>

队列放置策略用于分配新提交的 application 到哪个队列里。规则可以设置一个或者多个。提交 application 时,调度器从上往下判断规则,当一个规则满足,则不再继续判断。
create="true"时,说明可以创建队列,谨慎设置此选项,可能导致很多队列。当 create=“false” 时判断下一规则。
常见的规则有:

  • specified: 把 application 放置到提交 application 时指定的队列。
  • primaryGroup: 把 application 放置到提交 application 的用户所在组的队列。此项配置需要先维护好用户组和用户。
  • user: 把 application 放置到提交 application 的用户同名的队列.
  • default: <rule name="default" queue="queueB"/> 程序被放到此规则指定的规则里。
    reject: application 被拒绝。

注意事项

此文件非常重要,改动之前先备份。
此文件 YARN 默认每 10 秒钟加载一次,所以改动之后,过一段时间 YARN 的界面会看到更改,如果没看到,则说明配置错误,ResoruceManager 无法解析。
在 fair-scheduler.xml 中增加队列时,YARN 队列直接显示。
在 fair-scheduler.xml 中删除队列时没有作用。有两个方法,第 1,重启 ResourceManager;第 2 ,设置要删除的队列的 maxResource 为 0M,0vcores,该队列没有资源,但是提交到此队列的用户会排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值