配額文件爲每一個資源池配置最小共享資源、運行作業限制、權重和搶佔超時時間。HADOOP_HOME/conf/fair-scheduler.xml.template提供了一個示例例子。配額文件可以包含下列類型的元素:
- pool元素,配置各個資源池。它們可能包含下列子元素:
。minMaps和minReduces,設置資源池最小共享的任務時間片。
。maxRunningJobs,限制從資源池同時運行的作業數量(默認是無限)。
。weight,以非比例的方式與其它資源池共享集羣(默認是1.0)。
。minSharePreemptionTimeout,如果資源池的資源低於它的最小共享資源,在結束其它資源池的任務之前等待的秒數(默認是無限)。
- user元素,可能會包含一個的maxRunningJobs屬性來限制作業。在默認情況下要注意,每一個用戶有一個資源池,所以每用戶限制不是必須的。
- poolMaxJobsDefault,爲那些沒有指定運行作業限制的資源池設定默認值。
- userMaxJobsDefault,爲那些沒有指定運行作業限制的用戶設定默認值。
- defaultMinSharePreemptionTimeout,爲那些沒有指定最小共享資源搶佔超時時間的資源池設定默認值。
- fairSharePreemptionTimeout,設置作業擁有低於其公平共享資源的一半的搶佔超時時間。
Pool和user元素僅在你對資源池/用戶設定了非默認值時纔是必須的。也就是說,在運行公平調度器前,你不必在配置文件中聲明所有的用戶及資源池。如果一個用戶或資源池沒有列在配置文件中,將會使用運行作業限制、搶佔超時時間等的默認值。
下面給出一個配額文件示例:
<allocations>
<poolname="sample_pool">
<minMaps>5</minMaps>
<minReduces>5</minReduces>
<weight>2.0</weight>
</pool>
<username="sample_user">
<maxRunningJobs>6</maxRunningJobs>
</user>
<userMaxJobsDefault>3</userMaxJobsDefault>
</allocations>
這個例子創建了一個資源池sample_pool,保證最小有5個map時間片和5個reduce時間片。資源池還有着2.0的權重,意味着它與其它資源池相比,擁有相對2倍的集羣共享資源(默認是權重是1)。最後,除了sample_user可並行運行6個作業外,示例限制了其它每用戶的運行作業數爲3。任何未在配額文件中定義的資源池將獲得無保證的容量及1.0的權重。與此同時,任何沒有在配額文件中設置最大運行作業數的資源池或用戶將被允許運行無限個作業。
HADOOP_HOME/conf/fair-scheduler.xml.template是一個更詳細的例子文件,還設定了搶佔超時時間。