为什么组合器输入记录的数量多于地图的输出数量?

时间:2012-08-29 06:21:29

标签: hadoop mapreduce combiners

组合器在Mapper之后和Reducer之前运行,它将接收Mapper实例在给定节点上发出的所有数据作为输入。然后它将输出发送到Reducers。因此,组合器输入的记录应小于地图输出。

12/08/29 13:38:49 INFO mapred.JobClient:   Map-Reduce Framework

12/08/29 13:38:49 INFO mapred.JobClient:     Reduce input groups=8649

12/08/29 13:38:49 INFO mapred.JobClient:     Map output materialized bytes=306210

12/08/29 13:38:49 INFO mapred.JobClient:     Combine output records=859412

12/08/29 13:38:49 INFO mapred.JobClient:     Map input records=457272

12/08/29 13:38:49 INFO mapred.JobClient:     Reduce shuffle bytes=0

12/08/29 13:38:49 INFO mapred.JobClient:     Reduce output records=8649

12/08/29 13:38:49 INFO mapred.JobClient:     Spilled Records=1632334

12/08/29 13:38:49 INFO mapred.JobClient:     Map output bytes=331837344

12/08/29 13:38:49 INFO mapred.JobClient:     **Combine input records=26154506**

12/08/29 13:38:49 INFO mapred.JobClient:     **Map output records=25312392**

12/08/29 13:38:49 INFO mapred.JobClient:     SPLIT_RAW_BYTES=218

12/08/29 13:38:49 INFO mapred.JobClient:     Reduce input records=17298

1 个答案:

答案 0 :(得分:4)

我认为这是因为Combiner也可以在之前的Combine步骤的输出上运行,因为您的Combiner运行并生成新记录,然后将其与Mappers中的其他记录结合使用。也可能是在合并器运行之后计算地图输出记录,这意味着记录较少,因为有些记录已合并。