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

Ars*_*ray 5 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");
Run Code Online (Sandbox Code Playgroud)

随着所有这些,平行运行的地图任务的数量仍然是2.

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

Pra*_*ati 9

TaskTracker.java中

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

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

请注意,在客户端配置中设置某些属性时无效.例如,如果在你的作业提交中你设置了mapred.tasktracker.map.tasks.maximum,期望它会改变运行你的作业的tasktrackers的任务槽的数量,那么你会感到失望,因为这个属性只是如果在tasktracker的mapred-site.html文件中设置,则很荣幸.通常,您可以通过其名称告诉组件应该在哪里设置属性,因此mapred.task.tracker.map.tasks.maximum以mapred.tasktracker开头的事实为您提供了一个线索,即它只能为tasktracker守护进程.然而,这不是一个严格的规则,因此在某些情况下,您可能需要尝试反复试验,甚至阅读源代码.