Почему в 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