Seminário Hadoop

1.978 visualizações

Publicada em

Apache Hadoop Project

Publicada em: Tecnologia
2 comentários
5 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
1.978
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
131
Comentários
2
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Seminário Hadoop

  1. 1. <ul>Ivanilton Polato UTFPR Câmpus Campo Mourão Doutorado em Ciência da Computação DINTER IME/USP-UTFPR Janeiro/2012 </ul><ul>Introdução ao Apache Hadoop </ul>
  2. 2. <ul>Motivações atuais! </ul><ul><li>Grandes quantidades (massivas) de dados </li></ul><ul><ul><li>Não cabem em uma máquina!
  3. 3. Demoram MUITO para processar serialmente! </li></ul></ul><ul><li>Máquinas individuais falham! </li></ul><ul><ul><li>Mais máquinas juntas... probabilidade maior!
  4. 4. O número de nós em um cluster não é constante! </li></ul></ul><ul><li>Computação nas nuvens </li></ul><ul><ul><li>Disponibilidade de computação e dados </li></ul></ul><ul><li>Escalabilidade de aplicações </li></ul><ul><ul><li>Computação sob demanda </li></ul></ul>
  5. 5. <ul>Histórico </ul><ul>Fonte: Evert Lammerts (SARA.nl) </ul><ul>* http://nutch.apache.org/ ** http://labs.google.com/papers/mapreduce.html http://labs.google.com/papers/gfs.html </ul>
  6. 6. <ul>Histórico </ul><ul><li>Fev/03 – Primeira biblioteca Map/Reduce na Google
  7. 7. Out/03 – Artigo sobre GFS
  8. 8. Dez/04 – Artigo sobre Map Reduce
  9. 9. Dez/05 – Doug Cutting implementa MR e DFS no Nutch
  10. 10. Fev/06 – Hadoop se torna um projeto oficial da Apache, Doug Cutting é contratado pela Yahoo!, que adota o Hadoop
  11. 11. Abr/07 – Yahoo! roda Hadoop em um cluster de 1000 nós
  12. 12. Jan/08 – Hadoop se transforma em um projeto principal da Apache
  13. 13. Dez/11 – Apache disponibiliza versão 1.0.0 </li></ul>
  14. 14. <ul>O que é Apache Hadoop? </ul><ul><li>Framework para computação distribuída </li></ul><ul><ul><li>Usado em clusters/grades computacionais
  15. 15. Milhares de nós
  16. 16. Hardware comum (Commodity cluster computing)
  17. 17. Petabytes de dados </li></ul></ul><ul><li>Open Source (licença Apache)
  18. 18. Java
  19. 19. Inspirado originalmente pelo GFS e MapReduce da Google </li></ul>
  20. 20. <ul>Suposições do Projeto </ul><ul><li>Os dados que serão processados não cabem em um nó
  21. 21. Cada nó é hardware comum
  22. 22. Falhas acontecem </li></ul><ul><li>Ideias: </li></ul><ul>Sistema de arquivos distribuído Replicação interna Recuperação de falhas automática </ul>
  23. 23. Suposições do Projeto <ul><li>Mover dados é caro
  24. 24. Mover computação é barato
  25. 25. Computação distribuída é fácil </li></ul><ul><li>Ideias: </li></ul><ul>Mover a computação para os dados Escrever programas que são fáceis de se distribuir </ul>
  26. 26. <ul>Composição do Apache Hadoop </ul><ul><li>Núcleo composto por: </li></ul><ul><ul><li>Hadoop Common
  27. 27. HDFS: distribui os dados
  28. 28. MapReduce: distribui as aplicações </li></ul></ul><ul><li>Projetos relacionados: </li></ul><ul><ul><li>HBase: BD distribuído e escalável
  29. 29. Hive e Pig: infraestrutura de DW </li></ul></ul><ul>Na web: http://hadoop.apache.org/ </ul>
  30. 30. <ul>Possibilidades de uso </ul>
  31. 31. <ul>Quem usa? </ul><ul><li>Lista completa: http://wiki.apache.org/hadoop/PoweredBy </li></ul>
  32. 32. <ul>HDFS Hadoop Distributed File System </ul>
  33. 33. <ul>HDFS: Hadoop Distributed File System </ul><ul><li>Sistema de arquivos distribuído </li></ul><ul><ul><li>Grande  ordem de 10k nós
  34. 34. Milhões de arquivos </li></ul></ul><ul><li>Projetado para hardware de baixo custo </li></ul><ul><ul><li>Redundância por replicação
  35. 35. Tolerância a falhas e recuperação </li></ul></ul><ul><li>Otimizado para processamento em lote </li></ul><ul><ul><li>Localização dos dados exposta
  36. 36. Grande largura de banda associada </li></ul></ul>
  37. 37. <ul>HDFS: Hadoop Distributed File System </ul><ul><li>Coerência dos dados </li></ul><ul><ul><li>Modelo “ write-once-ready-many ”
  38. 38. Arquivos existentes sofrem apenas operações de “ append ” </li></ul></ul><ul><li>Arquivos quebrados em pedaços (blocos) </li></ul><ul><ul><li>Variam de 64mb (padrão) a 256mb
  39. 39. Blocos distribuídos pelos nós (um arquivo é dividido em N blocos e armazenado em M nós)
  40. 40. Blocos são replicados e as replicações distribuídas </li></ul></ul>
  41. 41. <ul>MapReduce </ul>
  42. 42. <ul>A ideia </ul><ul><li>A ideia do paradigma de programação Map e Reduce não é nova </li></ul><ul><ul><li>Provavelmente 40+ anos! </li></ul></ul><ul><li>No Hadoop é a parte do framework responsável pelo processamento distribuído (paralelo) de grandes conjuntos de dados.
  43. 43. Provê um modelo de programação
  44. 44. Usa padrões já conhecidos: </li></ul><ul>cat | grep | sort | unique > file input | map | shuffle | reduce > output </ul>
  45. 45. <ul>A natureza do MapReduce </ul><ul><li>Map em programação funcional </li></ul><ul><ul><li>map({1,2,3,4}, (x2))  {2,4,6,8}
  46. 46. Todos os elementos são processados por um método e os elementos não afetam uns aos outros </li></ul></ul><ul><li>Reduce em programação funcional </li></ul><ul><ul><li>reduce({1,2,3,4}, (x))  {24}
  47. 47. Todos elementos na lista são processados juntos </li></ul></ul><ul><li>Tanto em Map quanto em Reduce: </li></ul><ul><ul><li>A entrada é fixa (imutável), e a saída é uma nova lista </li></ul></ul>
  48. 48. <ul>Continuando... </ul><ul><li>O paradigma MapReduce é adequado para trabalhar com grandes quantidades de dados </li></ul><ul><ul><li>Realiza computação sobre os dados (pouca movimentação de dados)
  49. 49. Utiliza os blocos armazenados no DFS, logo não necessita divisão dos dados </li></ul></ul><ul><li>Lida com o paralelismo </li></ul><ul><ul><li>Um Map por bloco, se possível </li></ul></ul>
  50. 50. <ul>MapReduce no Hadoop </ul><ul><li>A função Map atua sobre um conjunto de entrada com chaves e valores, produzindo uma lista de chaves e valores
  51. 51. A função Reduce atua sobre os valores intermediários produzidos pelo Map para, normalmente, agrupar os valores e produzir a saída </li></ul><ul>Input </ul><ul>Output </ul><ul>map </ul><ul><k1, v1> </ul><ul>lista(<k2, v2>) </ul><ul>reduce </ul><ul><k2, lista(v2)> </ul><ul>lista(<k3, v3>) </ul>
  52. 52. <ul>Exemplos: Word Count </ul><ul><li>Lê arquivos texto e conta a frequência das palavras </li></ul><ul><ul><li>Entrada: arquivos texto
  53. 53. Saída: arquivo texto </li><ul><li>Cada linha: palavra, separador (tab), quantidade </li></ul></ul></ul><ul><li>Map : gera pares de (palavra, quantidade)
  54. 54. Reduce : para cada palavra, soma as quantidades </li></ul>
  55. 55. <ul>Map e Reduce (Pseudo-código) </ul><ul>map(String key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate(w, “1”); reduce(String key, Iterator values): // key: a word // values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result)); </ul>
  56. 56. <ul>Outros exemplos: Grep </ul><ul><li>Procura nos arquivos de entrada por um dado padrão
  57. 57. Map : emite uma linha se um padrão é encontrado
  58. 58. Reduce : Copia os resultados para a saída </li></ul>
  59. 59. <ul>Outros exemplos: Índice invertido </ul><ul><li>Gerar o índice invertido das palavras de um conjunto de arquivos dado
  60. 60. Map : faz a análise dos documentos e gera pares de (palavra, docId)
  61. 61. Reduce : recebe todos os pares de uma palavra, organiza os valores docId, e gera um par (palavra, lista(docId)) </li></ul>
  62. 62. <ul>Modelo de execução do MapReduce </ul>
  63. 63. <ul>Exemplo de execução (Single machine) </ul>
  64. 64. <ul>Funcionamento em um cluster </ul>
  65. 65. <ul>MapReduce: Simplified Data Processing on Large Clusters Jeffrey Dean e Sanjay Ghemawat ACM, 2008 </ul>
  66. 66. <ul>HDFS: NameNode & DataNodes </ul><ul>NameNode (NN) </ul><ul><li>Gerencia o namespace do sistema de arquivos </li></ul><ul><ul><li>Mapeia nomes de arquivos para blocos
  67. 67. Mapeia blocos para DataNodes </li></ul></ul><ul><li>Gerenciamento de replicação </li></ul><ul>DataNode (DN) </ul><ul><li>Servidor de blocos que armazena </li></ul><ul><ul><li>Dados no sistema de arquivos local
  68. 68. Metadados dos blocos (hash)
  69. 69. Disponibiliza metadados para clientes </li></ul></ul><ul>Fonte: Evert Lammerts (SARA.nl) </ul>
  70. 70. <ul>MapReduce: JobTracker & TaskTrackers </ul><ul>JobTracker </ul><ul><li>Controla os metadados </li></ul><ul><ul><li>Status de um job
  71. 71. Status de Tasks nos TTs </li></ul></ul><ul><li>Decide o escalonamento </li></ul><ul>TaskTrackers </ul><ul><li>Solicita trabalho do JT </li></ul><ul><ul><li>Busca código para executar do DFS
  72. 72. Aplica configurações específicas dos jobs </li></ul></ul><ul><li>Comunicam-se com o JT nas tasks </li></ul><ul><ul><li>Enviar saídas, atualizações de tasks, matar tasks, ... </li></ul></ul><ul>Fonte: Evert Lammerts (SARA.nl) </ul>
  73. 73. <ul>Possibilidades </ul>
  74. 74. <ul>Serviços web </ul><ul><li>Gerenciamento de serviços web usando Hadoop: </li></ul><ul>XiLu Zhu; Bai Wang; , &quot;Web service management based on Hadoop,&quot; Service Systems and Service Management (ICSSSM), 2011 8th International Conference on , vol., no., pp.1-6, 25-27 June 2011 doi: 10.1109/ICSSSM.2011.5959326 </ul>
  75. 76. <ul>Saiba mais: </ul><ul><li>Livros </li></ul><ul><ul><li>Hadoop – The Definitive Guide </li><ul><li>Tom White – 2ª Ed. </li></ul><li>Hadoop in Action </li><ul><li>Chuck Lam – 1ª Ed. </li></ul></ul></ul><ul><li>Web: http://wiki.apache.org/hadoop/ </li></ul>

×