Hadoop的Capacity Scheduler - 设置多个队列

时间:2013-01-04 04:51:56

标签: hadoop mapreduce

我尝试设置2个队列 - queue1,queue2。 我将这些队列的名称添加到mapred-site.xml

    <property>
        <name>mapred.queue.names</name>
        <value>queue1,queue2</value>
    </property> 

我配置了CapacityScheduler.xml,如下所示。

    <?xml version="1.0"?>
    <configuration>
         <property>
            <name>mapred.capacity-scheduler.maximum-system-jobs</name>
            <value>3000</value>   
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue1.capacity</name>
            <value>100</value>   
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.capacity</name>
            <value>100</value>   
         </property>

         <property>
            <name>mapred.capacity-scheduler.queue.queue1.maximum-capacity</name>
            <value>-1</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.maximum-capacity</name>
            <value>-1</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.queue.queue1.supports-priority</name>
            <value>false</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.supports-priority</name>
            <value>false</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.queue.queue1.minimum-user-limit-percent</name>
            <value>100</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.minimum-user-limit-percent</name>
            <value>100</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.queue.queue1.user-limit-factor</name>
            <value>1</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.user-limit-factor</name>
            <value>1</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.queue.queue1.maximum-initialized-active-tasks</name>
            <value>200000</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.maximum-initialized-active-tasks</name>
            <value>200000</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.queue.queue1.maximum-initialized-active-tasks-per-user</name>
            <value>100000</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.maximum-initialized-active-tasks-per-user</name>
            <value>100000</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.queue.queue1.init-accept-jobs-factor</name>
            <value>10</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.queue.queue2.init-accept-jobs-factor</name>
            <value>10</value>
         </property>

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

         <property>
            <name>mapred.capacity-scheduler.default-minimum-user-limit-percent</name>
            <value>100</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.default-user-limit-factor</name>
            <value>1</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.default-maximum-active-tasks-per-queue</name>
            <value>200000</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.default-maximum-active-tasks-per-user</name>
            <value>100000</value>
         </property>

         <property>
            <name>mapred.capacity-scheduler.default-init-accept-jobs-factor</name>
            <value>10</value>
         </property>

         <!-- Capacity scheduler Job Initialization configuration parameters -->
         <property>
            <name>mapred.capacity-scheduler.init-poll-interval</name>
            <value>5000</value>
         </property>
         <property>
            <name>mapred.capacity-scheduler.init-worker-threads</name>
            <value>5</value>
         </property>
    </configuration>

bin / start-all.sh启动以下服务。

    17083 DataNode
    17557 TaskTracker
    17373 JobTracker
    16902 NameNode
    17279 SecondaryNameNode
    17703 Jps

我可以在

中查看Jobtracker的WEB UI
    http://localhost:50030/ 

Tasktracker的WEB UI

    http://localhost:50060/

显示“无法连接”。但几秒钟后,jobtracker和tasktracker关闭了。终端上的jps命令只显示

    17083 DataNode
    16902 NameNode
    17279 SecondaryNameNode
    17703 Jps

可能是什么解决方案。

2 个答案:

答案 0 :(得分:2)

两个队列的容量都是100,这使容量调度程序认为有几个队列,每个队列的容量都是100%。我建议你将设置更改为:

<?xml version="1.0"?>
<configuration>
     <property>
        <name>mapred.capacity-scheduler.maximum-system-jobs</name>
        <value>3000</value>   
     </property>
     <property>
        <name>mapred.capacity-scheduler.queue.queue1.capacity</name>
        <value>80</value> <!-- change here -->
     </property>
     <property>
        <name>mapred.capacity-scheduler.queue.queue2.capacity</name>
        <value>20</value> <!-- change here -->   
     </property>

     <property>
        <name>mapred.capacity-scheduler.queue.queue1.maximum-capacity</name>
        <value>-1</value>
     </property>
     <property>
        <name>mapred.capacity-scheduler.queue.queue2.maximum-capacity</name>
        <value>-1</value>
     </property>

答案 1 :(得分:0)

所有队列的总和必须始终且只有100(即100%),你可以分别拥有两个100%和0%的队列 - 这是有效的。

此外,我认为总是有一个&#34;默认&#34;队列,至少有一些分配。如果您没有默认情况下没有指定队列名称,我也不知道调度程序会做什么。