【总结】Fair Scheduler

Fair Scheduler总结

默认公平调度调度策略仅仅基于内存资源,通过使用DRF(Dominant Resource Fairness)能够配置基于内存和CPU资源任务调度。

当只有一个应用运行的时候,该应用能够使用整个集群。当其他应用提交到集群,空闲出来的资源将分配给新提交的应用,这样每个应用能够得到大致相同的资源。Hadoop默认调度器,形成一个应用的队列,如此小应用可以在一个合理时间范围内完成,并且不会让大应用长时间等待资源。这也是一个合理方式在许多用户中分享集群资源。最后,公平调度可以设置应用的优先度,设置优先度权重决定应用占用资源比例。

可插入策略的分层队列

公平调度支持分层队列,所有的队列从root队列延伸。典型的公平调度方式是把可用资源分布在可用的root队列的子队列当中。应用程序只能在叶子队列中被调度。一个队列可以被指定为其他队列的子队列。指定一个有层级的队列需要同时指定上级队列。例如 root.queue1   root.queue1.queue2。

公平调度可以配置自定义的调度策略,比如FifiPolicy,FairSharePolicy,DominantResourceFairnessPolicy

使用公平调度需要在yarn-site.xml中配置如下内容

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>

配置公平调度主要包含两个文件,首先是yarn-site.xml,在Hadoop配置目录下,其次需要创建一个配置文件fair-scheduler.xml,主要配置队列的权重和资源容量等。

<?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>
  <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>
  </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>

队列访问控制列表

ACLs对队列进行控制,管理哪些用户可以访问特定队列。主要包括了aclSubmitApps 和aclAdministerApps配置项,每个队列都可以配置这两个 参数。

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/195869.html

(0)
上一篇 2021年11月16日
下一篇 2021年11月16日

相关推荐

发表回复

登录后才能评论