Fair Scheduler總結apache
默認公平調度調度策略僅僅基於內存資源,經過使用DRF(Dominant Resource Fairness)可以配置基於內存和CPU資源任務調度。ide
當只有一個應用運行的時候,該應用可以使用整個集羣。當其餘應用提交到集羣,空閒出來的資源將分配給新提交的應用,這樣每一個應用可以獲得大體相同的資源。Hadoop默認調度器,造成一個應用的隊列,如此小應用能夠在一個合理時間範圍內完成,而且不會讓大應用長時間等待資源。這也是一個合理方式在許多用戶中分享集羣資源。最後,公平調度能夠設置應用的優先度,設置優先度權重決定應用佔用資源比例。oop
可插入策略的分層隊列spa
公平調度支持分層隊列,全部的隊列從root隊列延伸。典型的公平調度方式是把可用資源分佈在可用的root隊列的子隊列當中。應用程序只能在葉子隊列中被調度。一個隊列能夠被指定爲其餘隊列的子隊列。指定一個有層級的隊列須要同時指定上級隊列。例如 root.queue1 root.queue1.queue2。server
公平調度能夠配置自定義的調度策略,好比FifiPolicy,FairSharePolicy,DominantResourceFairnessPolicyxml
使用公平調度須要在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>
隊列訪問控制列表hadoop
ACLs對隊列進行控制,管理哪些用戶能夠訪問特定隊列。主要包括了aclSubmitApps 和aclAdministerApps配置項,每一個隊列均可以配置這兩個 參數。ci