Java Hadoop在映射任务完成之前减少

Java Hadoop在映射任务完成之前减少,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,众所周知,在WordCount示例中,在map任务中接收单词,并在reduce任务中汇总这些“一” 我已经尝试添加System.out.println来显示wordcount示例代码如何在map/reduce任务中运行。当我在jobtracker的网页上阅读标准日志时,我注意到在map任务完成之前执行了一些“总结”工作,并在reduce任务中对map任务中的总结重新进行“总结” 即使它不会影响wordcount示例中的结果,但在其他工作中可能会遇到麻烦。(做两次相同的工作!) 我修改了“mapr

众所周知,在WordCount示例中,在map任务中接收单词,并在reduce任务中汇总这些“一”

我已经尝试添加System.out.println来显示wordcount示例代码如何在map/reduce任务中运行。当我在jobtracker的网页上阅读标准日志时,我注意到在map任务完成之前执行了一些“总结”工作,并在reduce任务中对map任务中的总结重新进行“总结”

即使它不会影响wordcount示例中的结果,但在其他工作中可能会遇到麻烦。(做两次相同的工作!)

我修改了“mapred.reduce.slowstart.completed.maps”,但它不起作用


关于这个问题有什么配置吗?

MapReduce和Hadoop的优点之一是,当提供足够的信息时,节点能够独立地进行操作。在映射器和减速器的情况下,即使所有映射器未首先完成,减速器也可以启动

工作不会重复

可以使用“mapred.reduce.slowstart.completed.maps”选项或使用新API设置在调度还原程序之前需要完成的映射程序的百分比


如果你有合并器,那么故事是相似的,没有工作将被复制。但是,由于组合器是在映射器节点上运行的优化,因此在执行操作时可能会调用几个组合器(很可能是求和或某种类型的合并)。因此,使用组合器时,即使您告诉还原器在100%的映射器完成之前不要启动,也可能会出现多个组合操作。

虽然我不完全理解您的问题,但我建议您阅读本教程:。也许你说的是合路器,也许你也用reducer类作为合路器?合并器在映射器之后执行多次,用于将映射器的中间结果还原为还原器。是的!答案是组合器。有一行“job.setCombinerClass”我没有仔细考虑过。谢谢大家!