ApacheConceitos teóricos e práticos,evolução e novas possibilidadesProf. Dr. Alfredo GoldmanProf. MS. Ivanilton Polato    ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                               2           ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            3              ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                              4            ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                 5         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                             6             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            7              ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            8              ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            9              ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            10             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            11             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            12             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            13             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            14             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            15             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                              16           ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            17             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                             18            ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            19             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            20             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            21             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                22         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                        23 ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            24             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            25             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            26             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            27             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            28             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            29             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            30             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            31             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            32             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            33             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            34             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                       35  ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                               36          ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            37             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            38             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            39             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            40             ...
ApacheHDFS
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            42             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            43             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            44             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            45             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            46             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            47             ...
ApacheMapReduce
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                 49        ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                50         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                51         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            52             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                53         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                 54        ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                   55      ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            56             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            57             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            58             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                               59          ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            60             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            61             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            62             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            63             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            64             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            65             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                           ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            67             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                              68           ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            69             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            70             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            71             ...
Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI                                                          ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            73             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            74             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                             75            ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                76         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            77             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                78         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                79         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                 80        ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                  81       ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            82             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                            83             ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                               84          ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                                85         ...
Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI                                             86            ...
Próximos SlideShares
Carregando em…5
×

XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades.

3.423 visualizações

Publicada em

Apresentação do minucurso JAI 3 do XXXII Congresso da Sociedade Brasileira de Computação

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

Nenhuma nota no slide

XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades.

  1. 1. ApacheConceitos teóricos e práticos,evolução e novas possibilidadesProf. Dr. Alfredo GoldmanProf. MS. Ivanilton Polato By Alfredo Goldman, Fabio Kon, Francisco Pereira Junior, Ivanilton Polato e Rosângela de Fátima Pereira. These slides are licensed under the Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil Licence (CC BY-NC-SA 3.0)
  2. 2. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 2 evolução e novas possibilidadesAutoresDr. Alfredo Goldman Professor DCC IME/USPDr. Fabio Kon Professor DCC IME/USPMs. Francisco Pereira Junior Professor UTFPR-CP Doutorando DCC IME/USPMs. Ivanilton Polato Professor UTFPR-CM Doutorando DCC IME/USPEsp. Rosangela de Fátima Pereira Professora UTFPR-CP
  3. 3. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 3 evolução e novas possibilidadesRoteiro• Motivação• Origens do Hadoop e Apache Hadoop• Vantagens e Desvantagens• O universo Hadoop• Sistema de Arquivos HDFS• O paradigma MapReduce• Exemplos e práticas
  4. 4. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 4 evolução e novas possibilidadesMotivação• Uso potencial de aplicações BigData • Conjuntos de dados na ordem de petabytes • Computação intensiva sobre os dados• Computação paralela não é trivial • Divisão das subtarefas • Escalonamento das subtarefas • Balanceamento de carga
  5. 5. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 5 evolução e novas possibilidadesMotivação• Apache Hadoop • Retira a complexidade na computação de alto desempenho• Custo eficiente • Máquinas comuns • Rede comum • Tolerância a falhas automática • Poucos administradores • Facilidade de Uso • Poucos programadores
  6. 6. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 6 evolução e novas possibilidadesHadoop• Arcabouço para processamento e armazenamento de dados em larga escala: • Código aberto • Implementado em Java • Inspirado no GFS e MapReduce da Google • Projeto principal da Fundação Apache • Tecnologia recente, porém já muito utilizada
  7. 7. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 7 evolução e novas possibilidadesHistórico***http://nutch.apache.org/***http://labs.google.com/papers/mapreduce.html***http://labs.google.com/papers/gfs.html
  8. 8. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 8 evolução e novas possibilidadesComo originou?• 2003: Google publica artigo do GFS• 2004: Google publica artigo do MapReduce• 2005: Doug Cutting cria uma versão do MapReduce para o projeto Nutch• 2006: Hadoop se torna um projeto independente da Fundação Apache
  9. 9. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 9 evolução e novas possibilidadesComo originou?• 2007: Yahoo se torna a maior contribuinte do projeto• 2008: Hadoop se transforma em um projeto principal da Apache• 2011: Apache disponibiliza versão 1.0.0
  10. 10. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 10 evolução e novas possibilidadesQuem utiliza?
  11. 11. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 11 evolução e novas possibilidadesOnde utilizar?• DataWarehouse• Business Intelligence• Aplicações analíticas• Mídias sociais
  12. 12. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 12 evolução e novas possibilidadesMuitas possibilidades...
  13. 13. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 13 evolução e novas possibilidadesVantagens• Por que usar Hadoop? • Código aberto • Econômico • Robusto • Escalável • Foco na regra de negócio
  14. 14. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 14 evolução e novas possibilidadesVantagens (1)• Código Aberto • Comunidade ativa • Apoio de grandes corporações • Maiores correções de erros • Constante evolução do arcabouço
  15. 15. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 15 evolução e novas possibilidadesVantagens (2)• Econômico • Software livre • Uso de máquinas e redes convencionais • Aluguel de serviços disponíveis na nuvem • Exemplo: Amazon Elastic MapReduce
  16. 16. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 16 evolução e novas possibilidadesVantagens (3)• Robusto • Se em 1 máquina há probabilidade de haver falhas... • Tempo médio entre falhas para 1 nó: 3 anos • Tempo médio entre falhas para 1000 nós: 1 dia • Hadoop proporciona alta tolerância a falhas • Estratégias • Replicação dos dados • Armazenamento de metadados
  17. 17. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 17 evolução e novas possibilidadesVantagens (4)• Escalável • Permite facilmente adicionar máquinas ao aglomerado • Adição não implica na alteração do código- fonte • Limitação apenas relacionada a quantidade de recursos disponíveis
  18. 18. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 18 evolução e novas possibilidadesVantagens (5)• Foco na regra de negócio • Hadoop realiza o "trabalho duro“ • Desenvolvedores podem focar apenas na abstração do problema
  19. 19. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 19 evolução e novas possibilidadesDesvantagens (1)• Único nó mestre • Ponto único de falha • Pode impedir o escalonamento
  20. 20. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 20 evolução e novas possibilidadesDesvantagens (2)• Dificuldade das aplicações paralelas • Problemas não paralelizáveis • Processamento de arquivos pequenos • Muito processamento em poucos dados
  21. 21. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 21 evolução e novas possibilidadesSuposições de Projeto (1)• Os dados que serão processados não cabem em um nó• Cada nó é hardware comum• Falhas acontecem• Ideias e Soluções do Apache Hadoop: • Sistema de arquivos distribuído • Replicação interna • Recuperação de falhas automática
  22. 22. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 22 evolução e novas possibilidadesSuposições de Projeto (2)• Mover dados é caro• Mover computação é barato• Computação distribuída é fácil• Ideias e Soluções do Apache Hadoop: • Mover a computação para os dados • Escrever programas que são fáceis de se distribuir
  23. 23. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 23 evolução e novas possibilidadesGoogle MapReduce• O modelo inicial proposto pelo Google apresentou alguns conceitos para facilitar alguns problemas• Paralelização da computação em um aglomerado de máquinas comuns • Centenas/Milhares de CPUs• Paralelização e distribuição automática da computação deveria ser o mais simples possível• O sistema de execução se encarrega de: • Particionar e distribuir os dados de entrada • Escalonar as execuções em um conjunto de máquinas • Tratar as falhas • Comunicação entre as máquinas
  24. 24. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 24 evolução e novas possibilidadesSubprojetos• Principais • Hadoop Common • Hadoop Distributed File System (HDFS) • Hadoop MapReduce
  25. 25. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 25 evolução e novas possibilidadesO Hadoop Common• O Hadoop Common oculta o que os usuários comuns não precisam saber! • Paralelização automática • Balanceamento de carga • Otimização nas transferências de disco e rede • Tratamento de falhas • Robustez • Escalabilidade
  26. 26. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 26 evolução e novas possibilidadesOutros Subprojetos• Avro – Seriação de dados• Chukwa – Monitoramento de SD• Hbase – BD distribuído e escalável• Hive – Infraestrutura de datawarehouse• Pig – Linguagem de fluxo de dados• ZooKeeper – Coordenação de serviços
  27. 27. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 27 evolução e novas possibilidades
  28. 28. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 28 evolução e novas possibilidadesComponentes do Hadoop• Nó Mestre: • NameNode • DataNode • SecondaryNameNode• Nó(s) Escravo(s): • JobTracker • TaskTracker
  29. 29. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 29 evolução e novas possibilidadesComponentes do Hadoop• NameNode • Gerencia os metadados dos arquivos • FSImage e EditLog • Controla a localização das réplicas • Encaminha os blocos aos nós escravos • Mantém as informações em memória
  30. 30. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 30 evolução e novas possibilidadesComponentes do Hadoop• DataNode • Realiza o armazenamento dos dados • Permite armazenar diversos blocos • Deve se comunicar com o NameNode
  31. 31. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 31 evolução e novas possibilidadesComponentes do Hadoop• SecondaryNameNode • Nó auxiliar do HDFS • Realiza pontos de checagem em intervalos pré-definidos • Permite manter o nível de desempenho do NameNode
  32. 32. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 32 evolução e novas possibilidadesComponentes do Hadoop• JobTracker • Gerencia o plano de execução de tarefas MapReduce • Designa as tarefas aos nós escravos • Monitora a execução das tarefas, para agir no caso de falhas
  33. 33. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 33 evolução e novas possibilidadesComponentes do Hadoop• TaskTracker • Realiza o processamento das tarefas MapReduce • Uma instância em cada nó escravo
  34. 34. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 34 evolução e novas possibilidadesResumindo...
  35. 35. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 35 evolução e novas possibilidadesNameNode e DataNodes no HDFSNameNode (NN) DataNode (DN) • Gerencia o namespace do sistema • Servidor de blocos que armazena de arquivos • Dados no sistema de arquivos local • Mapeia nomes de arquivos para • Metadados dos blocos (hash) blocos • Disponibiliza metadados para • Mapeia blocos para DataNodes clientes • Gerenciamento de replicação
  36. 36. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 36 evolução e novas possibilidadesJobTracker e TaskTrackers no MR• JobTracker (JT) TaskTrackers (TT) • Controla os metadados • Solicita trabalho do JT • Status de um job • Busca código para executar do • Status de Tasks nos TTs DFS • Decide o escalonamento • Aplica configurações específicas dos jobs • Comunicam-se com o JT nas tasks • Enviar saídas, atualizações de tasks, matar tasks, ...
  37. 37. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 37 evolução e novas possibilidadesFormas de Execução• Local• Pseudo-distribuído• Completamente distribuído
  38. 38. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 38 evolução e novas possibilidadesFormas de Execução• Local: • Configuração padrão • Recomendável para a fase de desenvolvimento e testes • Aplicação é executada na máquina local
  39. 39. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 39 evolução e novas possibilidadesFormas de Execução• Pseudo-distribuído • "Cluster" de uma máquina só • Configuração similar à do processamento em um cluster... • ... porém o processamento continua sendo executado na máquina local
  40. 40. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 40 evolução e novas possibilidadesFormas de Execução• Completamente distribuído • Processamento real de uma aplicação Hadoop • Deve indicar quais máquinas irão efetivamente executar os componentes Hadoop
  41. 41. ApacheHDFS
  42. 42. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 42 evolução e novas possibilidadesHDFS• Hadoop Distributed Filesystem • Características • Divisão em blocos • Replicação de dados
  43. 43. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 43 evolução e novas possibilidadesHDFS• Características• Sistema de arquivos distribuídos• Arquitetura Mestre/Escravo• Inspirado no Google FileSystem (GFS)
  44. 44. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 44 evolução e novas possibilidadesCaracterísticas• Implementado em Java• Armazenamento de grandes volumes de dados• Recuperação de dados transparente ao usuário
  45. 45. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 45 evolução e novas possibilidadesDivisão em Blocos• Disco rígido pode não suportar o tamanho de um arquivo • Principalmente em soluções BigData• HDFS divide os arquivos em blocos de mesmo tamanho • 64 MB por padrão
  46. 46. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 46 evolução e novas possibilidadesReplicação de Dados• 3 réplicas para cada bloco • Aumento de segurança e disponibilidade• Cada réplica em um diferente nó • 2 em um mesmo armário (rack) e 1 em um armário diferente• Re-Replicação • Em casos de corromper uma das réplicas
  47. 47. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 47 evolução e novas possibilidadesExemplo…
  48. 48. ApacheMapReduce
  49. 49. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 49 evolução e novas possibilidadesUm pequeno grande exemplo• Word Count (Conta Palavras)• Gera uma lista da frequência das palavras em um conjunto de arquivos. • Conjunto de arquivos: terabytes! 2012, 4 CSBC, 3 CSBC JAI 2012 Curitiba, 2 CSBC 2012 em Curitiba em, 1 Word Count JAI, 2Minicurso Hadoop JAI 2012 Hadoop, 1CSBC 2012 Curitiba Paraná Minicurso, 1 Paraná, 1
  50. 50. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 50 evolução e novas possibilidadesEm um mundo não paralelo!• Assuma que a máquina tem memória suficiente (1+ Tb?) word-count ( ) { for each document d { for each word w in d { w_count[w]++; } } save w_count to persistent storage }• Provavelmente a execução demorará um longo tempo (dias, semanas...) pois a entrada é da ordem de terabytes
  51. 51. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 51 evolução e novas possibilidadesEm um mundo paralelo qualquer!Mutex lock; // protects w_countword-count ( ) { for each document d in parallel { for each word w in d { lock.Lock(); w_count[w]++; lock.Unlock(); } } save w_count to persistent storage }• Problemas: utiliza uma estrutura de dados única e global. • Recursos compartilhados: seção crítica!
  52. 52. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 52 evolução e novas possibilidadesNo Mundo Hadoop• Usando o MapReduce podemos resolver problemas da seguinte forma: • Leia uma grande quantidade de dados • Aplique a função MAP: extrai alguma informação de valor! • Fase intermediária: Shuffle & Sort • Aplique a função REDUCE: reúne, compila, filtra, transforma,... • Grava os resultados
  53. 53. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 53 evolução e novas possibilidadesMapReduce• A ideia do paradigma de programação Map e Reduce não é nova• Provavelmente 40+ anos!• No Hadoop é a parte do arcabouço responsável pelo processamento distribuído (paralelo) de grandes conjuntos de dados.• Provê um modelo de programação• Usa padrões já conhecidos: cat | grep | sort | unique > file input | map | shuffle | reduce > output
  54. 54. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 54 evolução e novas possibilidadesA natureza do Map• Map em programação funcional map({1,2,3,4}, (x2)) -> {2,4,6,8}• Todos os elementos são processados por um método e os elementos não afetam uns aos outros
  55. 55. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 55 evolução e novas possibilidadesA natureza do Reduce• Reduce em programação funcional reduce({1,2,3,4}, (x)) -> {24}• Todos elementos na lista são processados juntos• Tanto em Map quanto em Reduce: a entrada é fixa (imutável), e a saída é uma nova lista (em geral)
  56. 56. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 56 evolução e novas possibilidadesO paradigma implementado• O paradigma MapReduce é adequado para trabalhar com grandes quantidades de dados• Realiza computação sobre os dados (pouca movimentação de dados)• Utiliza os blocos armazenados no DFS, logo não necessita divisão dos dados
  57. 57. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 57 evolução e novas possibilidadesIlustrando a ideia original
  58. 58. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 58 evolução e novas possibilidadesMapReduce no Hadoop• A função Map atua sobre um conjunto de entrada com chaves e valores, produzindo uma lista de chaves e valores• A função Reduce atua sobre os valores intermediários produzidos pelo Map para, normalmente, agrupar os valores e produzir a saída
  59. 59. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 59 evolução e novas possibilidadesExemplos: Word Count• Lê arquivos texto e conta a frequência das palavras • Entrada: arquivos texto • Saída: arquivo texto • Cada linha: palavra, separador (tab), quantidade• Map: gera pares de (palavra, quantidade)• Reduce: para cada palavra, soma as quantidades
  60. 60. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 60 evolução e novas possibilidadesWord Count (Pseudo-código)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));
  61. 61. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 61 evolução e novas possibilidadesExecução do WordCount
  62. 62. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 62 evolução e novas possibilidadesImplementação do Hadoop
  63. 63. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 63 evolução e novas possibilidadesOutros exemplos: Grep• Procura nos arquivos de entrada por um dado padrão• Map: emite uma linha se um padrão é encontrado• Reduce: copia os resultados para a saída
  64. 64. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 64 evolução e novas possibilidadesIlustrando o Grep cat | grep | sort | unique > file input | map | shuffle | reduce > output
  65. 65. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 65 evolução e novas possibilidadesOutros exemplos: Índice Invertido• Gerar o índice invertido das palavras de um conjunto de arquivos dado• Map: faz a análise dos documentos e gera pares de (palavra, docId)• Reduce: recebe todos os pares de uma palavra, organiza os valores docId, e gera um par (palavra, lista(docId))
  66. 66. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 66 evolução e novas possibilidadesIlustrando o Índice Invertido hamlet.txt to, hamlet.txt to be or not be, hamlet.txt to be or, hamlet.txt afraid, (12th.txt) not, hamlet.txt be, (12th.txt, hamlet.txt) greatness, (12th.txt) not, (12th.txt, hamlet.txt) be, 12th.txt of, (12th.txt) 12th.txt not, 12th.txt or, (hamlet.txt) afraid, 12th.txt to, (hamlet.txt) be not afraid of greatness of, 12th.txt greatness, 12th.txt
  67. 67. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 67 evolução e novas possibilidadesApache Mahout• É uma biblioteca de algoritmos de aprendizagem de máquina• É um projeto da Apache Software Foundation• Software Livre (Licença Apache)• Principal objetivo é ser escalável para manipular volume gigantesco de dados
  68. 68. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 68 evolução e novas possibilidadesOnde usar o Mahout?• Trabalha com: • Matrizes e vetores • Estruturas esparsas e densas • Agrupamento • Cobertura • K-Means • Análise de densidade de funções • Filtragem colaborativa• Mahout pode ser usado com o Hadoop explorando sua escalabilidade para processar os dados
  69. 69. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 69 evolução e novas possibilidadesGerando recomendações• Construir uma matriz que relaciona os itens:• Matriz de co-ocorrência• Computa o número de vezes que cada par de itens aparecem juntos na lista de preferências de algum usuário• Se existem 9 usuários que expressam preferência pelos itens X e Y, então X e Y co- ocorrem 9 vezes• Co-ocorrência é como similaridade, quanto mais dois itens aparecem juntos, mais provável que sejam similares
  70. 70. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 70 evolução e novas possibilidadesGerando recomendações
  71. 71. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 71 evolução e novas possibilidadesGerando recomendações• Computando o vetor de cada usuário• Um vetor para cada usuário• Com n itens na base de dados, o vetor de preferências terá n dimensões• Se o usuário não exprime nenhuma preferência por um determinado item, o valor correspondente no vetor será zero• Neste exemplo, o vetor do usuário três é [2.0, 0.0, 0.0, 4.0, 4.5, 0.0, 5.0]
  72. 72. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 72 evolução e novas possibilidades Gerando recomendaçõesMultiplicando a matriz de co-ocorrência com o vetor de preferências do usuáriotrês para chegar ao vetor que nos leva às recomendações
  73. 73. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 73 evolução e novas possibilidadesGerando recomendações• Intuitivamente, olhando para a linha 3 da tabela, se o item desta linha co-ocorre com muitos itens que o usuário 3 expressou sua preferência, então é provável que seja algo que o usuário 3 goste
  74. 74. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 74 evolução e novas possibilidadesIntegrando o Mahout no Hadoop• Precisamos do RecommenderJob• Modo Newbie (Novato!): • Apenas coloque o JAR pré-compilado da distribuição do Mahout no diretório do hadoop. • mahout-core-0.6-job.jar• Modo Expert: • Faça as alterações necessárias no Mahout para sua persolnalização, gere o JAR e coloque no diretório do hadoop.
  75. 75. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 75 evolução e novas possibilidadesChamada do Mahout no Hadoop:~$ bin/hadoop jar mahout-core-0.6-job.jarorg.apache.mahout.cf.taste.hadoop.item.RecommenderJo b-Dmapred.input.dir=input/movieRec10M.txt-Dmapred.output.dir=output--usersFile input/movieUsers.txt--numRecommendations 10--maxPrefsPerUser 100--similarityClassname SIMILARITY_COSINE
  76. 76. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 76 evolução e novas possibilidadesFormato dos dadosO recomendador do Mahout espera que os dadosestejam da forma: userID, itemID [,preferencevalue]• UserID é um Long• ItemID é um Long• Preferencevalue é um Double
  77. 77. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 77 evolução e novas possibilidadesCarregar os dados no HDFSComando:hadoop fs -put <caminho_local_do_arquivo><caminho_do_arquivo_no_hdfs>Ex::~$ hadoop fs -put moviesRecommendation1M.txtinput/moviesRec.txt
  78. 78. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 78 evolução e novas possibilidadesExecutando o RecomenderJobParâmetros de chamada:--usersFile(path): (xor) arquivo contendo os Ids dosusuários considerados na computação--itemsFile(path): (xor) arquivo contendo os Ids dos itens;--numRecommendations(integer): número derecomendações computadas por usuário (padrão:10)--booleanData(boolean): tratar a entrada como não tendovalores de preferência (padrão:falso)--maxPrefsPerUser(integer): número máximo depreferências consideradas por usuário (padrão:10)
  79. 79. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 79 evolução e novas possibilidadesExecutando o RecomenderJobParâmetros de chamada:--similarityClassname(classname): (obrigatório) medida desimilaridade; • SIMILARITY_COOCCURRENCE • SIMILARITY_LOGLIKELIHOOD • SIMILARITY_TANIMOTO_COEFFICIENT • SIMILARITY_CITY_BLOCK • SIMILARITY_COSINE • SIMILARITY_PEARSON_CORRELATION • SIMILARITY_EUCLIDEAN_DISTANCE
  80. 80. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 80 evolução e novas possibilidadesDemonstração• Rodar o Hadoop na máquina local • Pseudo-Distributed mode• Colocar rating para 10 filmes que já assistiu• Enviar arquivos para o HDFS• Rodar o recomendador• Aplicar script python nos resultados
  81. 81. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 81 evolução e novas possibilidadesPreenchendo com suas recomendaçõesEdite o arquivo yourRec.txt e coloque suasrecomendações nele: • Crie um id único a partir de 1000 (chute um valor); • Procure no arquivo filmes.txt por filmes que você já assistiu e classifique-os com nota de 1 a 5. • Cada linha de seu arquivo deverá conter a seguinte estrutura: • <user_id_criado>,<id_filme>,<rating> • ex: 1977,123,4 • Faça isto para no mínimo dez filmes.
  82. 82. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 82 evolução e novas possibilidadesPreenchendo com suas recomendações• Agora vamos juntar suas recomendações com o arquivo de recomendações de outros usuários com o comando::~$ cat yourRec.txt >> rec.txt• Edite o arquivo user.txt que contenha apenas uma linha com seu user_id criado nela.
  83. 83. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 83 evolução e novas possibilidadesEnviando arquivos ao HDFS• Agora que os arquivos estão preenchidos, envie seus dois arquivos para o fs com os comandos::~$ bin/hadoop fs -put rec.txt input/rec.txt:~$ bin/hadoop fs -put user.txt input/user.txt
  84. 84. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 84 evolução e novas possibilidadesRodando o RecommenderJobVerificar se o arquivo mahout-core-0.6-job.jar está nodiretório raiz do hadoop.• A partir do diretório raiz do hadoop, executar o comando::~$ bin/hadoop jar mahout-core-0.6-job.jarorg.apache.mahout.cf.taste.hadoop.item.RecommenderJob-Dmapred.input.dir=input/rec.txt-Dmapred.output.dir=output--usersFile input/user.txt--numRecommendations 10--maxPrefsPerUser 100--similarityClassname SIMILARITY_COSINE
  85. 85. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 85 evolução e novas possibilidadesResultados!• Acesse em seu navegador: http://localhost:50070/ • Opção: “Browse the filesystem”• Verificar os filmes recomendados para você usando o script imprimeFilmes.py com o seguinte comando::~$ python imprimeFilmes <arquivo_resultado><arquivo_filmes> <id_usuario>
  86. 86. Hadoop: conceitos teóricos e práticos,XXXII CSBC 2012 – XXX JAI 86 evolução e novas possibilidadesReferências!• Livros:• Hadoop – The Definitive Guide • Tom White – 2ª Ed.• Hadoop in Action • Chuck Lam – 1ª Ed.• Web: • http://wiki.apache.org/hadoop/• Materiais extras: • Luciana Arantes

×