YARN FairScheduler任务调度

Yarn提供可插拔的调度的算法,用于解决application之间资源竞争问题. 
根据当前多租户多应用类型的应用场景,我们使用FairSchedule资源调度算法,来管理我们用户提交的队列、队列资源竞争.

主要涉及的配置文件有yarn-site.xml、fair-scheduler.xml

yarn-site.xml

只配置了几个觉得必须的项.

<property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property> #是否将采用用户名作为默认的queue name.
    <name>yarn.scheduler.fair.user-as-default-queue</name>
    <value>false</value>
</property>
<property>  #是否抢占.
    <name>yarn.scheduler.fair.preemption</name>
    <value>true</value>
</property>
<property>  
    <name>yarn.scheduler.fair.allocation.file</name>
    <value>/data/conf/hadoop/fair-scheduler.xml</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

fair-scheduler.xml

<allocations>
  <user name="data">
    <maxRunningApps>60</maxRunningApps>
  </user>

  <userMaxAppsDefault>5</userMaxAppsDefault>
  <queueMaxAppsDefault>20</queueMaxAppsDefault>
  <defaultFairSharePreemptionTimeout>10</defaultFairSharePreemptionTimeout>
  <defaultMinSharePreemptionTimeout>5</defaultMinSharePreemptionTimeout>
  <defaultQueueSchedulingPolicy>drf</defaultQueueSchedulingPolicy>

  <queue name="root">
    <aclSubmitApps> </aclSubmitApps>
    <aclAdministerApps> </aclAdministerApps>

    <queue name="long">
      <minResources>88064 mb, 37 vcores</minResources>
      <maxResources>413696 mb, 126 vcores</maxResources>
      <weight>4.0</weight>
      <aclSubmitApps> long</aclSubmitApps>
      <aclAdministerApps> long</aclAdministerApps>
      <fairSharePreemptionTimeout>300</fairSharePreemptionTimeout>
      <minSharePreemptionTimeout>200</minSharePreemptionTimeout>
    </queue>
  <queuePlacementPolicy>
    <rule name="specified" create="false"/>
    <rule name="reject"/>
  </queuePlacementPolicy>
</allocations>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 默认调度算法的考量因子是memory,但是也可以也可以设置DRF(Dominant Resource Fairness), 会考虑mem和vcore的资源.
  • priorities的使用

the priorities are used as weights to determine the fraction of total resources that each app should get.

当队列没有任务时,最小资源可以被其他队列抢走;当有新的任务进来时,如果集群有资源则获取资源,如果没有则会从其他低优先级的队列中抢到资源,执行任务

  • 哪些情况下会发生抢占

    • 最小资源抢占, 当前queue的资源无法保障时,而又有apps运行,需要向外抢占.
    • 公平调度抢占, 当前queue的资源为达到max,而又有apps运行,需要向外抢占.
  • ACL权限控制 
    目前简单的就是使用,基于linux用户、用户组账号的ACL

有两个控制,提交应用、管理应用: aclSubmitApps、aclAdministerApps

参考资料学习

posted @ 2017-11-07 15:30  柚子=_=  阅读(274)  评论(0编辑  收藏  举报