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

2 つ質問map_output_recordsがありcombine_input_recordsます。そして、なぜ はreduce_input_recordsよりもはるかに少ないのcombine_output_recordsですか? コンバイナが数回呼び出される可能性があることはわかっていcombine_output_recordsますが、最後の呼び出しの結果ではないはずですか? レデューサーが消費するレコードの数と等しくないのはなぜですか?

助けてくれてありがとう!

4

1 に答える 1

0

コンバイナーは常に呼び出されるわけではありません。実際には、呼び出されるかどうか (または何回呼び出されるか) を制御することはできません。これは、フレームワークが決定します。これはおそらく数字を説明しています。ただし、コンバイナーは素晴らしい仕事をしたようです。

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