【總結】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配置項,每個隊列都可以配置這兩個 參數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章