使用CapacityTaskScheduler

本文介绍如何在Hadoop 0.19.2中配置CapacityTaskScheduler,包括拷贝jar文件、修改配置文件及重启步骤,并展示了配置后的队列详情。

Hadoop的版本为0.19.2

关于这个调度的详细介绍,可以参考:http://hadoop.apache.org/common/docs/r0.19.2/capacity_scheduler.html

本文只介绍如何搭建一个CapacityTaskScheduler的系统。

在Master机器上执行如下操作:

1 将contrib/capacity-scheduler/hadoop-0.19.2-capacity-scheduler.jar文件拷贝到lib包下面(注意,如果有FairScheduler存在,请先删除这个包)。

2 添加如下内容到hadoop-site.xml文件中:

<property>
  <name>mapred.jobtracker.taskScheduler</name>
  <value>org.apache.hadoop.mapred.CapacityTaskScheduler</value>
</property>

<property>
  <name>mapred.queue.names</name>
  <value>logQueue1,logQueue2,algQueue1,algQueue2,default</value>
</property>

3 在capacity-scheduler.xml文件中填写如下内容:

<?xml version="1.0"?>
<configuration>

    <property>
        <name>mapred.capacity-scheduler.queue.logQueue1.guaranteed-capacity</name>
        <value>20</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.logQueue1.reclaim-time-limit</name>
        <value>5</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.logQueue1.supports-priority</name>
        <value>true</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.logQueue2.guaranteed-capacity</name>
        <value>20</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.logQueue2.reclaim-time-limit</name>
        <value>5</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.logQueue2.supports-priority</name>
        <value>true</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.algQueue1.guaranteed-capacity</name>
        <value>20</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.algQueue1.reclaim-time-limit</name>
        <value>5</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.algQueue1.supports-priority</name>
        <value>true</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.algQueue2.guaranteed-capacity</name>
        <value>20</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.algQueue2.reclaim-time-limit</name>
        <value>5</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.algQueue2.supports-priority</name>
        <value>true</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.default.guaranteed-capacity</name>
        <value>20</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.default.reclaim-time-limit</name>
        <value>5</value>
    </property>

    <property>
        <name>mapred.capacity-scheduler.queue.default.supports-priority</name>
        <value>true</value>
    </property>

</configuration>

4 重启Hadoop

5 在Job的代码中,设置Job属于的队列:

conf.setQueueName(“QueueName”);

经过以上五步操作以后,我们的调度就配置起来了。

通过JobTracker的web界面看到如下的情况:

Scheduling Information

Queue Name
Scheduling Information

algQueue1
Guaranteed Capacity (%) : 20.0
Guaranteed Capacity Maps : 7
Guaranteed Capacity Reduces : 7
User Limit : 100
Reclaim Time limit : 5
Number of Running Maps : 0
Number of Running Reduces : 0
Number of Waiting Maps : 0
Number of Waiting Reduces : 0
Priority Supported : YES

algQueue2
Guaranteed Capacity (%) : 20.0
Guaranteed Capacity Maps : 7
Guaranteed Capacity Reduces : 7
User Limit : 100
Reclaim Time limit : 5
Number of Running Maps : 0
Number of Running Reduces : 0
Number of Waiting Maps : 0
Number of Waiting Reduces : 0
Priority Supported : YES

default
Guaranteed Capacity (%) : 20.0
Guaranteed Capacity Maps : 7
Guaranteed Capacity Reduces : 7
User Limit : 100
Reclaim Time limit : 0
Number of Running Maps : 0
Number of Running Reduces : 0
Number of Waiting Maps : 0
Number of Waiting Reduces : 0
Priority Supported : YES

logQueue1
Guaranteed Capacity (%) : 20.0
Guaranteed Capacity Maps : 7
Guaranteed Capacity Reduces : 7
User Limit : 100
Reclaim Time limit : 5
Number of Running Maps : 0
Number of Running Reduces : 0
Number of Waiting Maps : 0
Number of Waiting Reduces : 0
Priority Supported : YES

logQueue2
Guaranteed Capacity (%) : 20.0
Guaranteed Capacity Maps : 7
Guaranteed Capacity Reduces : 7
User Limit : 100
Reclaim Time limit : 5
Number of Running Maps : 0
Number of Running Reduces : 0
Number of Waiting Maps : 0
Number of Waiting Reduces : 0
Priority Supported : YES

刷新 Hadoop 队列的配置或状态主要涉及 YARN 容量调度器(Capacity Scheduler)的相关操作。在修改了队列配置文件(如 `capacity-scheduler.xml`)后,需要通过命令刷新队列,使新的配置生效。 刷新队列的命令如下: ```bash ${HADOOP_HOME}/bin/yarn rmadmin -refreshQueues ``` 如果 `HADOOP_HOME/bin` 已经添加到系统路径中,也可以直接使用以下命令: ```bash yarn rmadmin -refreshQueues ``` 需要注意的是,该命令必须在 YARN 集群的主节点上执行,并且命令末尾的 `s` 不能省略,否则会导致命令执行失败[^3]。 此外,在配置文件中定义队列时,可以设置访问控制、资源配额等参数。例如,通过以下配置可以控制用户提交到队列的任务的最大优先级: ```xml <property> <name>yarn.scheduler.capacity.root.default.acl_application_max_priority</name> <value>*</value> </property> ``` 该配置允许所有用户提交任务到 `default` 队列,并使用任意优先级。类似的配置可以应用于其他队列,如 `xtask`、`ea`、`ea_dev`、`ea_prod` 等[^4]。 在刷新队列之前,请确保已经正确配置了 `capacity-scheduler.xml` 文件,并且所有节点的配置保持一致。如果使用了其他调度器(如 `CapacityTaskScheduler`),还需要检查 `mapred-site.xml` 中的调度器配置是否正确。例如: ```xml <property> <name>mapred.jobtracker.taskScheduler</name> <value>org.apache.hadoop.mapred.CapacityTaskScheduler</value> </property> <property> <name>mapred.queue.names</name> <value>default,hive,pig</value> </property> ``` 上述配置指定了使用 `CapacityTaskScheduler`,并定义了三个可用队列:`default`、`hive` 和 `pig`[^2]。 刷新队列后,可以通过 YARN 的 Web UI 或相关命令查看队列状态,确保配置更新已生效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值