22
MapReduce: Simplified Data Processing on Large Clusters Autores: Jeffrey Dean e Sanjay Ghemawat (Engenheiros do Google) Palestrante: Augusto Souza

Clusters Data Processing on Large MapReduce: Simplified

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Clusters Data Processing on Large MapReduce: Simplified

MapReduce: Simplified Data Processing on Large

ClustersAutores: Jeffrey Dean e Sanjay Ghemawat

(Engenheiros do Google)

Palestrante: Augusto Souza

Page 2: Clusters Data Processing on Large MapReduce: Simplified

Agenda

1. Introdução2. Modelo de Programação3. Implementação4. Extensões5. Desempenho6. Experiência7. Conclusões8. Referências9. Perguntas

Page 3: Clusters Data Processing on Large MapReduce: Simplified

Introdução

● MapReduce é um modelo de programação e uma abstração para processamento e geração de grandes conjuntos de dados

● Modelo de programação: programador implementa funções Map e Reduce

● Programas que seguem este modelo são automaticamente paralelizados e executados em um cluster de "commodity machines"

Page 4: Clusters Data Processing on Large MapReduce: Simplified

Introdução

● Os autores notaram que diversos de seus trabalhos exigiam uma computação relativamente simples porém sobre uma grande quantidade de dados

● Trabalhar com um cluster não era simples por questões como:○ Como paralelizar a computação?○ Como distribuir os dados?○ Como tratar falhas?○ Como balancear a carga?

Page 5: Clusters Data Processing on Large MapReduce: Simplified

Introdução

● Foi a abstração criada para expressar a computação simples, escondendo os detalhes de sistemas distribuídos

● Baseado nas diretivas Map e Reduce do Lisp (e outras linguagens funcionais)

● Essa abordagem funcional permite paralelização e tolerância a falhas por re-execução

Page 6: Clusters Data Processing on Large MapReduce: Simplified

Modelo de Programação

● Usuário especifica a computação em termos de duas funções:○ Map: recebe um par "key/value" como entrada e

produz um conjunto intermédiário de dados que são combinados pela biblioteca de MapReduce de acordo com a sua chave

○ Reduce: recebe uma chave e uma lista (iterator) de valores para aquela chave, então executa uma computação em cima dessa lista produzindo um conjunto menor de valores

Page 7: Clusters Data Processing on Large MapReduce: Simplified

Modelo de Programação

● Exemplo:

Page 8: Clusters Data Processing on Large MapReduce: Simplified

Modelo de Programação

Fonte: http://www.rabidgremlin.com/data20/MapReduceWordCountOverview1.png

Page 9: Clusters Data Processing on Large MapReduce: Simplified

Modelo de Programação

● Tipos:

● Outros exemplos:○ Contagem de frequencia de acessos a URLs○ Grafo de links reversos da web○ Grep distribuído○ Term-Vector de um Host○ Indíce inverso○ Ordenação

Page 10: Clusters Data Processing on Large MapReduce: Simplified

Implementação

● Desde a publicação do artigo surgiram algumas versões open source:○ Hadoop: conjunto de projetos (principais são

MapReduce e HDFS) mantido pela Apache, foco em clusters

○ Phoenix: versão de MapReduce criada em Stanford para chips multi-core e multi-processadores de memória compartilhada

Page 11: Clusters Data Processing on Large MapReduce: Simplified

Implementação● Execução:

Page 12: Clusters Data Processing on Large MapReduce: Simplified

Implementação

● Estrutura de dados do Master:○ Estado (idle, in-progress ou completed)○ ID do worker (para tarefas que não estão idle)○ Localização e tamanho dos arquivos intermediários

das tarefas de map que finalizaram.● Tolerância a falhas:

○ Falhas do worker: controle por ping e recuperação por re-execução

○ Falha do master: no artigo de 2004 os autores comentam que não se preocupam em tratar esta falha, pois ela é estatisticamente improvável, mas seria tratável com checkpoints periódicos.

● Localidade, Granularidade e Backup Tasks

Page 13: Clusters Data Processing on Large MapReduce: Simplified

Extensões

● Usuário pode especificar a função de particionamento para determinar o mapeamento de valores intermediários para as R tarefas de Reduce

● Ordenação garantida dos pares key/value intermediários por ordem crescente de chave

● Usuário pode especificar a função de combinação que roda após o Map agrupando os valores que possuem a mesma chave, o objetivo é reduzir a quantidade de dados intermediários

Page 14: Clusters Data Processing on Large MapReduce: Simplified

Extensões

● Tipos customizáveis para I/O, assim pode-se ler diferentes formatos de entrada e produzir diferentes formatos de saída

● Execução em uma única máquina para facilitar debugging e testes em pequena escala

Page 15: Clusters Data Processing on Large MapReduce: Simplified

Desempenho

● Aplicação Grep

Page 16: Clusters Data Processing on Large MapReduce: Simplified

Desempenho● Aplicação Sort

Page 17: Clusters Data Processing on Large MapReduce: Simplified

Experiência● Aceitação no Google no paper de 2004:

Page 18: Clusters Data Processing on Large MapReduce: Simplified

Experiência● Aceitação no Google no paper de 2008:

Page 19: Clusters Data Processing on Large MapReduce: Simplified

Experiência

Page 20: Clusters Data Processing on Large MapReduce: Simplified

Conclusões

● MapReduce tem sido bastante utilizado pelo Google para diferentes propósitos

● É um modelo de programação fácil de ser utilizado por programadores sem experiência com sistemas distribuídos

● Grande quantidade de problemas podem ser expressos em termos de funções de Map e Reduce (geração de dados para o search, ordenação, data mining, machine learning)

● Escalável para clusters com milhares de máquinas● Foram feitas otimizações para reduzir a quantidade de

dados trafegados● Execução redundante pode ser utilizada para reduzir o

impacto de máquinas lentas e para tratar falhas

Page 21: Clusters Data Processing on Large MapReduce: Simplified

Referências

1. Artigo "MapReduce: Simplified Data Processing on Large Clusters" (versões de 2004 e 2007): http://research.google.com/archive/mapreduce.html

2. Site do projeto Hadoop: http://hadoop.apache.org/

3. Site do projeto Phoenix: http://mapreduce.stanford.edu/

4. Site do projeto JSMapReduce: http://jsmapreduce.com/

Page 22: Clusters Data Processing on Large MapReduce: Simplified

Perguntas?