MapReduce      Diego Magalhães Cunha   Jorge Luiz de Faria Fernandes         Juliana Paula Félix
Roteiro1 - Introdução2 - Processamento Distribuído     2.1 - Clusters     2.2 - Balanceamento de Carga3 - MapReduce     3....
Introdução
Introdução•   Com a evolução dos sistemas de    informação e o aumento da quantidade    de serviços disponibilizados a seu...
Introdução•   De acordo com a IDC (International    Data Corporation), a quantidade de    informação   criada, capturada  ...
Introdução•   Já em 2010, este valor foi por volta de    1.2 milhões de petabytes. Para 2020 o    crescimento esperado dev...
Introdução•   Para    que   a   computação     dessa    quantidade     de   informação    seja    realizada em tempo viáve...
Introdução•   Porém, desenvolver softwares para    ambientes distribuídos é uma tarefa    complexa, pois envolve uma série...
Introdução•   A fim de facilitar este processo, a    multinacional Google desenvolveu o    MapReduce,     um      modelo  ...
Introdução•   Além do framework da Google,    diversas  implementações    para   o    MapReduce    foram     desenvolvidas...
Processamento  Distribuído
Processamento DistribuídoClusters•   Um cluster pode ser definido como um    conjunto de máquinas, administrado e    utili...
Processamento DistribuídoClusters - Características•   constituído por máquinas de prateleira (baixo    custo);•   nós geo...
Processamento Distribuído
Processamento Distribuído
Processamento Distribuído
Processamento DistribuídoBalanceamento de Carga•   O balanceamento de carga é uma    prática utilizada para atingir um    ...
Processamento Distribuído
Processamento Distribuído
MapReduce
MapReduceModelo•   O MapReduce, criado pela Google, é    um modelo de programação paralela    para     processamento      ...
MapReduceModelo•   Para tal, o modelo inspira-se nas    primitivas Map e Reduce presentes em    diversas linguagens funcio...
MapReduceModelo•   Essa abordagem foi adotada pois    verificou-se que, em muitos casos, era    necessário mapear fragment...
MapReduceModelo•   Assim,   a    tarefa  principal   do    programador é implementar estas duas    funções,    indicando  ...
MapReduceModelo•   Todo o trabalho de distribuição do    sistema – incluindo problemas de    comunicação, tolerância a fal...
MapReduceModelo•   Durante a execução, as funções    recebem e emitem dados no formato    de pares <chave, valor>. Como o ...
MapReduce•   Pseudocódigo que conta a quantidade de ocorrências    de cada palavra em um documento
MapReduceModelo•   No pseudocódigo, cada chamada da    função map recebe o número dessa    linha. Para cada palavra encont...
MapReduceModelo•   A função reduce, por sua vez, recebe    como entrada uma palavra (chave), e    um iterador para todos o...
MapReduce
MapReduceModelo•   Cada linha de texto gera uma chamada    à função map;•   Cada função map gera n pares <chave,    valor>...
MapReduceModelo•   Cada função reduce retorna a soma de    todos os valores presentes na lista de    pares recebida.•   Re...
MapReduceModelo•   frequência de acesso a URLs     o Map<URL; 1> / Reduce <URL, Total>•   grafo reverso de links web     o...
MapReduceModelo•   O modelo MapReduce pode ser    executado sobre uma variedade de    plataformas e ambientes distintos.  ...
MapReduceVisão Geral - Google•   As máquinas são constituídas de    múltiplos processadores x86 rodando    linux, com 2-4 ...
MapReduceVisão Geral - Google•   Armazenamento em discos locais IDE;•   Sistema de arquivos distribuído gerencia os    dad...
MapReduceVisão Geral - Google•   Usuários submetem jobs (conjunto de    tarefas) para o master;•   Master escalona tarefas...
MapReduce
MapReduceArquitetura•   Uma implementação feita para utilizar    a GPU de uma máquina, por exemplo,    provavelmente será ...
MapReduceArquitetura•   O Google MapReduce foi desenvolvido    para grandes clusters de máquinas de    prateleira, interli...
MapReduceArquitetura
MapReduceArquitetura•   O nó mestre tem como função atender    requisições    de    execução      (jobs)    efetuadas pelo...
MapReduceArquitetura•   Os trabalhadores por sua vez são    encarregados de executar de fato    essas tarefas, aplicando, ...
MapReduceArquitetura•   A arquitetura compreende, ainda, um    sistema de arquivos distribuídos, onde    ficam armazenados...
MapReduceTolerância a falhasWorker•   Master detecta falhas através de pings    periódicos;•   Re-executa map tasks em pro...
MapReduceTolerância a falhasMaster• Possui um único master, e sua falha é  improvável;• Poderia ser tratada através de  ch...
MapReduceTolerância a falhas•   Robusto: perdeu 1200 máquinas de um    total de 1600, e a operação foi    concluída com su...
Hadoop
HadoopConceito•   Uma      das  implementações     mais    conhecidas do MapReduce faz parte do    projeto Hadoop, mantido...
HadoopConceito•   O    Hadoop     MapReduce    é   uma    implementação em Java do modelo de    framework criado pela Goog...
Hadoop
HadoopRelação entre Google MapReducee Hadoop MapReduce
Performance
PerformanceBackup Tasks•   Problemas causados por stragglers    (máquinas cuja performance está    aquém dos demais nós).•...
PerformanceBackup Tasks•   São cópias de tasks em andamento no final    de sua execução de map/reduce.•   Quando qualquer ...
PerformanceTeste realizado em um cluster de 1800máquinas, com processadores Intel Xeon2GHz, 4GB de memória, dois discos ID...
Performance
Performance•   Utilização de Backup     Tasks reduz    significativamente o      tempo   de    execução.•   Sistema lida b...
Conclusão•   Modelo fácil de usar, mesmo por    programadores     sem     experiência em    processamento distribuído;•   ...
ReferênciasBibliográficas
Referências Bibliográficas1. MapReduce: Simplified Data Processing   on Large Clusters [Jeffrey Dean and   Sanjay Ghemawat...
Upcoming SlideShare
Loading in …5
×

MapReduce

4,703 views
4,599 views

Published on

Apresentação desenvolvida por alunos do curso de Ciências da Computação, da Universidade Federal de Goiás, para a disciplina de Sistemas Distribuídos.

Título: MapReduce

Autores:
Diego Magalhães Cunha
Jorge Luiz de Faria Fernandes
Juliana Paula Félix

Published in: Technology

MapReduce

  1. 1. MapReduce Diego Magalhães Cunha Jorge Luiz de Faria Fernandes Juliana Paula Félix
  2. 2. Roteiro1 - Introdução2 - Processamento Distribuído 2.1 - Clusters 2.2 - Balanceamento de Carga3 - MapReduce 3.1 - Modelo 3.2 - Visão Geral - Google 3.3 - Arquitetura 3.4 - Tolerância a Falhas4 - Hadoop 4.1 - Conceito 4.2 - Relação entre Google MapReduce e Hadoop MapReduce5 - Performance 5.1 Backup Tasks 5.2 Exemplo5 - Conclusão6 - Referências Bibliográficas
  3. 3. Introdução
  4. 4. Introdução• Com a evolução dos sistemas de informação e o aumento da quantidade de serviços disponibilizados a seus usuários, cresce também o volume de dados que precisam ser processados pelos sistemas computacionais.
  5. 5. Introdução• De acordo com a IDC (International Data Corporation), a quantidade de informação criada, capturada ou replicada em meio digital no ano de 2009 apresentou um crescimento de 62% (em relação à média dos anos anteriores), alcançando aproximadamente 800.000 petabytes.
  6. 6. Introdução• Já em 2010, este valor foi por volta de 1.2 milhões de petabytes. Para 2020 o crescimento esperado deve alcançar os 35 zetabytes, equivalentes a 35 milhões de petabytes.
  7. 7. 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 paralela e processamento distribuído.
  8. 8. Introdução• Porém, desenvolver softwares para ambientes distribuídos é uma tarefa complexa, pois envolve uma série de conceitos e problemas que devem ser considerados pelos programadores, tais como: o concorrência o tolerância a falhas o distribuição de dados o e balanceamento de cargas.
  9. 9. Introdução• A fim de facilitar este processo, a multinacional Google desenvolveu o MapReduce, um modelo de programação paralela para processamento largamente distribuído de grandes volumes de dados.
  10. 10. Introdução• Além do framework da Google, diversas implementações para o MapReduce foram desenvolvidas, dentre as quais, a mais conhecida e divulgada está inserida no projeto Hadoop, mantido pela Apache Software Foundation.
  11. 11. Processamento Distribuído
  12. 12. Processamento DistribuídoClusters• Um cluster pode ser definido como um conjunto de máquinas, administrado e utilizado por um único indivíduo, com o objetivo de solucionar problemas que levariam muito tempo (de processamento) em uma única estação de trabalho.
  13. 13. Processamento DistribuídoClusters - Características• constituído por máquinas de prateleira (baixo custo);• nós geograficamente próximos, geralmente em um mesmo prédio;• conexões entre as máquinas possuem altas taxas de transferências;• máquinas são homogêneas, ou seja, possuem capacidades de processamento similares;
  14. 14. Processamento Distribuído
  15. 15. Processamento Distribuído
  16. 16. Processamento Distribuído
  17. 17. Processamento DistribuídoBalanceamento de Carga• O balanceamento de carga é uma prática utilizada para atingir um aproveitamento ótimo dos recursos do sistema distribuído, através de uma política de alocação de trabalho coerente com a capacidade de processamento dos dispositivos do sistema, a fim de obter o mesmo nível de esforço em todos os recursos.
  18. 18. Processamento Distribuído
  19. 19. Processamento Distribuído
  20. 20. MapReduce
  21. 21. MapReduceModelo• O MapReduce, criado pela Google, é um modelo de programação paralela para processamento largamente distribuído de grandes volumes de dados. Seu objetivo é facilitar a programação de aplicativos distribuídos com este perfil.
  22. 22. MapReduceModelo• Para tal, o modelo inspira-se nas primitivas Map e Reduce presentes em diversas linguagens funcionais, como Lisp e Haskell, por exemplo.
  23. 23. MapReduceModelo• 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 fragmentos que compartilhassem a mesma chave.
  24. 24. MapReduceModelo• Assim, a tarefa principal do programador é implementar estas duas funções, indicando como o mapeamento e redução dos dados serão compostos.
  25. 25. MapReduceModelo• 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.
  26. 26. MapReduceModelo• Durante a execução, as funções recebem e emitem dados no formato de pares <chave, valor>. Como o tipo destes elementos dependem da aplicação que será executada, cabe ao desenvolvedor, também, definir estas propriedades.
  27. 27. MapReduce• Pseudocódigo que conta a quantidade de ocorrências de cada palavra em um documento
  28. 28. MapReduceModelo• No pseudocódigo, cada chamada da função map recebe o número dessa linha. Para cada palavra encontrada na linha recebida, a função emite um par chave/valor, onde a chave é a palavra em si, e o valor é a constante 1 (um).
  29. 29. MapReduceModelo• A função reduce, por sua vez, recebe como entrada uma palavra (chave), 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 um par chave/valor contendo a palavra, e seu total de ocorrências é emitido.
  30. 30. MapReduce
  31. 31. MapReduceModelo• Cada linha de texto gera uma chamada à função map;• Cada função map gera n pares <chave, valor> intermediários (n palavras em cada linha);• Pares intermediários associados a uma mesma chave são pasados para uma função reduce;
  32. 32. MapReduceModelo• Cada função reduce retorna a soma de todos os valores presentes na lista de pares recebida.• Resultados são armazenados no arquivo de saída.
  33. 33. MapReduceModelo• frequência de acesso a URLs o Map<URL; 1> / Reduce <URL, Total>• grafo reverso de links web o Map<Destino, Origem> / Reduce <destino, lista(origem)>• índice invertido o Map<palavra, ID documento> / Reduce <palavra, lista(ID documento)>
  34. 34. MapReduceModelo• O modelo MapReduce pode ser executado sobre uma variedade de plataformas e ambientes distintos. Logo, a melhor implementação do framework depende do ambiente alvo.
  35. 35. MapReduceVisão Geral - Google• As máquinas são constituídas de múltiplos processadores x86 rodando linux, com 2-4 GB de memória;• Hardwares de redes usados são geralmente ou 100Mbit/s ou 1Gbit/s no nível da máquina;• Centenas ou milhares de máquinas (falhas de máquinas são comuns);
  36. 36. MapReduceVisão Geral - Google• Armazenamento em discos locais IDE;• Sistema de arquivos distribuído gerencia os dados (GFS);• Usuário implementa as funções map e reduce• A implementação fragmenta o arquivo de entrada em blocos de 64MB (tamanho do bloco do GFS), e armazena cópias de cada bloco em diferentes máquinas.
  37. 37. MapReduceVisão Geral - Google• Usuários submetem jobs (conjunto de tarefas) para o master;• Master escalona tarefas para os workers.
  38. 38. MapReduce
  39. 39. MapReduceArquitetura• Uma implementação feita para utilizar a GPU de uma máquina, por exemplo, provavelmente será beneficiada por um comportamento distinto a uma implementação destinada a um grande cluster.
  40. 40. MapReduceArquitetura• O Google MapReduce foi desenvolvido para grandes clusters de máquinas de prateleira, interligadas por uma rede do tipo switched Ethernet, e é constituído por basicamente dois tipos de nós: Master e Worker (denominados Mestre e Trabalhador em português, respectivamente).
  41. 41. MapReduceArquitetura
  42. 42. MapReduceArquitetura• O nó mestre tem como função atender requisições de execução (jobs) efetuadas pelos usuários, e gerenciá- las, criando variáveis tarefas (tasks) e delegando-as aos nós trabalhadores;
  43. 43. MapReduceArquitetura• Os trabalhadores 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 (típica arquitetura master-slave).
  44. 44. MapReduceArquitetura• A arquitetura compreende, ainda, um sistema de arquivos distribuídos, onde ficam armazenados os dados utilizados como entrada para os Jobs. Para evitar a transferência excessiva de dados, os workers do MapReduce são também nós do sistema de arquivos.
  45. 45. MapReduceTolerância a falhasWorker• Master detecta falhas através de pings periódicos;• Re-executa map tasks em progresso e concluídas;• Re-executa reduce tasks em progresso;• Master re-executa tasks concluídas, eventualmente completando a operação de MapReduce.
  46. 46. MapReduceTolerância a falhasMaster• Possui um único master, e sua falha é improvável;• Poderia ser tratada através de checkpoints;• A atual implementação da Google aborta o MapReduce se o master falhar.
  47. 47. MapReduceTolerância a falhas• Robusto: perdeu 1200 máquinas de um total de 1600, e a operação foi concluída com sucesso.
  48. 48. Hadoop
  49. 49. HadoopConceito• Uma das implementações mais conhecidas do MapReduce faz parte do projeto Hadoop, mantido pela Apache Software Foundation, e que tem como finalidade desenvolver software livre para computação distribuída, escalável e confiável.
  50. 50. HadoopConceito• O Hadoop MapReduce é uma implementação em Java do modelo de framework criado pela Google, o qual foi originalmente desenvolvido em C+ +.• Muito parecido com a implementação da Google, mas é flexível com relação às máquinas em que roda.
  51. 51. Hadoop
  52. 52. HadoopRelação entre Google MapReducee Hadoop MapReduce
  53. 53. Performance
  54. 54. PerformanceBackup Tasks• Problemas causados por stragglers (máquinas cuja performance está aquém dos demais nós).• Tarefas executadas em stragglers atrasam o processamento, principalmente quando ocorre na fase final de um job.
  55. 55. PerformanceBackup Tasks• São cópias de tasks em andamento no final de sua execução de map/reduce.• Quando qualquer uma das cópias termina sua execução com sucesso, as demais são encerradas.• Reduz o tempo de execução em cerca de 40%.
  56. 56. PerformanceTeste realizado em um cluster de 1800máquinas, com processadores Intel Xeon2GHz, 4GB de memória, dois discos IDE160GB, e um link gigabit ethernet.• Ordenação de 1 terabyte de dados
  57. 57. Performance
  58. 58. Performance• Utilização de Backup Tasks reduz significativamente o tempo de execução.• Sistema lida bem com falhas.
  59. 59. Conclusão• Modelo fácil de usar, mesmo por programadores sem experiência em processamento distribuído;• Permite o programador focar no problema, e esquecer os "detalhes";• Grande variedade de problemas podem ser expressos em MapReduce;• Simplificou computações em larga escala do Google.
  60. 60. ReferênciasBibliográficas
  61. 61. Referências Bibliográficas1. MapReduce: Simplified Data Processing on Large Clusters [Jeffrey Dean and Sanjay Ghemawat].2. Simulação e Estudo da Plataforma Hadoop MapReduce em Ambientes Heterogêneos [Wagner Kolberg].

×