为什么在hadoop中reduce\u input\u records小于combine\u output\u records?

xe55xuns  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(477)

我用组合器运行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 最后一个电话的结果是什么?为什么它不等于减缩器消耗的记录数?
谢谢你的帮助!

b1zrtrql

b1zrtrql1#

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

Map output records=61622097    ->  Reduce input records=32020

相关问题