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

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

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

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

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