2013-05-02 18 views
0

我想要改變每個作業的減少插槽的集羣容量。也就是說, 最初我爲任務跟蹤器配置了8個reduce插槽,因此對於具有100個reduce任務的作業,會有(8 * datanode編號)減少同時運行的任務。但是,對於一個特定的工作,我想這個數字減少了一半,所以我所做的:設置特定的M/R作業的減速機容量

conf.set("mapred.tasktracker.reduce.tasks.maximum", "4"); 
... 
Job job = new Job(conf, ...) 

並在Web UI,我可以看到這個工作的薪水,最大削減任務,正是在4,如我設置。然而,hadoop仍然爲這項工作啓動每個datanode的8個reducer ......看起來我不能像這樣改變reduce容量。

我問過Hadoop郵件列表,有人建議我可以使用容量調度程序,我該怎麼辦?

我正在使用hadoop 1.0.2。

謝謝。

+0

爲什麼要減少減速器的數量? – 2013-05-02 13:28:15

回答

1

Capacity Scheduler允許您指定MapReduce作業的資源限制。基本上你必須定義你的工作正在排定的隊列。每個隊列可以有不同的配置。

就您的問題而言,使用容量調度程序時,可以指定每個任務的RAM限制,以限制給定任務需要多少個時隙。根據documentation,目前基於內存的調度只在Linux平臺上受支持。

有關此主題的更多信息,請參閱:http://wiki.apache.org/hadoop/LimitingTaskSlotUsagehttp://hadoop.apache.org/docs/stable/capacity_scheduler.html