【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>

 

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