Почему в Hadoop Reduce_input_records меньше, чем comb_output_records?

Я запускаю пример 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 быть последним звонком? Почему это не равно количеству записей, которые потребляют редукторы?

Спасибо за любую помощь!

1 ответ

Комбинатор не всегда вызывается, у вас нет никакого контроля над тем, вызывается он или нет (или сколько раз), это решает сама структура. Это, вероятно, объясняет цифры. Кажется, комбинатор проделал большую работу, хотя:

Map output records=61622097    ->  Reduce input records=32020
Другие вопросы по тегам