mapreduce - conceitos e aplicações

33
MapReduce Conceitos e Aplicações Guilherme Araújo [email protected]

Upload: guilherme-araujo

Post on 04-Jun-2015

149 views

Category:

Technology


5 download

DESCRIPTION

Modelo e framework para processamento de dados em grande escala.

TRANSCRIPT

Page 1: Mapreduce - Conceitos e Aplicações

MapReduceConceitos e Aplicações

Guilherme Araú[email protected]

Page 2: Mapreduce - Conceitos e Aplicações

Introdução

Page 3: Mapreduce - Conceitos e Aplicações

Introdução Com o crescimento exponencial do poder computacional, a

computação ubíqua, a evolução dos sistemas de informação e o aumento da quantidade de serviços disponibilizados aos usuários, cresce também o volume de dados que precisam ser processados pelos sistemas computacionais.

Alguns exemplos:• O sistema de geração e distribuição de energia elétrica Norte

Americano gera aproximadamente 15 TB de dados anualmente (KOUZES et al., 2009)

• O sistema de indexação de páginas web da Google processa apro-ximadamente 20 TB em documentos a cada iteração (DEAN; GHEMAWAT, 2008)

3

Page 4: Mapreduce - Conceitos e Aplicações

Introdução Para que a computação dessa quantidade de informação seja

realizada em tempo viável, cada vez mais faz-se necessária a exploração de paradigmas de programação:

• Dividir para Conquistar

.

.

.

• Computação Paralela • Computação Distribuída • MapReduce (paradigma funcional)

4

Page 5: Mapreduce - Conceitos e Aplicações

Introdução Porém, desenvolver software para ambientes distribuídos é

uma tarefa complexa, pois envolve uma série de conceitos e problemas que devem ser considerados pelos programadores.

• Ex: comunicação e sincronização ente os processos de cada dispositivo.

Motivação: Dados em Larga Escala são uma realidade...• TeraBytes, PetaBytes, ExaBytes, ...

Facebook e Google processam PBs/dia

1PB em 1 computador ( ~ 60MB/s) 192 dias

NecessidadeUtilizar centenas ou milhares de computadores FACILMENTE

Solução: MapReduce5

Page 6: Mapreduce - Conceitos e Aplicações

MapReduce (MR) by Google Modelo e framework para processamento de dados em grande

escala proprietário do Google:

Jeffrey Dean e Sanjay Ghemawat OSDI – 2004

