xxxi jai - apache hadoop: conceitos teóricos e práticos, evolução e novas possibilidades
DESCRIPTION
Apresentação do minucurso JAI 3 do XXXII Congresso da Sociedade Brasileira de ComputaçãoTRANSCRIPT
![Page 1: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/1.jpg)
Conceitos teóricos e práticos,
evolução e novas possibilidades
Prof. Dr. Alfredo Goldman Prof. MS. Ivanilton Polato
Apache
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)
![Page 2: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/2.jpg)
Autores
Dr. Alfredo Goldman Professor DCC IME/USP
Dr. Fabio Kon Professor DCC IME/USP
Ms. Francisco Pereira Junior Professor UTFPR-CP
Doutorando DCC IME/USP
Ms. Ivanilton Polato Professor UTFPR-CM
Doutorando DCC IME/USP
Esp. Rosangela de Fátima Pereira Professora UTFPR-CP
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 2
![Page 3: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/3.jpg)
Roteiro
• 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 3
![Page 4: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/4.jpg)
Motivaçã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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 4
![Page 5: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/5.jpg)
Motivaçã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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 5
![Page 6: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/6.jpg)
Hadoop
• 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 6
![Page 7: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/7.jpg)
Histórico
***http://nutch.apache.org/
***http://labs.google.com/papers/mapreduce.html
***http://labs.google.com/papers/gfs.html
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 7
![Page 8: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/8.jpg)
Como 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 8
![Page 9: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/9.jpg)
Como 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 9
![Page 10: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/10.jpg)
Quem utiliza?
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 10
![Page 11: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/11.jpg)
Onde utilizar?
• DataWarehouse
• Business Intelligence
• Aplicações analíticas
• Mídias sociais
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 11
![Page 12: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/12.jpg)
Muitas possibilidades...
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 12
![Page 13: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/13.jpg)
Vantagens
• Por que usar Hadoop?
• Código aberto
• Econômico
• Robusto
• Escalável
• Foco na regra de negócio
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 13
![Page 14: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/14.jpg)
Vantagens (1)
• Código Aberto
• Comunidade ativa
• Apoio de grandes corporações
• Maiores correções de erros
• Constante evolução do arcabouço
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 14
![Page 15: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/15.jpg)
Vantagens (2)
• Econômico
• Software livre
• Uso de máquinas e redes convencionais
• Aluguel de serviços disponíveis na nuvem
• Exemplo: Amazon Elastic MapReduce
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 15
![Page 16: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/16.jpg)
Vantagens (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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 16
![Page 17: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/17.jpg)
Vantagens (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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 17
![Page 18: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/18.jpg)
Vantagens (5)
• Foco na regra de negócio
• Hadoop realiza o "trabalho duro“
• Desenvolvedores podem focar apenas na
abstração do problema
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 18
![Page 19: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/19.jpg)
Desvantagens (1)
• Único nó mestre
• Ponto único de falha
• Pode impedir o escalonamento
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 19
![Page 20: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/20.jpg)
Desvantagens (2)
• Dificuldade das aplicações paralelas
• Problemas não paralelizáveis
• Processamento de arquivos pequenos
• Muito processamento em poucos dados
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 20
![Page 21: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/21.jpg)
Suposiçõ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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 21
![Page 22: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/22.jpg)
Suposiçõ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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 22
![Page 23: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/23.jpg)
Google 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 23
![Page 24: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/24.jpg)
Subprojetos
• Principais
• Hadoop Common
• Hadoop Distributed File System (HDFS)
• Hadoop MapReduce
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 24
![Page 25: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/25.jpg)
O 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 25
![Page 26: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/26.jpg)
Outros 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 26
![Page 27: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/27.jpg)
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 27
![Page 28: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/28.jpg)
Componentes do Hadoop
•Nó Mestre:
• NameNode
• DataNode
• SecondaryNameNode
•Nó(s) Escravo(s):
• JobTracker
• TaskTracker
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 28
![Page 29: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/29.jpg)
Componentes 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 29
![Page 30: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/30.jpg)
Componentes do Hadoop
•DataNode
• Realiza o armazenamento dos dados
• Permite armazenar diversos blocos
• Deve se comunicar com o NameNode
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 30
![Page 31: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/31.jpg)
Componentes do Hadoop
•SecondaryNameNode
• Nó auxiliar do HDFS
• Realiza pontos de checagem em
intervalos pré-definidos
• Permite manter o nível de desempenho
do NameNode
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 31
![Page 32: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/32.jpg)
Componentes 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 32
![Page 33: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/33.jpg)
Componentes do Hadoop
•TaskTracker
• Realiza o processamento das tarefas
MapReduce
• Uma instância em cada nó escravo
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 33
![Page 34: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/34.jpg)
Resumindo...
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 34
![Page 35: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/35.jpg)
NameNode (NN)
• Gerencia o namespace do sistema
de arquivos
• Mapeia nomes de arquivos para
blocos
• Mapeia blocos para DataNodes
• Gerenciamento de replicação
DataNode (DN)
• Servidor de blocos que armazena
• Dados no sistema de arquivos local
• Metadados dos blocos (hash)
• Disponibiliza metadados para
clientes
NameNode e DataNodes no HDFS
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 35
![Page 36: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/36.jpg)
• JobTracker (JT) • Controla os metadados
• Status de um job
• Status de Tasks nos TTs
• Decide o escalonamento
TaskTrackers (TT) • Solicita trabalho do JT
• Busca código para executar do DFS
• Aplica configurações específicas dos jobs
• Comunicam-se com o JT nas tasks
• Enviar saídas, atualizações de tasks, matar tasks, ...
JobTracker e TaskTrackers no MR
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 36
![Page 37: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/37.jpg)
Formas de Execução
•Local
•Pseudo-distribuído
•Completamente distribuído
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 37
![Page 38: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/38.jpg)
Formas de Execução
•Local:
• Configuração padrão
• Recomendável para a fase de
desenvolvimento e testes
• Aplicação é executada na máquina local
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 38
![Page 39: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/39.jpg)
Formas 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 39
![Page 40: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/40.jpg)
Formas 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 40
![Page 41: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/41.jpg)
HDFS
Apache
![Page 42: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/42.jpg)
HDFS
•Hadoop Distributed Filesystem
• Características
• Divisão em blocos
• Replicação de dados
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 42
![Page 43: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/43.jpg)
HDFS
•Características
•Sistema de arquivos distribuídos
•Arquitetura Mestre/Escravo
• Inspirado no Google FileSystem
(GFS)
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 43
![Page 44: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/44.jpg)
Características
• Implementado em Java
•Armazenamento de grandes volumes
de dados
•Recuperação de dados transparente
ao usuário
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 44
![Page 45: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/45.jpg)
Divisã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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 45
![Page 46: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/46.jpg)
Replicaçã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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 46
![Page 47: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/47.jpg)
Exemplo…
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 47
![Page 48: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/48.jpg)
MapReduce
Apache
![Page 49: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/49.jpg)
Um 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
Curitiba, 2
em, 1
JAI, 2
Hadoop, 1
Minicurso, 1
Paraná, 1
CSBC JAI 2012
CSBC 2012 em Curitiba
Minicurso Hadoop JAI 2012
CSBC 2012 Curitiba Paraná
Word Count
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 49
![Page 50: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/50.jpg)
Em 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 50
![Page 51: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/51.jpg)
Em um mundo paralelo qualquer!
Mutex lock; // protects w_count
word-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!
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 51
![Page 52: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/52.jpg)
No 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 52
![Page 53: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/53.jpg)
MapReduce
• 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 53
![Page 54: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/54.jpg)
A 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 54
![Page 55: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/55.jpg)
A 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)
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 55
![Page 56: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/56.jpg)
O 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 56
![Page 57: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/57.jpg)
Ilustrando a ideia original
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 57
![Page 58: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/58.jpg)
MapReduce 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 58
![Page 59: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/59.jpg)
Exemplos: 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 59
![Page 60: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/60.jpg)
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));
Word Count (Pseudo-código)
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 60
![Page 61: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/61.jpg)
Execução do WordCount
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 61
![Page 62: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/62.jpg)
Implementação do Hadoop
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 62
![Page 63: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/63.jpg)
Outros 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 63
![Page 64: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/64.jpg)
Ilustrando o Grep
cat | grep | sort | unique > file
input | map | shuffle | reduce > output
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 64
![Page 65: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/65.jpg)
Outros 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))
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 65
![Page 66: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/66.jpg)
Ilustrando o Índice Invertido
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 66
to be or not
to be afraid, (12th.txt)
be, (12th.txt, hamlet.txt)
greatness, (12th.txt)
not, (12th.txt, hamlet.txt)
of, (12th.txt)
or, (hamlet.txt)
to, (hamlet.txt)
hamlet.txt
be not afraid
of greatness
12th.txt
to, hamlet.txt
be, hamlet.txt
or, hamlet.txt
not, hamlet.txt
be, 12th.txt
not, 12th.txt
afraid, 12th.txt
of, 12th.txt
greatness, 12th.txt
![Page 67: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/67.jpg)
Apache 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 67
![Page 68: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/68.jpg)
Onde 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 68
![Page 69: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/69.jpg)
Gerando 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 69
![Page 70: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/70.jpg)
Gerando recomendações
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 70
![Page 71: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/71.jpg)
Gerando 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]
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 71
![Page 72: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/72.jpg)
Multiplicando a matriz de co-ocorrência com o vetor de preferências do usuário
três para chegar ao vetor que nos leva às recomendações
Gerando recomendações
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 72
![Page 73: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/73.jpg)
Gerando 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 73
![Page 74: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/74.jpg)
Integrando 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.
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 74
![Page 75: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/75.jpg)
:~$ bin/hadoop jar mahout-core-0.6-job.jar
org.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
Chamada do Mahout no Hadoop
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 75
![Page 76: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/76.jpg)
Formato dos dados
O recomendador do Mahout espera que os dados
estejam da forma:
userID, itemID [,preferencevalue]
• UserID é um Long
• ItemID é um Long
• Preferencevalue é um Double
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 76
![Page 77: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/77.jpg)
Carregar os dados no HDFS
Comando:
hadoop fs -put <caminho_local_do_arquivo>
<caminho_do_arquivo_no_hdfs>
Ex:
:~$ hadoop fs -put moviesRecommendation1M.txt
input/moviesRec.txt
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 77
![Page 78: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/78.jpg)
Executando o RecomenderJob
Parâmetros de chamada:
--usersFile(path): (xor) arquivo contendo os Ids dos
usuários considerados na computação
--itemsFile(path): (xor) arquivo contendo os Ids dos itens;
--numRecommendations(integer): número de
recomendações computadas por usuário (padrão:10)
--booleanData(boolean): tratar a entrada como não tendo
valores de preferência (padrão:falso)
--maxPrefsPerUser(integer): número máximo de
preferências consideradas por usuário (padrão:10)
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 78
![Page 79: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/79.jpg)
Executando o RecomenderJob
Parâmetros de chamada:
--similarityClassname(classname): (obrigatório) medida de
similaridade;
• SIMILARITY_COOCCURRENCE
• SIMILARITY_LOGLIKELIHOOD
• SIMILARITY_TANIMOTO_COEFFICIENT
• SIMILARITY_CITY_BLOCK
• SIMILARITY_COSINE
• SIMILARITY_PEARSON_CORRELATION
• SIMILARITY_EUCLIDEAN_DISTANCE
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 79
![Page 80: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/80.jpg)
Demonstraçã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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 80
![Page 81: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/81.jpg)
Preenchendo com suas recomendações
Edite o arquivo yourRec.txt e coloque suas
recomendaçõ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.
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 81
![Page 82: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/82.jpg)
Preenchendo 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.
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 82
![Page 83: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/83.jpg)
Enviando 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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 83
![Page 84: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/84.jpg)
Rodando o RecommenderJob
Verificar se o arquivo mahout-core-0.6-job.jar está no
diretório raiz do hadoop.
• A partir do diretório raiz do hadoop, executar o comando:
:~$ bin/hadoop jar mahout-core-0.6-job.jar
org.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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 84
![Page 85: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/85.jpg)
Resultados!
• 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>
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 85
![Page 86: XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas possibilidades](https://reader033.vdocuments.net/reader033/viewer/2022051514/54831396b4af9f640d8b4942/html5/thumbnails/86.jpg)
Referê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
XXXII CSBC 2012 – XXX JAI Hadoop: conceitos teóricos e práticos,
evolução e novas possibilidades 86