2015-02-21 5 views
0

Я изучаю Hadoop.
Я запускаю Hadoop на одном узле.
По моим сведениям, редуктор работает после завершения Mapper (и это имеет смысл также).
Но когда я запустил задание MapReduce в файле размером 200 МБ, Reducer начал работу до завершения Mapper. Я не использовал комбайнер.
Может ли кто-нибудь объяснить, почему?MapReduce последовательность выполнения на одном узле

enter image description here

enter image description here

ответ

1

Уменьшить фазы включает в себя копирование и слияние вывод данных из мапперов к редуктору.

Поскольку копирование и слияние промежуточных выходов не требует барьера (вам не нужно ждать, пока все картографы завершатся), это то, что делает редуктор во время работы картографа.

+0

Как эта концепция объединения и слияния до завершения работы Mapper работает в многоузловом кластерном сценарии? Все значения, относящиеся к одному ключу, должны быть переданы только одному редуктору. –

+0

@MitalAwachat - это задача разделителя, по умолчанию хеширует ваш ключ, поэтому он гарантированно приземляется в том же разделе редуктора. –

+0

Также стоит отметить, что вызовы reduce() не происходят до тех пор, пока фаза уменьшения не достигнет 66% (т. Е. Когда тасование и сортировка завершены). –

Смежные вопросы