mapreduce

37
Universidade Federal do Rio de Janeiro Disciplina: Redes I (EEL878) Alunos: Henrique Pan Pedro Henrique Cruz Pedro de Vasconcellos

Upload: pedro-de-vasconcellos

Post on 09-Jul-2015

69 views

Category:

Engineering


4 download

DESCRIPTION

Curso: Engenharia de Computação e Informação - UFRJ Disciplina: Redes de Computadores I - 2012 Trabalho teórico de introdução ao MapReduce.

TRANSCRIPT

Page 1: MapReduce

Universidade Federal do Rio de Janeiro

Disciplina: Redes I (EEL878)

Alunos:

Henrique Pan

Pedro Henrique Cruz

Pedro de Vasconcellos

Page 2: MapReduce

Agenda

• Histórico, motivação e cenário

• Conceitos

• Modelo MapReduce

• Implementação

• Para o futuro

• Conclusão

• Perguntas & Respostas

Page 3: MapReduce

Histórico, motivação e cenário

Fatores importantes:

• Grande quantidade de dados

• Pequeno aumento da frequência dos

processadores

Solução: paralelização!

Page 4: MapReduce

Histórico, motivação e cenário (2)

Figura 1 - Gráfico obtido com dados de [6].

Page 5: MapReduce

Histórico, motivação e cenário (3)

Na Google ®:

• Paralelizações feitas caso-a-caso

• Problemas em comum resolvidos várias

vezes.

Modelo de paralelizações mais geral

Page 6: MapReduce

Conceito: Paralelização

Executar partes diferentes de um algoritmo

em unidades de processamento diferentes.

Page 7: MapReduce

Conceito: Paralelização (2)

Figura 2 – A paralelização de um processamento

Page 8: MapReduce

Conceito: Paralelização (3)

PROBLEMAS:

• Designar processamento aos

processadores

• Fornecer exclusão mútua

• Garantir equivalência nos algoritmos

Page 9: MapReduce

Conceito: Computação distribuída

• Sistema Paralelo

• Único computador com vários

processadores

• Compartilhamento de recursos

• Sistema Distribuído

• Diversos computadores ligados em rede

• cluster

• nó

Page 10: MapReduce

O modelo MapReduce

Abstração que permite que o usuário seja isoladoda camada de paralelização. [1]

A paralelização depende da implementação domodelo MapReduce.

Page 11: MapReduce

MapReduce: visão do usuário

• Conceitos de programação funcional

• Dados inalterados

• Funções map e fold

Page 12: MapReduce

map(f, lista) - programação funcional

• f é aplicada a cada elemento de lista,

retornando uma nova lista

Figura 3 – Exemplo do mapeamento funcional

Page 13: MapReduce

fold(f, lista) – programação funcional

Figura 4 – Exemplo da redução funcional

• f é aplicada cumulativamente a cada elemento

de lista, até reduzi-la a um único valor de saída

Page 14: MapReduce

map(chave, valor)

map(chave, valor) => <chaveInt, valorInt>

•Inspirada no mapeamento funcional

•Implementada pelo usuário

• Sem necessidade de argumento “f”

Page 15: MapReduce

reduce(chaveInt, valoresInt)

reduce(chaveInt, valoresInt) =>

valoresFinais

•Inspirada na função fold

•Implementada pelo usuário

• Sem necessidade de argumento “f”

Page 16: MapReduce

Funções map e reduce

Figura 5 – Esquematização das funções map e reduce –

Adaptado de [8]

Conjunto de dados 1map

Pares de entrada

(chave, valor)

(chave 1, valores) (c2, v) (c3, v)

Barreira (agrega valores intermediários de acordo com a chave)

(chave 1, valores

intermediários)

reduce

Valores finais

provenientes da

chave 1

(chave 2, valores

intermediários)

reduce

Valores finais

provenientes da

chave 2

(chave 3, valores

intermediários)

reduce

Valores finais

provenientes da

chave 3

Conjunto de dados Nmap

Pares de entrada

(chave, valor)

(chave 1, valores) (c2, v) (c3, v)

Page 17: MapReduce

Exemplo: contador de palavras

Figura 6 – Funções map e reduce em um programa contador de palavras –

Adaptado de [2]

Page 18: MapReduce

A implementação do MapReduce

Onde a paralelização acontece

Diversas implementações são possíveis

• Cenários diferentes demandam

implementações diferentes

Page 19: MapReduce

A implementação da Google®

Características dos cluster’s disponíveis:

• Dispositivos comuns • processadores x86 dual-core• discos IDE• memória de 2 a 4 GB• rede de 100 megabits/segundo

• Centenas ou milhares de nós.

• Sistema de arquivos distribuído próprio, o GFS[5]

Page 20: MapReduce

A implementação da Google® (2)

• Usuário: map, reduce e MapReduce

• Arquivo de entrada é fragmentado (64MB/parte)

• Fragmento = chave + valor

• Funções map e reduce copiadas para osnós

• Mestre

• Trabalhadores• Mapeadores

• Redutores

Page 21: MapReduce

A implementação da Google® (3)• Mestre

• Tarefas a trabalhadores ociosos

• Mapeadores

• Recebem um fragmento e chamam afunção map

• Guardam pares intermediários na memória

• Escrevem os pares em discoperiodicamente

• Notificam o mestre sobre locais dos paresintermediários

Page 22: MapReduce

A implementação da Google® (4)

• Redutores

• Recebem do mestre uma chave e os

lugares de seus valores intermediários

• Buscam os valores intermediários e

chamam a função reduce

• Escrevem as saídas em um arquivo

• Implementação retorna ao programa do

usuário

Page 23: MapReduce

A implementação da Google® (5)

