我正在尝试设置在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的正确选项是什么?
答案 0 :(得分:9)
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
但我更喜欢将地图任务的数量决定为框架本身,以便更好地完成工作。