O paradigma MapReduce

O paradigma MapReduce foi criado em 2003 para permitir o processamento de grandes conjuntos de dados de forma massivamente paralela. O objetivo do modelo MapReduce é simplificar a abordagem de transformação e análise de grandes conjuntos de dados, além de permitir que os desenvolvedores se concentrem nos algoritmos em vez de no gerenciamento de dados. O modelo permite a implementação simples de algoritmos paralelos de dados. Há várias implementações desse modelo, incluindo a abordagem do Google, programada em C++, e a implementação Hadoop da Apache, programada em Java. Ambos são executados em grandes clusters de hardware de commodity em um ambiente compartilhado e ponto a ponto.

O modelo MapReduce consiste em duas fases: a fase de mapeamento e a fase de redução, expressas pela função de mapeamento e pela função de redução, respectivamente. As funções são especificadas pelo programador e são projetadas para operar em pares de chave/valor como entrada e saída. As chaves e os valores podem ser tipos de dados simples, como um número inteiro, ou mais complexos, como uma transação comercial.
Mapa
A função de mapa, também chamada de tarefa de mapa, processa um único par de entrada de chave/valor e produz um conjunto de pares de chave/valor intermediários.
Reduzir
A função de redução, também chamada de tarefa de redução, consiste em pegar todos os pares de chave/valor produzidos na fase de mapa que compartilham a mesma chave intermediária e produzir zero, um ou mais itens de dados.

Observe que as funções map e reduce não tratam da paralelização e da execução dos trabalhos MapReduce. Essa é a responsabilidade do modelo MapReduce, que cuida automaticamente da distribuição dos dados de entrada, bem como do agendamento e do gerenciamento das tarefas de mapeamento e redução.