4
0

Capacity Scheduler-扩展

2026-08-24

三种调度模型

Capacity Scheduler

  • CDH版本默认使用Fair Scheduler公平调度器

  • 观察yarn web界面;使用的是fair scheduler

  • 若CDH版本hadoop,要使用capacity scheduler,需要修改yarn-site.xml文件;node01上修改如下属性

    <property>
    	<name>yarn.resourcemanager.scheduler.class</name>
    	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
    
  • 并分发到各节点

    [hadoop@node01 hadoop]$ pwd
    /kkb/install/hadoop-2.6.0-cdh5.14.2/etc/hadoop
    [hadoop@node01 hadoop]$ scp yarn-site.xml node02:$PWD
    [hadoop@node01 hadoop]$ scp yarn-site.xml node03:$PWD
    
  • 重启yarn

    [hadoop@node01 hadoop]$ stop-yarn.sh
    [hadoop@node01 hadoop]$ start-yarn.sh
    
  • 而对于Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO调度器时的时间

  • 如何配置容量调度器

    • 队列层级结构如下

      root 
      ├── prod 
      └── dev 
      	├── spark 
      	└── hdp
      
    • 主节点上,将$HADOOP_HOME/etc/hadoop/中的对应capacity-scheduler.xml配置文件备份到其它目录

    • 目录$HADOOP_HOME/etc/hadoop/中建立一个新的capacity-scheduler.xml;内容如下

      <?xml version="1.0" encoding="utf-8"?>
      
      <configuration> 
        <property> 
          <name>yarn.scheduler.capacity.root.queues</name>  
          <value>prod,dev</value> 
        </property>  
        <property> 
          <name>yarn.scheduler.capacity.root.dev.queues</name>  
          <value>hdp,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.hdp.capacity</name>  
          <value>50</value> 
        </property>  
        <property> 
          <name>yarn.scheduler.capacity.root.dev.spark.capacity</name>  
          <value>50</value> 
        </property> 
      </configuration>
      
    • 将此xml文件,远程拷贝到相同目录下

    • 将应用放置在哪个队列中,取决于应用本身。

      • 例如MR,可以通过设置属性mapreduce.job.queuename指定相应队列。以WordCount为例,如下
    • 如果指定的队列不存在,则发生错误。

      • 如果不指定,默认使用"default"队列,如下图

  • 动态更新配置:容量调度器的配置在运行时,可以随时重新加载
    • 调整资源分配参数;你需要编辑conf/capacity-scheduler.xml 并在yarn主节点运行命令让配置文件生效
    • 另外,除非重启resourcemanager,否则队列只能添加不能删除;
    • 但允许关闭
[hadoop@node01 hadoop]$ yarn rmadmin -refreshQueues
  • 程序打包,提交集群运行
[hadoop@node01 target]$ hadoop jar com.kaikeba.hadoop-1.0-SNAPSHOT.jar com.kaikeba.hadoop.wordcount.WordCountMain /README.txt /w24

Capacity Scheduler-扩展
/archives/capacity-scheduler
作者
小怪兽
发布于
2026-08-24
许可协议
CC BY-NC-SA 4.0