我正在尝试设置在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任务的数量决定为框架本身,以获得更好的工作性能。