YARN之FairScheduler

文章目录

  • FairScheduler
    • yarn-site配置项
    • allocation file
    • 配置示例

FairScheduler

  • 允许应用程序公平的共享集群资源,也支持队列层次。
  • allocation文件每10s重新加载一次,允许动态修改

yarn-site配置项

  • yarn.scheduler.fair.allocation.file 配置文件路径

  • yarn.scheduler.fair.user-as-default-queue 设置为true,则未指定队列名时,默认提交到与用户名同名的队列

  • yarn.scheduler.fair.sizebasedweight 设置为true,则根据应用的大小分配份额,而不是为所有应用提供平等的份额。此时应用的权重是1的自然对数加上应用请求的总内存,除以2的自然对数。默认为false

  • yarn.scheduler.fair.assignmultiple 设置为true,则允许一次心跳分配多个容器。默认为false

  • yarn.scheduler.fair.dynamic.max.assign 多分配开启后,是否动态决定一次心跳分配的最大容器数量。默认为true

  • yarn.scheduler.fair.max.assign 多分配开启时,动态最大分配为false时,指定一次心跳分配的最大容器数量。默认为-1,无限制

  • yarn.scheduler.fair.locality.threshold.node 对于请求特定节点的容器,延迟调度的阈值(放弃调度)。值为0到1之间的浮点数,默认值-1.0,表示不放弃任何调度机会。

  • yarn.scheduler.fair.locality.threshold.rack 同上,该参数针对的是请求特定机架的容器

  • yarn.scheduler.fair.update-interval-ms 锁定调度器并重新计算公平份额、计算需求和检查是否有抢占到期的时间间隔。默认为500毫秒。

  • yarn.resource-types.memory-mb.increment-allocation 内存资源分配的最小单位,默认为1024mb。

  • yarn.resource-types.vcores.increment-allocation vcore资源分配的最小单位,默认为1。

allocation file

必须是XML格式

  1. 队列元素:
  • queue,表示队列。可选属性"type",被设置为"parent"时,队列为父队列。队列包含以下属性
  • minResources:队列可以分配的最小资源。如果最小份额不能满足,那么将在同一父队列下的任何其他队列获得可用资源。、
  • maxResources:队列可以分配的最大资源。
  • maxContainerAllocation:队列可以为单个容器分配的最大资源,不能大于maxResources。如果该值未设置则继承自父队列。
  • maxChildResources:子队列可以使用的最大资源。
    资源设置的旧格式:“X mb, Y vcores”, “X% cpu, Y% memory”, “X%”
    资源设置的新格式:“vcores=X, memory-mb=Y” or “vcores=X%, memory-mb=Y%”
  • maxRunningApps:队列运行最大的app数量
  • maxAMShare:队列用于分配am的最大份额。默认为0.5f
  • weight:共享集群其他队列的资源权重
  • schedulingPolicy:调度策略,一般允许为fifo/fair/drf,默认为fair。
  • aclSubmitApps:可以提交应用到队列的一组用户或组
  • aclAdministerApps:可以管理队列的一组用户或组,当前管理操作只有kill
  1. 用户元素:表示控制单个用户的行为
  • userMaxAppsDefault:为未指定限制的任何用户设置默认的运行应用程序限制。
  • queueMaxAppsDefault:设置队列的默认运行应用限制;在每个队列中被maxRunningApps元素覆盖。
  1. 队列放置策略:queuePlacementPolicy,包含一组将应用放置到队列的策略。从上到下进行验证。
  • specified:app将会提交到指定的队列中。
  • user:app将会提交到同名队列中。
  • primaryGroup:app将会放置到用户所在组的队列中。
  • default:如果没有指定队列,app将会提交到默认队列中
  • reject:app将被拒绝

配置示例

<?xml version="1.0"?>
<allocations>
  <queue name="sample_queue">
    <minResources>10000 mb,0vcores</minResources>
    <maxResources>90000 mb,0vcores</maxResources>
    <maxRunningApps>50</maxRunningApps>
    <maxAMShare>0.1</maxAMShare>
    <weight>2.0</weight>
    <schedulingPolicy>fair</schedulingPolicy>
    <queue name="sample_sub_queue">
      <aclSubmitApps>charlie</aclSubmitApps>
      <minResources>5000 mb,0vcores</minResources>
    </queue>
    <queue name="sample_reservable_queue">
      <reservation></reservation>
    </queue>
  </queue>

  <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
  <queueMaxResourcesDefault>40000 mb,0vcores</queueMaxResourcesDefault>

  <!-- Queue 'secondary_group_queue' is a parent queue and may have
       user queues under it -->
  <queue name="secondary_group_queue" type="parent">
  <weight>3.0</weight>
  <maxChildResources>4096 mb,4vcores</maxChildResources>
  </queue>

  <user name="sample_user">
    <maxRunningApps>30</maxRunningApps>
  </user>
  <userMaxAppsDefault>5</userMaxAppsDefault>

  <queuePlacementPolicy>
    <rule name="specified" />
    <rule name="primaryGroup" create="false" />
    <rule name="nestedUserQueue">
        <rule name="secondaryGroupExistingQueue" create="false" />
    </rule>
    <rule name="default" queue="sample_queue"/>
  </queuePlacementPolicy>
</allocations>

你可能感兴趣的:(YARN,大数据,yarn)