O MapReduce ajuda a dividir projetos de processamento de dados em partes menores para que possam ser executados mais rapidamente.
Usar um processador para analisar um arquivo enorme com terabytes ou petabytes de dados pode, por exemplo, levar 10 horas. Um trabalho do MapReduce pode dividir esse mesmo arquivo de dados em 10 tarefas, que são executadas em paralelo em 10 processadores. Esse trabalho pode levar apenas uma hora ou menos para ser executado. Os dados podem ser agregados a partir dos nós de computação distribuídos para produzir um resultado.
Embora o mapeamento e a redução sejam as funções essenciais do modelo do MapReduce, o processo geral inclui mais algumas etapas.
Entrada
Uma aplicação do MapReduce aceita dados de entrada, que podem incluir dados estruturados ou não estruturados. As aplicações do MapReduce geralmente funcionam com arquivos de entrada armazenados no sistema de arquivos distribuídos do Hadoop (HDFS), mas o modelo também pode funcionar com outras fontes de dados. (Para obter mais informações, consulte "MapReduce dentro do ecossistema do Hadoop".)
Para um trabalho específico, a framework do MapReduce ajuda a selecionar servidores distribuídos, gerenciar comunicações e transferências de dados e oferecer suporte a tolerância a falhas e redundância.
Divisão
Os dados de entrada são divididos em blocos menores. Esses blocos são distribuídos para os mapeadores (as funções que realizam o mapeamento na próxima etapa) localizados em vários nós de computação. A framework do MapReduce visa a uma atribuição aproximadamente uniforme de dados entre os mapeadores para um equilíbrio de carga eficiente.
Mapeamento
Em cada nó, a função de mapear processa os dados recebidos, convertendo os dados em pares de chave/valor.
O número total de mapeadores é determinado dentro do framework do Hadoop, com base no volume total de dados e nos blocos de memória disponíveis em cada mapeador. Parâmetros para mapeadores, redutores e formatos de saída podem ser definidos dentro do cluster Hadoop.
Embaralhamento
O framework do Hadoop classifica as saídas do mapa e atribui todos os pares de chave/valor com a mesma "chave" (tópico) ao mesmo redutor. Por exemplo, em um conjunto de dados de cidades e suas temperaturas máximas diárias, quaisquer dados com a chave "Tóquio" iria para o mesmo redutor.
O redutor, como o nome sugere, é a função que executa a etapa de redução.
Redução
As funções de reduzir processam os pares de chave/valor que os mapeadores emitem. Isso pode envolver a mesclagem, tabulação ou a realização de outras operações nos dados, dependendo do tipo de processamento necessário.
O mapeamento e a redução podem ser feitos no mesmo conjunto de servidores, mas isso é opcional.
Resultado
Cada redutor produz os resultados de seu processamento para o HDFS ou outro armazenamento de dados.