MapReduce

Origem: Wikipedia, a enciclopedia livre.

MapReduce e um modelo de programacao desenhado para processar grandes volumes de dados em paralelo, dividindo o trabalho em um conjunto de tarefas independentes. Programas MapReduce sao escritos em um determinado estilo influenciado por construcoes de programacao funcionais, especificamente expressoes idiomaticas para listas de processamento de dados. Este modulo explica a natureza do presente modelo de programacao e como ela pode ser usada para escrever programas que sao executados no ambiente Hadoop .

Historia [ editar | editar codigo-fonte ]

MapReduce e um modelo de programacao, e framework introduzido pelo Google para suportar computacoes paralelas em grandes colecoes de dados em clusters de computadores. O MapReduce passa a ser considerado um novo modelo computacional distribuido, inspirado pelas funcoes map e reduce usadas comumente em programacao funcional . MapReduce e um “Data-Oriented” que processa dados em duas fases primarias: Map e Reduce. [ 1 ]

Fluxo de dados [ editar | editar codigo-fonte ]

A parte congelada do framework MapReduce e uma grande especie distribuida. Os pontos quentes, que define a aplicacao, sao:

  • um leitor de entrada
  • uma funcao de Map
  • uma funcao de particao
  • uma funcao de comparacao
  • uma funcao Reduce
  • um escritor de saida

Leitor de Entrada [ editar | editar codigo-fonte ]

O leitor de entrada divide os dados em 'blocos' de tamanhos adequados (na pratica, normalmente de 16 MB para 128 MB) e o framework atribui um bloco para cada funcao de mapeamento. O leitor le os dados de entrada de um sistema de armazenamento estavel (normalmente um sistema de arquivos distribuido ) e gera pares chave / valor. Um exemplo comum seria ler um diretorio cheio de arquivos de texto e retornar cada linha como um registro.

Funcao Map [ editar | editar codigo-fonte ]

A funcao Map, ou funcao de mapeamento, leva uma serie de pares (chave / valor) processa cada um e gera zero ou mais (chave / valor) pares de saida. Os tipos de entrada e de saida do mapa podem ser (e geralmente sao) diferentes umas das outras. Se o aplicativo esta fazendo uma contagem de palavras, a funcao de mapa iria quebrar a linha em palavras e de saida de um par chave / valor para cada palavra. Cada par de saida deve conter a palavra como a chave e o numero de ocorrencias dessa palavra na linha como o valor.

Funcao de particao [ editar | editar codigo-fonte ]

Cada resultado da funcao Map e alocada para um redutor determinado pela funcao de particao com propositos de Sharding . A funcao de particao e dada a chave e o numero de redutores e retorna o indice de reduzir o desejado. Um padrao tipico e de hash a chave e use o valor de hash modulo o numero de redutores. E importante escolher uma funcao de particao que da uma distribuicao aproximadamente uniforme de dados por caco para balanceamento de carga fins, caso contrario, a operacao MapReduce pode ser realizada a espera de redutores lentos (redutores atribuido mais do que a sua quota de dados) para concluir. Entre o mapa e reduzir as fases, os dados sao baralhados (paralelo-ordenadas / trocada entre os nos), a fim de mover os dados a partir do no do mapa que produziu o fragmento em que ele vai ser reduzida. O shuffle as vezes pode demorar mais do que o tempo de computacao, dependendo da largura de banda da rede, a velocidade da CPU, os dados produzidos e tempo gasto pelo mapa e reduzir calculos.

Funcao de comparacao [ editar | editar codigo-fonte ]

A entrada para cada Reduce e retirado da maquina onde o Mapeamento ocorreu e classificados usando funcao de comparacao do aplicativo.

Funcao Reduce [ editar | editar codigo-fonte ]

O quadro chama Reduzir funcao da aplicacao uma vez para cada chave unica na ordem de classificacao. O Reduce pode percorrer os valores que estao associados com a chave e produzir zero ou mais saidas. No exemplo a contagem de palavras, a funcao Reduce toma os valores de entrada, resume-os e gera uma unica saida da palavra ea soma final.

Escritor de saida [ editar | editar codigo-fonte ]

O escritor de saida escreve a saida do Reduce o armazenamento estavel, geralmente um sistema de arquivos distribuidos.


Referencias