Jeffrey Dean and Sanjay Ghemawat. 2004. MapReduce: simplified data processing on large clusters. In Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation Volume 6 (OSDI'04), Vol. 6. USENIX Association, Berkeley, CA, USA, 10-10.

Modelo baseado apenas em duas funções Map e Reduce

Características do framework• Paralelização/Coordenação automática • Otimização por localidade (processamento ocorre próximo dos dados)• Balanceamento de carga• Tolerância a falhas• Escalabilidade 6

Page 7: Mapreduce - Conceitos e Aplicações

Implementações Centenas de empresas usando:

...

Dezenas comercializando... $$$ Claudera, Aster, Vertica, ...

Implementações:• MapReduce (Google)• Hadoop (http://hadoop.apache.org)

7

532 máquinas

640 máquinas

1600 máquinas

2500 máquinas

Page 8: Mapreduce - Conceitos e Aplicações

Conceitos

Page 9: Mapreduce - Conceitos e Aplicações

Conceitos O paradigma de programação MapReduce inspira-se nas

primitivas Map e Reduce presentes em diversas linguagens funcionais.

Essa abordagem foi adotada pois verificou-se que, em muitos casos, era necessário mapear fragmentos dos dados de entrada a uma chave identificadora, e então processar todos os frag-mentos que compartilhassem a mesma chave.

9

Page 10: Mapreduce - Conceitos e Aplicações

Conceitos Se a quantidade de dados for grande, pode ser dividido para a

execução de diversas funções Map ao mesmo tempo, em paralelo.

Podemos aplicar separadamente as funções Map e Reduce a um conjunto de dados.

10

Page 11: Mapreduce - Conceitos e Aplicações

Conceitos Todo o trabalho de distribuição do sistema – incluindo

problemas de comunicação, tolerância a falhas, concorrência, etc – é abstraído, e fica a cargo do próprio framework.

A tarefa principal do programador é implementar estas duas funções, Map e Reduce, indicando como o mapeamento e a redução dos dados serão compostos.

O modelo MapReduce pode ser executado sobre uma varie-dade de plataformas e ambientes distintos. Logo, a melhor implementação do framework depende do ambiente alvo.

11

Page 12: Mapreduce - Conceitos e Aplicações

Conceitos

12

Page 13: Mapreduce - Conceitos e Aplicações

Modelo de Programação

Page 14: Mapreduce - Conceitos e Aplicações

Modelo de Programação O MapReduce é realizado em um cluster computacional de

máquinas homogêneas, constituído por basicamente dois tipos de nós: Mestre (Master) e Escravo (Worker).

O nó Mestre tem como função atender requisições de execução efetuadas pelos usuários e gerenciá-las, criando várias tarefas e delegando-as a nós Escravos.

Os nós Escravos, por sua vez, são encarregados de executar de fato essas tarefas, aplicando de acordo com seu tipo as funções Map ou Reduce definidas pelo usuário.

MapReduce também utiliza um sistema de arquivos distribuído.14

Page 15: Mapreduce - Conceitos e Aplicações

Modelo de Programação Componentes do MapReduce

• Sistema de arquivo distribuído – DFS (Distributed File System)GFS HDFS

• Implementação MapReduce – 1 Master e N WorkersWorkers (Mappers e Reducers)

• AplicaçãoEx: Wordcount, indexador, Page-rank, ...

15

Page 16: Mapreduce - Conceitos e Aplicações

Modelo de Programação A base de uma aplicação MapReduce consiste em dividir e

processar conjuntos de dados com o uso das funções Map e Reduce.

A função Map recebe uma tupla <chave,valor> como entrada e gera um conjunto intermediário de dados, também no formato <chave,valor>.

A função Reduce também recebe como entrada uma tupla <chave,valor>. Ela é executada para cada chave interme-diária, com todos os conjuntos de valores intermediários associados àquela chave combinados.

16

Page 17: Mapreduce - Conceitos e Aplicações

Modelo de Programação Exemplo de aplicação:

• Considere o problema de contar o número de ocorrências de uma palavra em uma grande coleção de documentos.

• A seguir será mostrado o pseudocódigo das Funções Map e Reduce.

17

Page 18: Mapreduce - Conceitos e Aplicações

Modelo de Programaçãomap(String key, String value):

// Emit each word found on value together with a 1 count

// key: document name

// value: document content

wordList = value.split()

for word in wordList:

emit(word, 1);

reduce(String key, String values):

// Sums together all counts for a particular word (key)

// key: a word

// value: list of counts for key

wordCount = 0

for v in values:

wordCount += 1

emit(key, wordCount); 18

Page 19: Mapreduce - Conceitos e Aplicações

Modelo de Programação

Cada chamada da função Map recebe como entrada o conteúdo de um dos documentos da coleção.

Para cada palavra do documento de entrada, a função Map emite o valor “1” associado à chave que representa a palavra em questão.

19

map(String key, String value):

// Emit each word found on value together with a 1 count

// key: document name

// value: document content

wordList = value.split()

for word in wordList:emit(word, 1);

Page 20: Mapreduce - Conceitos e Aplicações

Modelo de Programação

Cada chamada da função Reduce recebe como entrada uma palavra e um iterador para todos os valores emitidos pela função Map, associados com a palavra em questão.

Todos os valores são então somados em uma tupla contendo a palavra e seu total de ocorrências.

20

reduce(String key, String values):

// Sums together all counts for a particular word (key)

// key: a word

// value: list of counts for key

wordCount = 0

for v in values:

wordCount += 1

emit(key, wordCount);

Page 21: Mapreduce - Conceitos e Aplicações

Diagrama de execução do algoritmo de contagem de palavras

Modelo de Programação

21

Dados Separação dos dados

Map Ordenação Reduce Saída

Page 22: Mapreduce - Conceitos e Aplicações

Etapas do Processo

Page 23: Mapreduce - Conceitos e Aplicações

Etapas do Processo Execução do MapReduce

23

Page 24: Mapreduce - Conceitos e Aplicações

Etapas do Processo Execução de uma aplicação MR

Mestre associa tarefas Map aos Escravos livresEscravo executa a função Map sobre o “seu dado”

Produz arquivos locais com os pares intermediáriosInforma o Mestre do término

Mestre associa tarefas reduce aos Escravos livres

Escravo lê remotamente os pares dos Maperrsaplica a função reducegrava o resultado num arquivo no DFS 24

Page 25: Mapreduce - Conceitos e Aplicações

Etapas do Processo O primeiro passo do MapReduce é dividir os dados em partes e

iniciar uma série de cópias do programa nas máquinas do cluster computacional.

25

Page 26: Mapreduce - Conceitos e Aplicações

Etapas do Processo O trabalho consiste em realizar M tarefas de mapeamento e R

tarefas de redução, sendo o Mestre responsável por atribuir aos Escravos essas tarefas.

26

Page 27: Mapreduce - Conceitos e Aplicações

Etapas do Processo O Escravo para o qual foi atribuída uma tarefa de mapeamento

deve ler o conteúdo de uma parte do arquivo, separar todas as tuplas e enviar para a função de mapeamento.

As tuplas produzidas pela função MAP são armazenadas em memória (localmente).

27

Page 28: Mapreduce - Conceitos e Aplicações

Etapas do Processo• Os Escravos para os quais foram atribuídas tarefas de redução

devem pegar todos os valores de uma determinada chave, que foi produzido pelas tarefas de mapeamento, e enviar para a função Reducer.

28

Page 29: Mapreduce - Conceitos e Aplicações

Etapas do Processo Quando todas as tarefas de mapeamento e redução forem

concluídas, o nó Mestre emite um alerta ao programa do usuário e retorna o controle para ele.

29

Page 30: Mapreduce - Conceitos e Aplicações

Conclusão

Page 31: Mapreduce - Conceitos e Aplicações

Conclusão MapReduce é fácil de usar, mesmo por programadores sem ex-

periência em processamento distribuído.

Permite o programador focar no problema e esquecer os deta-lhes de implementação de sistemas distribuídos.

Uma grande variedade de problemas podem ser expressos em MapReduce.

Simplificou computações em larga escala de grandes volumes de dados.

31

Page 32: Mapreduce - Conceitos e Aplicações

Referências

Page 33: Mapreduce - Conceitos e Aplicações

Referências

33

J. Dean and S. Ghemawat, “Mapreduce: Simplified data processing on large clusters,” in OSDI, 2004

Dean, J. and Ghemawat, S. 2008. MapReduce: simplified data processing on large clusters. Communication of ACM 51, 1 (Jan. 2008), 107-113.

G. Malewicz, M. H. Austern, A. J. C. Matthew, J. C. Dehnert, I. Horn, N. Leiser, and G. Czajkowski, “Pregel: A system for large-scale graph processing,” in SIGMOD, 2010.

M. Zharia, M. Chowdhury, T. Das, A. Dave, J. Ma, M. McCauley, M. J. Franklin, S. Shenker, and I. Stoica, “Resilient distributed datasets: A fault-tolerant abstraction for in memory cluster computing”, 2011.

Y. Low, J. Gonzalez, A. Kyrola, D. Bickson, C. Guestrin, and J. M. Hellerstein, “Distributed graphlab: A framework for machine learning and data mining in the cloud,” PVLDB, vol. 5, no. 8, 2012.

A. Thusoo, J. S. Sarma, N. Jain, Z. Shao, P. Chakka, N. Zhang, S. Antony, H. Liu, and R. Murthy, “Hive a petabyte scale data warehouse using hadoop” in ICDE, 2010.

A. F. Gates, O. Natkovich, S. Chopra, P. Kamath, S. M. Narayanamurthy, C. Olston, B. Reed, S. Srinivasan, and U. Srivastava, “Building a high-level dataflow system on top of map-reduce: The pig experience” PVLDB, 2009.

Apache Foundation, Hadoop, http://hadoop.apache.org/docs/current/