如何在hadoop 0.20中设置map任务的数量?

时间:2011-09-19 21:48:28

标签: java hadoop mapreduce

我正在尝试设置在hadoop 0.20环境中运行的地图任务的数量。

我正在使用旧的api。

以下是我迄今为止尝试过的选项:

    conf.set("mapred.tasktracker.map.tasks.maximum", "5");
    conf.set("mapred.map.tasks", "10");
    conf.set("mapred.map.tasksperslot", "5");
    conf.set("mapred.tasktracker.map", "5");
    conf.set("mapred.map.parallel.copies", "5");

所有这些开启后,并行运行的地图任务数量仍为2。

设置为将并行运行的映射器数量设置为5的正确选项是什么?

2 个答案:

答案 0 :(得分:9)

TaskTracker.java

  

maxCurrentMapTasks = conf.getInt(“mapred.tasktracker.map.tasks.maximum”,2);

根据"Hadoop : The Definitive Guide"。因此,在客户端设置属性是没有用的。您需要在配置文件中设置相同的内容。

  

请注意,在客户端配置中设置某些属性无效。对于   例如,如果在您的作业提交中设置了mapred.tasktracker.map.tasks.maximum   期望它会改变运行你的工作的任务工作人员的任务槽的数量,然后你会感到失望,因为这个属性只有荣幸   如果在tasktracker的mapred-site.html文件中设置。通常,您可以告诉组件   其中一个属性应该由其名称设置,所以mapred.task.tracker.map.tasks.maximum以mapred.tasktracker开头的事实为你提供了一个线索,它可以   仅为tasktracker守护程序设置。然而,这不是一个严格的规则,所以   在某些情况下,您可能需要诉诸反复试验,甚至阅读来源。

答案 1 :(得分:0)

为了及时了解Hadoop API的最新变化,我列出了已弃用属性的新替代品。

mapred.tasktracker.map.tasks.maximum => mapreduce.tasktracker.map.tasks.maximum
mapred.map.tasks => mapreduce.job.maps

对于已弃用的API&amp ;;请查看此link新API

但我更喜欢将地图任务的数量决定为框架本身,以便更好地完成工作。