【Yarn】配置容量调度器

目录

队列比例

修改capacity-scheduler.xml配置文件

将新的配置同步到集群所有节点,重启Yarn

提交任务

查看任务

yarn-site.xml


  • 队列比例

root

├── prod   生产环境    40 %

└── dev   开发环境     60 %

├── mapreduce    MR开发    50%

    └── spark          Spark开发  50%

 

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


 
    yarn.scheduler.capacity.root.queues
    prod,dev
  
 
    yarn.scheduler.capacity.root.dev.queues
    mapreduce,spark
  
    
    yarn.scheduler.capacity.root.prod.capacity
    40
  
    
    yarn.scheduler.capacity.root.dev.capacity
    60
  
    
    yarn.scheduler.capacity.root.dev.maximum-capacity
    75
  
  
    yarn.scheduler.capacity.root.dev.mapreduce.capacity
    50
  
   
    yarn.scheduler.capacity.root.dev.spark.capacity
    50
  

我们可以看到,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】配置容量调度器_第1张图片

 

  • yarn-site.xml



       yarn.scheduler.fair.allow-undeclared-pools
       true

 


       yarn.scheduler.fair.user-as-default-queue
       true

 

你可能感兴趣的:(Yarn)