【Yarn】配置容量調度器

目錄

隊列比例

修改capacity-scheduler.xml配置文件

將新的配置同步到集羣所有節點,重啓Yarn

提交任務

查看任務

yarn-site.xml


  • 隊列比例

root

├── prod   生產環境    40 %

└── dev   開發環境     60 %

├── mapreduce    MR開發    50%

    └── spark          Spark開發  50%

 

  • 修改capacity-scheduler.xml配置文件

<configuration>
 <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>prod,dev</value>
  </property>
 <property>
    <name>yarn.scheduler.capacity.root.dev.queues</name>
    <value>mapreduce,spark</value>
  </property>
    <property>
    <name>yarn.scheduler.capacity.root.prod.capacity</name>
    <value>40</value>
  </property>
    <property>
    <name>yarn.scheduler.capacity.root.dev.capacity</name>
    <value>60</value>
  </property>
    <property>
    <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
    <value>75</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.mapreduce.capacity</name>
    <value>50</value>
  </property>
   <property>
    <name>yarn.scheduler.capacity.root.dev.spark.capacity</name>
    <value>50</value>
  </property>
</configuration>

我們可以看到,dev隊列又被分成了mapreduce和spark兩個相同容量的子隊列。dev的maximum-capacity屬性被設置成了75%,所以即使prod隊列完全空閒dev也不會佔用全部集羣資源,也就是說,prod隊列仍有25%的可用資源用來應急。我們注意到,mapreduce和spark兩個隊列沒有設置maximum-capacity屬性,也就是說mapreduce或spark隊列中的job可能會用到整個dev隊列的所有資源(最多爲集羣的75%)。而類似的,prod由於沒有設置maximum-capacity屬性,它有可能會佔用集羣全部資源。

關於隊列的設置,這取決於我們具體的應用。比如,在MapReduce中,我們可以通過mapreduce.job.queuename屬性指定要用的隊列。如果隊列不存在,我們在提交任務時就會收到錯誤。如果我們沒有定義任何隊列,所有的應用將會放在一個default隊列中。

注意:對於Capacity調度器,我們的隊列名必須是隊列樹中的最後一部分,如果我們使用隊列樹則不會被識別。比如,在上面配置中,我們使用prod和mapreduce作爲隊列名是可以的,但是如果我們用root.dev.mapreduce或者dev. mapreduce是無效的。

 

  • 將新的配置同步到集羣所有節點,重啓Yarn

同步:

scp capacity-scheduler.xml  node02:$PWD
scp capacity-scheduler.xml  node03:$PWD

 

重啓Yarn:

stop-yarn.sh
start-yarn.sh

 

  • 提交任務

通過以下命令指定任務提交到的對列:

mapreduce.job.queuename=對列名   

mapreduce.job.queuename=mapreduce

 

提交:

hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi -D mapreduce.job.queuename=mapreduce 10 10

 

  • 查看任務

http://192.168.100.201:8088/cluster/scheduler

 

  • yarn-site.xml

<!-- 如果提交一個任務沒有到任何的隊列,是否允許創建一個新的隊列,默認爲true  -->
<property>
       <name>yarn.scheduler.fair.allow-undeclared-pools</name>
       <value>true</value>
</property>
 
<!—是否提交到默認隊列 ,以用戶名爲默認對列 -->
<property>
       <name>yarn.scheduler.fair.user-as-default-queue</name>
       <value>true</value>
</property>

 

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