O MapReduce diverge da maioria dos sistemas de divisão e conquista de uma maneira bastante fundamental, mas é tão simples que muitas pessoas quase perdem. O verdadeiro gênio disso é marcar os resultados intermediários.
Em um sistema típico de divisão e conquista (anterior), você divide o trabalho em série, executa pacotes de trabalho em paralelo e mescla os resultados desse trabalho em série novamente.
No MapReduce, você divide o trabalho em série, executa pacotes de trabalho em paralelo e marca os resultados para indicar quais resultados combinam com quais outros resultados. A mesclagem é então serial para todos os resultados com a mesma tag, mas pode ser executada em paralelo para resultados com tags diferentes.
Na maioria dos sistemas anteriores, a etapa de mesclagem se tornou um gargalo para todas as tarefas, exceto as mais triviais. Com MapReduce ele pode ainda ser se a natureza das tarefas exige que todos os fusão ser feito em série. Se, no entanto, a tarefa permitir algum grau de mesclagem paralela de resultados, o MapReduce fornecerá uma maneira simples de aproveitar essa possibilidade. A maioria dos outros sistemas faz uma de duas coisas: executar toda a fusão em série apenas porque pode ser necessário para algumas tarefas ou definir estaticamente a fusão paralela para uma tarefa específica. O MapReduce fornece dados suficientes na etapa de mesclagem para agendar automaticamente o máximo em paralelo possível, garantindo ainda (assumindo que você não cometeu erros na etapa de mapeamento) que a coerência é mantida.
Observe também que no MapReduce, está implícito que todas as etapas podem ser recursivas; portanto, eu posso ter uma etapa de mapeamento inicial que divide uma grande tarefa em cinco tarefas menores que podem ser executadas em paralelo - mas cada uma delas pode (em por sua vez) são mapeados para várias outras tarefas paralelas menores e assim por diante.
Isso leva a uma estrutura em árvore, nos lados do mapeamento e do redutor, para dividir rapidamente uma tarefa grande em partes suficientes para tirar proveito de muitas máquinas.