Capacity Scheduler称为容量调度器,是Apache YARN内置的调度器,E-MapReduce YARN使用Capacity Scheduler作为默认调度器。Capacity Scheduler是一种多租户、分层级的资源调度器,调度器中的子队列是通过设置Capacity来划分各个子队列的使用情况。

开启Capacity Scheduler

注意 开启集群资源队列后,YARN组件配置中的capacity-scheduler配置区域将处于冻结状态,相关已有配置将会同步到集群资源管理页面中。如果需要继续在YARN服务的配置页面通过XML的方式设置集群资源,则需先在集群资源管理中关闭YARN资源队列。
  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域(Region)和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 在左侧导航栏中,单击集群资源管理
  6. 集群资源管理页面,打开开启YARN资源队列开关。
  7. 单击保存
    默认开启Capacity Scheduler。

配置Capacity Scheduler

开启YARN资源队列后,可以执行以下步骤配置Capacity Scheduler。

  1. 集群资源管理页面,单击上方的资源队列配置
  2. 队列配置区域,配置队列信息。
    • 单击编辑,可以更改资源队列。
    • 单击更多 > 创建子队列,可以创建子队列。
    root为一级队列,是所有队列的父队列,管理YARN的所有资源,默认root下只有default队列。
    注意
    • 同一个父队列下的同一级别的子队列Capacity之和必须为100。例如,root下有两个子队列default和department,两个子队列的Capacity求和必须为100,department下又设置了market和dev,这里department下两个子队列之和必须也是100。
    • 在程序运行时,如果不指定提交队列,默认会提交到default队列。
    • 新建root下一级队列无需重启ResourceManager,直接单击部署生效即可。
    • 新建和设置root下的二级队列需要重启ResourceManager。
    • 修改队列名称需要重启ResourceManager。

切换调度器类型

开启YARN资源队列后,可以执行以下步骤切换调度器类型。

  1. 集群资源管理页面,单击上方的切换调度器
  2. 单击需要切换的资源队列类型。
  3. 单击保存
  4. 单击操作 > 重启ResourceManager
  5. 执行集群操作对话框中,设置相关参数,单击确定
  6. 确认对话框中,单击确定
    待提示操作成功时,表示切换调度器类型成功。

提交作业

  • 提交作业时,如果不指定提交队列,会默认提交到default队列。
  • 指定队列时应选择子节点,不能将任务提交到父队列。
  • 提交到指定队列时需通过mapreduce.job.queuename来指定队列,示例如下。
    `hadoop jar /usr/lib/hadoop-current/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar pi -Dmapreduce.job.queuename=test  2 2`