Hadoop YARN配置引數剖析—Capacity Scheduler相關引數
Capacity Scheduler是YARN中預設的資源排程器。
想要了解Capacity Scheduler是什麼,可閱讀我的這篇文章“Hadoop Capacity Scheduler分析”。
在Capacity Scheduler的配置檔案中,佇列queueX的引數Y的配置名稱為yarn.scheduler.capacity.queueX.Y,為了簡單起見,我們記為Y,則每個佇列可以配置的引數如下:
1. 資源分配相關引數
(1) capacity:佇列的資源容量(百分比)。 當系統非常繁忙時,應保證每個佇列的容量得到滿足,而如果每個佇列應用程式較少,可將剩餘資源共享給其他佇列。注意,所有佇列的容量之和應小於100。
(2) maximum-capacity:佇列的資源使用上限(百分比)。由於存在資源共享,因此一個佇列使用的資源量可能超過其容量,而最多使用資源量可通過該引數限制。
m minimum-user-limit-percent:每個使用者最低資源保障(百分比)。任何時刻,一個佇列中每個使用者可使用的資源量均有一定的限制。當一個佇列中同時執行多個使用者的應用程式時中,每個使用者的使用資源量在一個最小值和最大值之間浮動,其中,最小值取決於正在執行的應用程式數目,而最大值則由minimum-user-limit-percent決定。比如,假設minimum-user-limit-percent
(3) user-limit-factor:每個使用者最多可使用的資源量(百分比)。比如,假設該值為30,則任何時刻,每個使用者使用的資源量不能超過該佇列容量的30%。
2. 限制應用程式數目相關引數
(1) maximum-applications :叢集或者佇列中同時處於等待和執行狀態的應用程式數目上限,這是一個強限制,一旦叢集中應用程式數目超過該上限,後續提交的應用程式將被拒絕,預設值為10000。所有佇列的數目上限可通過引數yarn.scheduler.capacity.maximum-applications設定(可看做預設值),而單個佇列可通過引數yarn.scheduler.capacity.<queue-path>.maximum-applications設定適合自己的值。
(2) maximum-am-resource-percent:叢集中用於執行應用程式ApplicationMaster的資源比例上限,該引數通常用於限制處於活動狀態的應用程式數目。該引數型別為浮點型,預設是0.1,表示10%。所有佇列的ApplicationMaster資源比例上限可通過引數yarn.scheduler.capacity. maximum-am-resource-percent設定(可看做預設值),而單個佇列可通過引數yarn.scheduler.capacity.<queue-path>. maximum-am-resource-percent設定適合自己的值。
3. 佇列訪問和許可權控制引數
(1) state :佇列狀態可以為STOPPED或者RUNNING,如果一個佇列處於STOPPED狀態,使用者不可以將應用程式提交到該佇列或者它的子佇列中,類似的,如果ROOT佇列處於STOPPED狀態,使用者不可以向叢集中提交應用程式,但正在執行的應用程式仍可以正常執行結束,以便佇列可以優雅地退出。
(2) acl_submit_applications:限定哪些Linux使用者/使用者組可向給定佇列中提交應用程式。需要注意的是,該屬性具有繼承性,即如果一個使用者可以向某個佇列中提交應用程式,則它可以向它的所有子佇列中提交應用程式。配置該屬性時,使用者之間或使用者組之間用“,”分割,使用者和使用者組之間用空格分割,比如“user1, user2 group1,group2”。
(3) acl_administer_queue:為佇列指定一個管理員,該管理員可控制該佇列的所有應用程式,比如殺死任意一個應用程式等。同樣,該屬性具有繼承性,如果一個使用者可以向某個佇列中提交應用程式,則它可以向它的所有子佇列中提交應用程式。
一個配置檔案例項如下:
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
|
多個佇列配置例子如下:
下面的配置的是分為兩個佇列default,services,其中資源的比例為:default佇列80% ,services佇列20%
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>default,services</value>
<description>分為兩個佇列</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.capacity</name>
<value>80</value>
<description>default佇列80%</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.services.capacity</name>
<value>20</value>
<description>services佇列20%</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
<value>80</value>
<description>Default佇列可使用的資源上限.</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.services.maximum-capacity</name>
<value>20</value>
<description>services佇列可使用的資源上限.</description>
</property>