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

前提条件

已创建Hadoop集群,详情请参见创建集群

注意事项

开启集群的Capacity Scheduler资源队列后,YARN组件配置页面中的capacity-scheduler配置区域将处于冻结状态,相关已有配置将会同步到集群资源管理页面中。如果需要继续在YARN服务的配置页面通过XML的方式设置集群资源,则需先在集群资源管理中关闭YARN资源队列。

配置Capacity Scheduler

  1. 进入集群资源管理页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏中,单击集群资源管理
  2. 开启Capacity Scheduler。
    1. 集群资源管理页面,打开开启YARN资源队列开关。
    2. 单击Capacity Scheduler
      说明 首次使用资源管理功能时,资源队列类型默认为Capacity Scheduler
    3. 单击保存
  3. 集群资源管理页面,单击上方的资源队列配置
  4. 队列配置区域,配置队列信息。
    • 单击编辑,可以更改资源队列。
    • 单击更多 > 创建子队列,可以创建子队列。

      default队列无法创建子队列。

    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. 重启服务。
    1. 集群资源管理页面,选择操作 > 重启ResourceManager
    2. 执行集群操作对话框中,设置相关参数,单击确定
    3. 确认对话框中,单击确定
      待提示操作成功时,表示切换调度器类型成功。

关闭资源队列

说明 关闭资源队列后,不能在资源管理页面进行任何操作,如果您需要再次配置资源,可以开启资源队列或者在YARN组件配置页面中的capacity-scheduler配置区域进行操作 。
  1. 在集群资源管理页面,关闭开启YARN资源队列开关。
  2. 关闭资源队列对话框中,单击确定

提交作业

  • 提交作业时,如果不指定提交队列,会默认提交到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`