Download - MapReduce
Universidade Federal do Rio de Janeiro
Disciplina: Redes I (EEL878)
Alunos:
Henrique Pan
Pedro Henrique Cruz
Pedro de Vasconcellos
Agenda
• Histórico, motivação e cenário
• Conceitos
• Modelo MapReduce
• Implementação
• Para o futuro
• Conclusão
• Perguntas & Respostas
Histórico, motivação e cenário
Fatores importantes:
• Grande quantidade de dados
• Pequeno aumento da frequência dos
processadores
Solução: paralelização!
Histórico, motivação e cenário (2)
Figura 1 - Gráfico obtido com dados de [6].
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
Conceito: Paralelização
Executar partes diferentes de um algoritmo
em unidades de processamento diferentes.
Conceito: Paralelização (2)
Figura 2 – A paralelização de um processamento
Conceito: Paralelização (3)
PROBLEMAS:
• Designar processamento aos
processadores
• Fornecer exclusão mútua
• Garantir equivalência nos algoritmos
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ó
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.
MapReduce: visão do usuário
• Conceitos de programação funcional
• Dados inalterados
• Funções map e fold
map(f, lista) - programação funcional
• f é aplicada a cada elemento de lista,
retornando uma nova lista
Figura 3 – Exemplo do mapeamento funcional
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
map(chave, valor)
map(chave, valor) => <chaveInt, valorInt>
•Inspirada no mapeamento funcional
•Implementada pelo usuário
• Sem necessidade de argumento “f”
reduce(chaveInt, valoresInt)
reduce(chaveInt, valoresInt) =>
valoresFinais
•Inspirada na função fold
•Implementada pelo usuário
• Sem necessidade de argumento “f”
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)
Exemplo: contador de palavras
Figura 6 – Funções map e reduce em um programa contador de palavras –
Adaptado de [2]
A implementação do MapReduce
Onde a paralelização acontece
Diversas implementações são possíveis
• Cenários diferentes demandam
implementações diferentes
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]
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
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
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
A implementação da Google® (5)
Figura 7 – Esquema da implementação da
Google®
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.
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)
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.
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”
DÚVIDAS?
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.
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.
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).
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.
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.
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.
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.
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.
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.