Описание тега mapreduce

MapReduce - это алгоритм обработки огромных наборов данных по определенным типам распределенных задач с использованием большого количества узлов.

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

Преимущество MapReduce в том, что он позволяет выполнять распределенную обработку карты и операции редукции. При условии, что каждая операция сопоставления не зависит от другой, все сопоставления могут выполняться параллельно - хотя на практике это ограничено источником данных и / или количеством процессоров рядом с этими данными. Точно так же набор "редюсеров" может выполнять фазу редукции - все, что требуется, это чтобы все выходные данные операции карты, которые используют один и тот же ключ, были представлены одному и тому же редуктору в одно и то же время. Хотя этот процесс часто может показаться неэффективным по сравнению с более последовательными алгоритмами, MapReduce может применяться к значительно большим наборам данных, чем могут обрабатывать "обычные" серверы - большая ферма серверов может использовать MapReduce для сортировки петабайта данных всего за несколько часов.Параллелизм также предлагает некоторую возможность восстановления после частичного отказа серверов или хранилища во время операции: если один преобразователь или редуктор выйдет из строя, работу можно перенести, если входные данные все еще доступны.

Шаг "Сопоставление": главный узел принимает входные данные, разбивает их на более мелкие подзадачи и распределяет их по рабочим узлам. Рабочий узел может сделать это снова по очереди, что приведет к многоуровневой древовидной структуре. Рабочий узел обрабатывает эту меньшую проблему и передает ответ своему главному узлу.

Шаг "Уменьшение": затем главный узел берет ответы на все подзадачи и каким-то образом объединяет их, чтобы получить результат - ответ на проблему, которую он изначально пытался решить.