MapReduce відрізняється від більшості систем поділу і підкорення досить фундаментальним способом, але такий, який настільки простий, що багато людей майже не сумують за ним. Справжній геній цього полягає в маркуванні проміжних результатів.
У типовій (попередній) системі ділення і підкорення ви поділяєте роботу серійно, виконуюте паралельно робочі пакети, а потім знову з’єднуєте результати цієї роботи.
У MapReduce ви поділяєте роботу послідовно, паралельно виконуєте робочі пакети та тегуєте результати, щоб вказати, які результати й з якими іншими результатами. Потім об'єднання послідовно для всіх результатів з одним і тим же тегом, але може виконуватися паралельно для результатів, які мають різні теги.
У більшості попередніх систем крок злиття став вузьким місцем для всіх, окрім самих тривіальних завдань. З MapReduce це все ще може бути, якщо характер завдань вимагає, щоб усі об'єднання виконувалися серійно. Якщо, однак, завдання дозволяє певний ступінь паралельного об'єднання результатів, то MapReduce дає простий спосіб скористатися цією можливістю. Більшість інших систем виконують одне з двох: або виконують всі об'єднання послідовно лише тому, що це може знадобитися для деяких завдань, або ж статично визначають паралельне злиття для певної задачі. MapReduce надає вам достатньо даних на кроці злиття, щоб автоматично планувати максимально паралельно паралельно, одночасно забезпечуючи (якщо ви не помилилися на етапі відображення) збереження когерентності.
Також зауважте, що в MapReduce мається на увазі, що всі кроки можуть бути рекурсивними, тому, можливо, у мене є початковий етап картографування, який розбиває велике завдання на 5 менших завдань, які можна виконати паралельно - але кожен з них може (у обіг) нанесіть на карту ряд інших менших паралельних завдань тощо.
Це призводить до того, що структура дерева як на картографуванні, так і на скорочуючих сторонах швидко розбиває велике завдання на достатню кількість, щоб скористатися багатьма машинами.