0

我使用组合器运行 WordCount 的示例。下面是运行结果:

13/10/07 22:32:38 INFO mapred.JobClient:     Map input records=20111076
13/10/07 22:32:38 INFO mapred.JobClient:     Reduce shuffle bytes=467280
13/10/07 22:32:38 INFO mapred.JobClient:     Spilled Records=541137
13/10/07 22:32:38 INFO mapred.JobClient:     Map output bytes=632287974
13/10/07 22:32:38 INFO mapred.JobClient:     Total committed heap usage (bytes)=4605870080
13/10/07 22:32:38 INFO mapred.JobClient:     Combine input records=62004735
13/10/07 22:32:38 INFO mapred.JobClient:     SPLIT_RAW_BYTES=2280
13/10/07 22:32:38 INFO mapred.JobClient:     Reduce input records=32020
13/10/07 22:32:38 INFO mapred.JobClient:     Reduce input groups=1601
13/10/07 22:32:38 INFO mapred.JobClient:     Combine output records=414658
13/10/07 22:32:38 INFO mapred.JobClient:     Reduce output records=1601
13/10/07 22:32:38 INFO mapred.JobClient:     Map output records=61622097

我有两个问题,为什么map_output_records小于combine_input_records?为什么reduce_input_records比 少得多combine_output_records?我知道组合器可能会被多次调用,但这个数字不应该combine_output_records是最后一次调用的结果吗?为什么它不等于reducers 消耗的记录数?

谢谢你的帮助!

4

1 回答 1

0

组合器并不总是被调用,你实际上无法控制它是否被调用(或调用多少次),这是由框架决定的。这可能解释了这些数字。不过,组合器似乎做得很好:

Map output records=61622097    ->  Reduce input records=32020
于 2013-10-09T08:07:30.033 回答