众所周知,在地图任务中接收单词并在WordCount示例中总结reduce任务中的那些“one”。
我尝试添加System.out.println以显示wordcount示例代码如何在map / reduce任务中运行。当我在jobtracker的网页上读到stdout日志时,我注意到在map任务完成之前执行了一些“总结”工作,并在reduce任务中重做“总结”这些总和。
即使它不影响wordcount示例中的结果,但在其他工作中可能会遇到麻烦。(做同样的工作两次!)
我修改了“mapred.reduce.slowstart.completed.maps”,但它不起作用。
是否有关于此问题的配置?
答案 0 :(得分:0)
MapReduce和Hadoop的一个优点是节点能够在给定足够信息时独立行动。在Mappers和Reducers的情况下,即使没有首先完成所有Mappers,也可以启动Reducer。
这项工作不会重复!
可以通过使用选项“mapred.reduce.slowstart.completed.maps”或使用新API“mapreduce.job.reduce.slowstart.completedmaps”来设置可以安排Reducers之前需要完成的Mapper百分比。
如果你有合并器,那么故事类似,不会重复工作。但是,由于组合器是在Mapper节点上运行的优化,因此在执行操作时可能会调用几个组合器(很可能是总和,或某种类型的合并)。因此,对于组合器,即使您已经告知您的Reducers不要启动,直到100%的Mappers完成,也可能会发生多个组合操作。