如何设置hadoop 0.20的map任务数



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

我正在使用旧的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");

在所有这些都打开的情况下,并行运行的map任务数量保持2。

什么是适当的选项设置,以获得并行运行映射器的数量高达5?

在TaskTracker.java

maxCurrentMapTasks = conf.getInt("mapred.tasktracker.map.tasks. "

最大",2);

根据"Hadoop:权威指南"。因此,在客户端设置属性是没有用的。

请在配置文件中进行相同设置。

请注意,在客户端配置中设置某些属性时没有效果。为例如,如果在您的作业提交中设置了mapred.tasktracker.map.tasks.maximum如果期望它会改变运行作业的任务跟踪器的任务槽数,那么您将会失望,因为这个属性只被执行如果在任务跟踪器的mapred-site.html文件中设置。一般来说,您可以告诉组件其中属性应该按其名称设置,因此mapred.task.tracker.map.tasks.maximum从mapred. tasks.max开始。Tasktracker会给你一个提示仅对tasktracker守护进程设置。这不是一个硬性规定,但是,所以在在某些情况下,您可能需要尝试和错误,甚至阅读源代码。

为了使答案与Hadoop API的变化保持同步,我列出了已弃用属性的新替换

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

请查看此链接以获取已弃用的API &新的API

但是我更喜欢将map任务的数量决定为框架本身,以获得更好的工作性能。

相关内容

  • 没有找到相关文章

最新更新