先附一個官網(wǎng)地址
Capacity Scheduler是YARN中默認(rèn)的資源調(diào)度器疫铜。
- 相關(guān)參數(shù)配置:
- 資源分配相關(guān)參數(shù)
(1) capacity:隊列的資源容量(百分比)刘急。 當(dāng)系統(tǒng)非常繁忙時柳刮,應(yīng)保證每個隊列的容量得到滿足,而如果每個隊列應(yīng)用程序較少假残,可將剩余資源共享給其他隊列米间。
注意,所有隊列的容量之和應(yīng)小于100栅隐。
(2) maximum-capacity:隊列的資源使用上限(百分比)塔嬉。由于存在資源共享,因此一個隊列使用的資源量可能超過其容量租悄,而最多使用資源量可通過該參數(shù)限制谨究。
(3) minimum-user-limit-percent:每個用戶最低資源保障(百分比)。任何時刻恰矩,一個隊列中每個用戶可使用的資源量均有一定的限制记盒。
當(dāng)一個隊列中同時運行多個用戶的應(yīng)用程序時中,每個用戶的使用資源量在一個最小值和最大值之間浮動外傅,其中纪吮,最小值取決于正在運行的應(yīng)用程序數(shù)目,
而最大值則由minimum-user-limit-percent決定萎胰。比如碾盟,假設(shè)minimum-user-limit-percent為25。當(dāng)兩個用戶向該隊列提交應(yīng)用程序時技竟,每個用戶可使用資源量
不能超過50%冰肴,如果三個用戶提交應(yīng)用程序,則每個用戶可使用資源量不能超多33%,如果四個或者更多用戶提交應(yīng)用程序熙尉,則每個用戶可用資源量不能超過25%联逻。
(4) user-limit-factor:決定每個用戶可使用的資源是否可以超過隊列的資源,如果是1.2則表示可用的資源量是隊列資源的1.2倍检痰。
- 限制應(yīng)用程序數(shù)目相關(guān)參數(shù)
(1) maximum-applications :集群或者隊列中同時處于等待和運行狀態(tài)的應(yīng)用程序數(shù)目上限包归,這是一個強限制,一旦集群中應(yīng)用程序數(shù)目超過該上限铅歼,
后續(xù)提交的應(yīng)用程序?qū)⒈痪芙^公壤,默認(rèn)值為10000。所有隊列的數(shù)目上限可通過參數(shù)yarn.scheduler.capacity.maximum-applications設(shè)置(可看做默認(rèn)值)椎椰,
而單個隊列可通過參數(shù)yarn.scheduler.capacity.<queue-path>.maximum-applications設(shè)置適合自己的值厦幅。
(2) maximum-am-resource-percent:集群中用于運行應(yīng)用程序ApplicationMaster的資源比例上限,該參數(shù)通常用于限制處于活動狀態(tài)的應(yīng)用程序數(shù)目慨飘。
該參數(shù)類型為浮點型确憨,默認(rèn)是0.1,表示10%套媚。所有隊列的ApplicationMaster資源比例上限可通過參數(shù)yarn.scheduler.capacity.maximum-am-resource-percent設(shè)置
(可看做默認(rèn)值)缚态,而單個隊列可通過參數(shù)yarn.scheduler.capacity.<queue-path>. maximum-am-resource-percent設(shè)置適合自己的值。
- 隊列訪問和權(quán)限控制參數(shù)
(1) state :隊列狀態(tài)可以為STOPPED或者RUNNING堤瘤,如果一個隊列處于STOPPED狀態(tài)玫芦,用戶不可以將應(yīng)用程序提交到該隊列或者它的子隊列中,類似的本辐,
如果ROOT隊列處于STOPPED狀態(tài)桥帆,用戶不可以向集群中提交應(yīng)用程序,但正在運行的應(yīng)用程序仍可以正常運行結(jié)束慎皱,以便隊列可以優(yōu)雅地退出老虫。
(2) acl_submit_applications:限定哪些Linux用戶/用戶組可向給定隊列中提交應(yīng)用程序。需要注意的是茫多,該屬性具有繼承性祈匙,
即如果一個用戶可以向某個隊列中提交應(yīng)用程序,則它可以向它的所有子隊列中提交應(yīng)用程序天揖。配置該屬性時夺欲,
用戶之間或用戶組之間用“,”分割今膊,用戶和用戶組之間用空格分割些阅,比如“user1, user2 group1,group2”。
(3) acl_administer_queue:為隊列指定一個管理員斑唬,該管理員可控制該隊列的所有應(yīng)用程序市埋,比如殺死任意一個應(yīng)用程序等黎泣。
同樣,該屬性具有繼承性缤谎,如果一個用戶可以向某個隊列中提交應(yīng)用程序抒倚,則它可以向它的所有子隊列中提交應(yīng)用程序。
- 實例:
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>default,dev</value>
<description>root隊列的所有子隊列</description>
</property>
<!--資源分配相關(guān)參數(shù)-->
<property>
<name>yarn.scheduler.capacity.root.dev.capacity</name>
<value>60</value>
<description>dev隊列的資源容量</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
<value>75</value>
<description>dev隊列可使用的資源上限</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.user-limit-factor</name>
<value>1</value>
<description>決定每個用戶可使用的資源是否可以超過隊列的資源</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.minimum-user-limit-percent</name>
<value>20</value>
<description>每個用戶最低資源保障</description>
</property>
<!--限制應(yīng)用程序數(shù)目相關(guān)參數(shù)-->
<property>
<name>yarn.scheduler.capacity.root.dev.maximum-applications</name>
<value>100</value>
<description>dev隊列最多可同時處于等待和運行狀態(tài)的應(yīng)用程序數(shù)目</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.maximum-am-resource-percent</name>
<value>0.1</value>
<description>dev隊列可用于運行AM的資源比例上限坷澡,這通常用于限制并發(fā)運行的應(yīng)用程序數(shù)目</description>
</property>
<!--隊列訪問和權(quán)限控制參數(shù)-->
<property>
<name>yarn.scheduler.capacity.root.dev.state</name>
<value>RUNNING</value>
<description>dev隊列的狀態(tài)衡便,可以是RUNNING或者STOPPED</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.acl_administer_queue</name>
<value>admin</value>
<description>為dev隊列指定管理員</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.acl_submit_applications</name>
<value>admin</value>
<description>限定哪些Linux用戶/用戶組可以向dev隊列提交應(yīng)用程序</description>
</property>
</configuration>