Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MapReduce

306 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
  • Be the first to comment

  • Be the first to like this

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.

×