mapreduceНачало работы с mapreduce


замечания

В этом разделе представлен обзор того, что такое mapreduce, и почему разработчик может захотеть его использовать.

Следует также упомянуть о любых крупных предметах в mapreduce и ссылки на связанные темы. Поскольку Documentation for mapreduce является новым, вам может потребоваться создать начальные версии этих связанных тем.

Установка или настройка

Mapreduce является частью Hadoop. Поэтому, когда Apache Hadoop (или любое распространение Hadoop установлено), MR автоматически устанавливается.

MapReduce - это структура обработки данных по HDFS (распределенная файловая система Hadoop). Работы MR могут быть написаны с использованием Java, python, Scala, R и т. Д.

Что делает mapreduce и как?

Mapreduce - это модель программирования для обработки (очень) больших объемов данных.

Традиционная «высокопроизводительная вычислительная техника» ускоряет большие вычисления на относительно больших объемах данных, создавая набор высокосвязанных компьютеров (используя такие вещи, как чрезвычайно быстрая сеть и быстрый доступ к совместно используемому хранилищу, разделяемая память) для решения вычислительных задач, которые обычно требуют, чтобы вычисления имели доступ к данным друг друга. Классическим примером является прогнозирование погоды.

С другой стороны, Mapreduce выделяется при обработке относительно небольших независимых вычислений на огромные объемы данных. Чтобы сделать это возможным, данные распространяются на многих компьютерах (из-за объема данных), а нужный расчет разбивается на фазу, которая может быть выполнена на каждом бите данных независимо (фаза «карта»). Затем собираются результаты этих независимых вычислений, а вторая часть вычислений проводится для объединения всех этих отдельных результатов в конечный результат (фаза «уменьшить»).


Пример: подсчет голосов

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

В этом случае реализация mapreduce будет:

Шаг 1: «Распространение»

Распространение изображений для обработки через доступные компьютеры.

Шаг 2: «Карта»

На каждом компьютере для каждого изображения:

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

Обратите внимание, что работа может начаться, как только компьютер получит 1 изображение для работы. Не нужно, чтобы все эти компьютеры взаимодействовали, чтобы выполнять свою работу, поэтому нет необходимости быстро их связывать, иметь общую память или общее дисковое пространство.

Шаг 3: «Соберите»

Соберите все эти выходы на 1 компьютер.

Шаг 4: «Уменьшить»

Подсчитайте, сколько голосов за каждый номер (или код или имя) есть.

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


Пример: подсчет голосов - оптимизирован (с использованием объединителя)

Шаг 1: «Распространение»

То же, что и раньше: Распространение изображений для обработки через доступные компьютеры.

Шаг 2: «Карта»

То же, что и раньше: на каждом компьютере для каждого изображения:

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

Шаг 3: «Соберите» локально

Соберите все выходы одного компьютера на компьютер.

Шаг 4: «Уменьшить» локально

Подсчитайте, сколько голосов каждого номера (или кода или имени) есть в локальных результатах и ​​выводит их.

Шаг 5: «Собирайтесь» по всему миру

Собирайте все выходы локальных сокращений на один компьютер.

Шаг 6: «Уменьшить» по всему миру

Суммируйте подсчитанные на местном уровне подсчет голосов каждого номера (или кода или имени).


Обратите внимание, что на шаге 3 нет необходимости ждать всех результатов в любом из следующих случаев:

  • если это становится слишком большим для локальных ресурсов компьютеров, таких как память / память
  • если стоимость работы, которую нужно переделать при разрыве компьютера, считается большой для ожидания всех локальных результатов
  • если сеть теперь может свободно переносить промежуточные результаты

локальные сбои и локальное сокращение могут быть сделаны на результатах, полученных до сих пор на локальном компьютере, и это можно сделать в любое время.

Локальный шаг уменьшения называется шагу объединителя. Это дополнительный шаг, используемый для повышения производительности.