Обзор работы MapReduce

Содержание

Сервис MapReduce оперирует данными, состоящими из пар ключ/значение (key/value). Независимо от того, являются входные данные структурированными или неструктурированными, сервис преобразует их в подобные пары:

  • Ключ ссылается на значение.

  • Значение представляет собой данные для обработки.

Map и Reduce

Функция Map вырабатывает список пар ключ/значение со следующими характеристиками:

  • Выходные данные функции Map являются промежуточными.

  • Их тип может отличаться от типа входных данных.

  • Выходные данные функции сохраняются на локальном диске с последующим их перераспределением (shuffle) по узлам, выполняющим операцию reduce, то есть агрегацию данных.

 
Функция Reduce принимает промежуточные пары ключ/значение от функции Map и обрабатывает их. Обычно узлы (reducer), где работает эта функция, выполняют агрегацию или обобщение данных:

  • Входными данными для агрегатора являются данные, сгенерированные функцией Map.

  • Входные пары ключ/значение отсортированы по ключу.

Функция Reduce вырабатывает окончательный список пар ключ/значение. Он сохраняется в HDFS, при этом типы ключей и значений могут отличаться от их типов во входных данных.

Входные данные, подаваемые на вход преобразователя mapper, обрабатывает функция, заданная разработчиком. Основная нагрузка по реализации требуемой бизнес-логики ложится в основном на уровень Map, поэтому параллельно работающие узлы mapper наиболее нагружены. По этой причине количество обработчиков mapper значительно превышает количество агрегаторов reducer. Обработчики mapper генерируют промежуточные данные, подаваемые на вход агрегаторов reducer.

Промежуточный результат обрабатывает пользовательская функция, работающая как агрегатор данных. Она генерирует окончательные данные, сохраняемые в HDFS. Репликация данных выполняется как обычно.

Начало работы с MapReduce демонстрирует процесс преобразования и агрегирования.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней