分享

yarn fair队列设置

jinwensc 2018-10-15 14:48:15 发表于 疑问解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 10670
类似下边两级队列:
root
--pro
----on
----off
目标:
在提交任务是必须指定队列名称
不允许创建新的队列


我采用如下的配置
yarn-site.xml:
yarn.scheduler.fair.allow-undeclared-pools=false



fair-scheduler.xml:
  <queuePlacementPolicy>
    <rule name="specified"/>
    <rule name="primaryGroup" create="false" />
    <rule name="nestedUserQueue">
        <rule name="secondaryGroupExistingQueue" create="false" />
    </rule>
    <rule name="default" queue="none"/>
  </queuePlacementPolicy>
问题:
采用以上配置
还是可以创建一级队列 例如root.test也可以创建子队列root.pro.test

这个配置应该怎么设置?


已有(3)人评论

跳转到指定楼层
s060403072 发表于 2018-10-15 20:45:41
既然不按照这个,首先楼主需要修改思路
1.yarn-site.xml配置

[mw_shl_code=text,true]<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>[/mw_shl_code]

2.创建一个分配文件来列出哪些队列用来分配以及对应的权重量。这个分配文件会每10秒钟重新加载一次,从而支持运行时配置变更。
下面属性非常重要,详细阅读

yarn-site.xml中的配置属性


yarn.scheduler.fair.allocation.file
分配文件的路径地址。分配文件是一个XML文件来描述队列和队列的属性以及特定的策略。这个文件必须是一个XML格式的文件。如果配置一个相对路径,那么该文件会在classpath中被搜索到。默认是fair-scheduler.xml。


上面指定配置文件的属性,这个文件和yarn-site.xml文件配合使用,同时里面指定队列

################################
更多属性:
  • yarn.scheduler.fair.user-as-default-queue

    • 是否使用用户名关联分配的默认队列名称,如果是false或者未设置,所有的作业都有一个共享的默认队列,叫做default。默认是true。如果队列分配策略在分配文件中配置过,那么这个属性会被忽略。
  • yarn.scheduler.fair.preemption

    • 是否抢占。默认false。
  • yarn.scheduler.fair.preemption.cluster-utilization-threshold

    • 当抢占式配置后,配置使用阈值。该阈值计算是按照所有资源的容量使用量的最大比例来算的。默认是0.8f。
  • yarn.scheduler.fair.sizebasedweight

    • 是否分配资源给独立的作业,基于作业的size而不是均等的分配所有的资源。设置为true时,应用的权重通过1+请求资源内存大小的自然对数来计算。默认是false。
  • yarn.scheduler.fair.assignmultiple

    • 是否允许在一次心跳中进行多次容器分配。默认是false。
  • yarn.scheduler.fair.max.assign

    • 如果上个属性设置为true,这个属性明确一次心跳中能分配的最大的容器数。默认是-1,表示没有限制。
  • yarn.scheduler.fair.locality.threshold.node

    • 对于特定node上请求容器的应用作业,该属性代表了自从上次容器分配等待调度到其他节点node上的机会的次数。表示为0到1之间的一个浮点数,该数字表达了集群规模的比例,代表了向上传递的调度机会数。默认值是-1.0,代表不传递任何调度机会。
  • yarn.scheduler.fair.locality.threshold.rack

    • 对于特定rack上请求容器的作业,该属性代表了自从上次容器分配等待调度到其他rack上的机会的次数。表示为0到1之间的一个浮点数,该数字表达了集群规模的比例,代表了向上传递的调度机会数。默认值是-1.0,代表不传递任何调度机会。
  • yarn.scheduler.fair.allow-undeclared-pools

    • 如果为true,新的队列可以在作业提交时创建,无论是提交者指定的应用作业的队列还是default的队列。如果为false,应用作业在任何时间都会被分配到一个没有在分配文件张声明过的队列中,相反就只会分配到default队列。该属性默认是true。如果队列分配策略在分配文件中设置过,那么这个属性失效。
  • yarn.scheduler.fair.update-interval-ms

    • 锁定调度器和重新计算资源分配和需求,检查是否有抢占的时间间隔属性。默认是500m








回复

使用道具 举报

s060403072 发表于 2018-10-15 20:47:23
例子:分配中的文件的格式如下:
<?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>

  <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>

  <!—- Queue 'secondary_group_queueue' is a parent queue and may have
       user queues under it -->
  <queue name="secondary_group_queue" type="parent">
  <weight>3.0</weight>
  </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>


回复

使用道具 举报

jiangzi 发表于 2018-10-15 22:18:48
学习了,这个不错~~~~~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条