Карта Уменьшите поток в Hadoop

Я изучаю Hadoop по книге Hadoop in Practice, и, читая главу 1, я наткнулся на эту диаграмму:

введите описание изображения здесь

Из документации Hadoop :( http://hadoop.apache.org/docs/current2/api/org/apache/hadoop/mapred/Reducer.html)

1. перемешать

Reducer - это входной сгруппированный выход Mapper. На этом этапе фреймворк для каждого редуктора выбирает соответствующий раздел вывода всех преобразователей через HTTP.

2. Сортировка

На этом этапе фреймворк группирует входные данные Reducer по ключам (поскольку разные Mappers могут выводить один и тот же ключ). Фазы перетасовки и сортировки происходят одновременно, то есть во время выборки выходных данных они объединяются.

Хотя я понимаю, что shuffle и sorting происходят одновременно, мне непонятно, как фреймворк решает, какой reducer какой mapper вывод получить. Из документации кажется, что у каждого reducer есть способ узнать, какой mapoutput собирать, но я не могу понять, как это сделать.

Итак, мой вопрос: учитывая вывод картографов выше, конечный результат всегда один и тот же для каждого редуктора? Если да, то каковы шаги для достижения этого результата?

Спасибо за любые разъяснения!


person Fernando    schedule 04.01.2014    source источник
comment
возможный дубликат Hadoop - как редуктор получает данные? - см. также: stackoverflow.com/questions/20757318/ и hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduce/   -  person Brian Roach    schedule 04.01.2014


Ответы (1)


Это Partitioner решает, как для распределения вывода картографов по разным редукторам.

Partitioner управляет разделением ключей промежуточных выходов карты. Ключ (или подмножество ключа) используется для получения раздела, обычно с помощью хэш-функции. Общее количество разделов равно количеству сокращенных задач для задания. Следовательно, это контролирует, какие из m задач сокращения промежуточный ключ (и, следовательно, запись) будет отправлен на сокращение.

person keelar    schedule 04.01.2014
comment
Спасибо, это немного прояснило, мне нужно медитировать, чтобы понять это! - person Fernando; 04.01.2014
comment
Вы также можете указать своей программе mapreduce установить количество редукторов, используя свойство job ..._ 1_. Обратите внимание, что аргумент является элементом int, поэтому вы можете явно определить количество редукторов в зависимости от того, сколько разделов вы хотите - person Jijo; 18.01.2014