MapReduce

296 views

Published on

Curso: Engenharia de Computação e Informação - UFRJ
Disciplina: Redes de Computadores I - 2012

Trabalho teórico de introdução ao MapReduce.

Published in: Engineering
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
296
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

MapReduce

  1. 1. Universidade Federal do Rio de Janeiro Disciplina: Redes I (EEL878) Alunos: Henrique Pan Pedro Henrique Cruz Pedro de Vasconcellos
  2. 2. Agenda • Histórico, motivação e cenário • Conceitos • Modelo MapReduce • Implementação • Para o futuro • Conclusão • Perguntas & Respostas
  3. 3. Histórico, motivação e cenário Fatores importantes: • Grande quantidade de dados • Pequeno aumento da frequência dos processadores Solução: paralelização!
  4. 4. Histórico, motivação e cenário (2) Figura 1 - Gráfico obtido com dados de [6].
  5. 5. 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
  6. 6. Conceito: Paralelização Executar partes diferentes de um algoritmo em unidades de processamento diferentes.
  7. 7. Conceito: Paralelização (2) Figura 2 – A paralelização de um processamento
  8. 8. Conceito: Paralelização (3) PROBLEMAS: • Designar processamento aos processadores • Fornecer exclusão mútua • Garantir equivalência nos algoritmos
  9. 9. 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ó
  10. 10. O modelo MapReduce Abstração que permite que o usuário seja isolado da camada de paralelização. [1] A paralelização depende da implementação do modelo MapReduce.
  11. 11. MapReduce: visão do usuário • Conceitos de programação funcional • Dados inalterados • Funções map e fold
  12. 12. map(f, lista) - programação funcional • f é aplicada a cada elemento de lista, retornando uma nova lista Figura 3 – Exemplo do mapeamento funcional
  13. 13. fold(f, lista) – programação funcional • f é aplicada cumulativamente a cada elemento de lista, até reduzi-la a um único valor de saída Figura 4 – Exemplo da redução funcional
  14. 14. map(chave, valor) map(chave, valor) => <chaveInt, valorInt> •Inspirada no mapeamento funcional •Implementada pelo usuário • Sem necessidade de argumento “f”
  15. 15. reduce(chaveInt, valoresInt) reduce(chaveInt, valoresInt) => valoresFinais •Inspirada na função fold •Implementada pelo usuário • Sem necessidade de argumento “f”
  16. 16. Funções map e reduce Pares de entrada (chave, valor) Pares de entrada (chave, valor) Conjunto de dados N map (chave 1, valores) (c2, v) (c3, v) Figura 5 – Esquematização das funções map e reduce – Adaptado de [8] Conjunto de dados 1 map (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
  17. 17. Exemplo: contador de palavras Figura 6 – Funções map e reduce em um programa contador de palavras – Adaptado de [2]
  18. 18. A implementação do MapReduce Onde a paralelização acontece Diversas implementações são possíveis • Cenários diferentes demandam implementações diferentes
  19. 19. 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]
  20. 20. A implementação da Google® (2) • Usuário: map, reduce e MapReduce • Arquivo de entrada é fragmentado (64 MB/parte) • Fragmento = chave + valor • Funções map e reduce copiadas para os nós • Mestre • Trabalhadores • Mapeadores • Redutores
  21. 21. A implementação da Google® (3) • Mestre • Tarefas a trabalhadores ociosos • Mapeadores • Recebem um fragmento e chamam a função map • Guardam pares intermediários na memória • Escrevem os pares em disco periodicamente • Notificam o mestre sobre locais dos pares intermediários
  22. 22. 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
  23. 23. A implementação da Google® (5) Figura 7 – Esquema da implementação da Google®
  24. 24. 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.
  25. 25. 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)
  26. 26. 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.
  27. 27. 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”
  28. 28. DÚVIDAS?
  29. 29. 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.
  30. 30. 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.
  31. 31. 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).
  32. 32. 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.
  33. 33. 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.
  34. 34. 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.
  35. 35. 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.
  36. 36. 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.
  37. 37. 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.

×