Figura 7 – Esquema da implementação da

Google®

Page 24: MapReduce

Hadoop

Framework de código aberto do modelo

MapReduce [4]

• Usa interfaces Java® para map e reduce

• Interface Java®: classe com método(s)

sem código, mas com assinatura

• É parecido com a implementação da

Google®

• Flexível com relação ao cluster.

Page 25: MapReduce

Ambientes oportunísticos

Ciclos ociosos de máquinas podem ser

usados para executar tarefas de map/reduce.

• Recursos disponíveis por curtíssimos

períodos de tempo

Projeto MOON[7] (MapReduce On

Opportunistic eNvironments)

Page 26: MapReduce

Para o futuro

• Implementação simplificada de

MapReduce

• Ambientes oportunísticos como serviço:

• Como garantir um bom serviço?

• Executar código de interesse nas

máquinas de usuários de aplicativos web.

Page 27: MapReduce

Conclusão

• Dividir para conquistar

• Peculiaridades de cada problema X

operar um sistema distribuído

• Estudar restrições e diminuir o impacto

para o usuário

“Funciona porque é simples”

Page 28: MapReduce

DÚVIDAS?

Page 29: MapReduce

Perguntas & Respostas

1. O que são sistemas distribuídos e para

que servem?

R: São sistemas que resolvem problemas de

computação utilizando diversas máquinas ligadas

em rede, formando um cluster. Eles servem para

diminuir o tempo na obtenção de uma resposta

computacional sem precisar aumentar a

velocidade de um processador individualmente.

Page 30: MapReduce

Perguntas & Respostas

2. O que é o modelo MapReduce e como ele

ajuda a resolver problemas paralelizáveis?

R: É uma abstração que cria uma interface entre um

programador e um sistema distribuído. Dessa

forma, ele faz com que o programador consiga

implementar separadamente a solução para seu

problema específico e uma solução geral para

seu sistema distribuído, a implementação do

MapReduce.

Page 31: MapReduce

Perguntas & Respostas

3. Qual é a abstração do modelo

MapReduce?

R: O usuário escreve duas funções: uma map(chave,

valor) e uma reduce(chave, valores). Depois, o

usuário chama a implementação indicando um

conjunto fragmentável ou fragmentado de dados

de entrada onde cada fragmento tem o

formato (chave, valor).

Page 32: MapReduce

Perguntas & Respostas

4. O que é uma implementação do

MapReduce?

R: É a forma como o sistema distribuído em questão

vai executar as funções map e reduce. Sistemas

diferentes podem demandar implementações

diferentes para um bom funcionamento do

MapReduce.

Page 33: MapReduce

Perguntas & Respostas

5. Sobre a implementação da Google®, qual

o papel do mestre e como as

trabalhadoras são classificadas?

R: O Mestre designa trabalho às trabalhadoras. As

trabalhadoras podem ser classificadas em

mapeadoras ou redutoras.

Page 34: MapReduce

Referências

[1] DEAN, Jeffrey; GHEMAWAT, Sanjay. MapReduce: Simplied

Data Processing on Large Clusters. Communications of the

ACM, v. 51, n. 1, p. 107-113, jan. 2008. Disponível em:

<http://static.googleusercontent.com/external_content/untrust

ed_dlcp/research.google.com/pt-BR//archive/mapreduce-

osdi04.pdf>. Acesso em: 23 maio 2012.

[2] LÄMMEL, Ralf. Google's MapReduce Programming Model

- Revisited. Science of Computer Programming, v.70, n. 1, p.

1-30, jan. 2008. Disponível em:

<http://web.cs.wpi.edu/~cs3013/a11/Papers/Lammel_MapRed

uce_Revisited.pdf>. Acesso em: 23 maio 2012.

Page 35: MapReduce

Referências (2)

[3] VENKATESH, Kirpal A.; NEELAMEGAM, K.; REVATHY, R. Usando

MapReduce e balanceamento de carga em nuvens, out. 2010.

Disponível em:

<http://www.ibm.com/developerworks/br/java/library/cl-

mapreduce/#N1010A>. Acesso em: 24 abr. 2012.

[4] HADOOP. Hadoop 1.0.2 documentation. Disponível em:

<http://hadoop.apache.org/common/docs/current/index.html>.

Acesso em: 24 abr. 2012.

[5] GHEMAWAT, Sanjay; GOBIOFF, Howard; LEUNG, Shun-Tak. The

Google File System.ACM SIGOPS Operating Systems Review -

SOSP '03, v. 37, n.5, p. 29-43, dez. 2003. Disponível em:

<http://www.cs.brown.edu/courses/cs295-11/2006/gfs.pdf>. Acesso

em: 23 maio 2012.

Page 36: MapReduce

Referências (3)

[6] INTEL. Microprocessor Quick Reference Guide. Disponível

em: <http://www.intel.com/pressroom/kits/quickrefyr.htm>.

Acesso em: 23 maio 2012.

[7] Heshan Lin; ARCHULETA, Jeremy; Xiaosong Ma; Wu-chun

Feng; Zhe Zhang; GARDNER, Mark. MOON: MapReduce

On Opportunistic eNvironments. Proceedings of the 19th

ACM International Symposium on High Performance

Distributed Computing - ACM HPDC '10, p. 95-106, 2010.

Disponível em:

<http://eprints.cs.vt.edu/archive/00001089/01/moon.pdf>.

Acesso em: 24 maio 2012.

Page 37: MapReduce

Referências (4)

[8] GOOGLE. Cluster Computing and MapReduce. 2007.

Disponível em: <http://code.google.com/intl/pt-

BR/edu/submissions/mapreduce-minilecture/listing.html>.

Acesso em: 23 maio 2012.