SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Rodando um recomendador

Ivanilton Polato                                                        Frank Helbert
                          UTFPR Câmpus Campo Mourão
                        Doutorado em Ciência da Computação
                             DINTER IME/USP-UTFPR
                                    Abril/2012
 By Ivanilton Polato e Frank Helbert. 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)
Motivações atuais!
Grandes quantidades (massivas) de dados
Demoram MUITO para processar serialmente!
Máquinas individuais falham!
Mais máquinas juntas... probabilidade maior!
O número de nós em um cluster não é constante!
Computação nas nuvens
Disponibilidade de computação e dados
Escalabilidade de aplicações
Computação sob demanda


Frank Helbert
Ivanilton Polato         2
Histórico




                                                           Fonte: Evert Lammerts (SARA.nl)




           *       http://nutch.apache.org/
           **      http://labs.google.com/papers/mapreduce.html
                   http://labs.google.com/papers/gfs.html
Frank Helbert
Ivanilton Polato                       3
Histórico
Fev/03 – Primeira biblioteca Map/Reduce na Google
Out/03 – Artigo sobre GFS
Dez/04 – Artigo sobre Map Reduce
Dez/05 – Doug Cutting implementa MR e DFS no
Nutch
Fev/06 – Hadoop se torna um projeto oficial da
Apache, Doug Cutting é contratado pela Yahoo!, que
adota o Hadoop
Abr/07 – Yahoo! roda Hadoop em um cluster de 1000
nós
Jan/08 – Hadoop se transforma em um projeto
principal da Apache
Dez/11 – Apache disponibiliza versão 1.0.0
Frank Helbert
Ivanilton Polato          4
O que é Apache Hadoop?
Framework para computação distribuída
Usado em clusters/grades computacionais
Milhares de nós
Hardware comum (Commodity cluster computing)
Petabytes de dados
Open Source (licença Apache)
Java
Inspirado originalmente pelo GFS e
MapReduce da Google

Frank Helbert
Ivanilton Polato        5
Suposições do Projeto
Os dados que serão processados não cabem
em um nó
Cada nó é hardware comum
Falhas acontecem
Mover dados é caro
Mover computação é barato
Computação distribuída é fácil



Frank Helbert
Ivanilton Polato     6
Suposições do Projeto
Ideias
    Sistemas de arquivos distribuído
    Replicação interna
    Recuperação de falhas automáticas
    Mover computação para os dados
    Escrever programas que são fáceis de
     distribuir


Frank Helbert
Ivanilton Polato      7
Composição do Apache Hadoop
Núcleo composto por:
Hadoop Common: Bibliotecas principais
HDFS: Sistema de arquivos
MapReduce: Paradigma de programação
Projetos relacionados:
HBase: BD distribuído e escalável
Hive e Pig: infraestrutura de DW


Na web: http://hadoop.apache.org/

Frank Helbert
Ivanilton Polato           8
Possibilidades de uso

                   System Data
                   ...
                   WEB ANALYTICS
                   ...




Frank Helbert
Ivanilton Polato   9
Quem usa?
Lista completa:
http://wiki.apache.org/hadoop/PoweredBy




Frank Helbert
Ivanilton Polato      10
HDFS
    Hadoop Distributed File System



By Ivanilton Polato e Frank Helbert. 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)
HDFS: Hadoop Distributed File System
Sistema de arquivos distribuído
Grande  ordem de 10k nós
Milhões de arquivos
Projetado para hardware de baixo custo
Redundância por replicação
Tolerância a falhas e recuperação
Otimizado para processamento em lote
Localização dos dados exposta
Grande largura de banda associada

Frank Helbert
Ivanilton Polato           12
HDFS: Hadoop Distributed File System
Coerência dos dados
Modelo “write-once-ready-many”
Arquivos existentes sofrem apenas operações de
“append”
Arquivos quebrados em pedaços (blocos)
Variam de 64mb (padrão) a 256mb
Blocos distribuídos pelos nós (um arquivo é dividido
em N blocos e armazenado em M nós)
Blocos são replicados e as replicações distribuídas


Frank Helbert
Ivanilton Polato           13
HDFS: Hadoop Distributed File System
Todos os comandos são executados com o
  prefixo hadoop fs
Principais comandos similares unix/linux:
    ls »» lista arquivos
    put »» envia arquivos ao fs (origem, destino)
    get »» copia arquivos do fs (origem, destino)
    rm »» remove arquivos do fs
    rmr »» remove arquivos e diretórios do fs
    cat »» mostra o conteúdo de arquivo no fs

Frank Helbert
Ivanilton Polato            14
MapReduce

By Ivanilton Polato e Frank Helbert. 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)
A ideia
A ideia do paradigma de programação Map e
Reduce não é nova
Provavelmente 40+ anos!
No Hadoop é a parte do framework
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
Frank Helbert
Ivanilton Polato                     16
A natureza do MapReduce
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
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



Frank Helbert
Ivanilton Polato            17
Continuando...
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
Lida com o paralelismo
Um Map por bloco, se possível



Frank Helbert
Ivanilton Polato          18
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




Frank Helbert
Ivanilton Polato      19
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


Frank Helbert
Ivanilton Polato              20
Map e Reduce (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));
Frank Helbert
Ivanilton Polato        21
Funcionamento
    em um cluster

By Ivanilton Polato e Frank Helbert. 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)
MapReduce: Simplified Data Processing on Large
                             Jeffrey Dean e Sanjay Ghemawat ACM, 200




Frank Helbert
Ivanilton Polato   23
HDFS: NameNode & DataNodes




                                                                Fonte: Evert Lammerts (SARA.nl)



NameNode (NN)                          DataNode (DN)
Gerencia o namespace do sistema de     Servidor de blocos que armazena
arquivos                               Dados no sistema de arquivos local
Mapeia nomes de arquivos para blocos   Metadados dos blocos (hash)
Mapeia blocos para DataNodes           Disponibiliza metadados para clientes
Gerenciamento de replicação


Frank Helbert
Ivanilton Polato                       24
MapReduce: JobTracker & TaskTrackers




                                                  Fonte: Evert Lammerts (SARA.nl)

JobTracker                TaskTrackers
Controla os metadados     Solicita trabalho do JT
Status de um job          Busca código para executar do DFS
Status de Tasks nos TTs
                          Aplica configurações específicas dos
Decide o escalonamento    jobs
                          Comunicam-se com o JT nas tasks
                          Enviar saídas, atualizações de tasks,
                          matar tasks, ...

Frank Helbert
Ivanilton Polato          25
Mahout

By Ivanilton Polato e Frank Helbert. 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)
Apache Mahout
É uma biblioteca de algoritmos de
aprendizagem de máquina
É um projeto da Apache Software Foundation
    Software Livre – Licença Apache
    Bem documentado
    Contribuição da Comunidade
Principal objetivo:
    Ser escalável para manipular volume gigantesco
     de dados

Frank Helbert
Ivanilton Polato           27
Apache Mahout
Trabalha com: Matrizes e Vetores, Estruturas
esparsas e densas, Agrupamento, Cobertura,
K-Means, Análise densidade de funções,
Filtragem colaborativa, Taste – motor de
filtragem
Mahout pode ser usado com o Hadoop
explorando a escalabilidade para processar os
dados



Frank Helbert
Ivanilton Polato       28
Gerando recomendações
1. 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

 Frank Helbert
 Ivanilton Polato          29
Gerando recomendações




           Matriz de co-ocorrência para um conjunto de dados com sete itens



Frank Helbert
Ivanilton Polato                            30
Gerando recomendações
2. 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]



 Frank Helbert
 Ivanilton Polato           31
Gerando recomendações
3. Computando as recomendações
   Para computar as recomendações para o usuário
    três, basta multiplicar seu vetor pela matriz de co-
    ocorrência
   Computar cada valor da saída corresponde a
    estimar a preferência por um determinado item




 Frank Helbert
 Ivanilton Polato            32
Gerando recomendações




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



  Frank Helbert
  Ivanilton Polato                               33
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




Frank Helbert
Ivanilton Polato       34
Rodando o
      recomendador
By Ivanilton Polato e Frank Helbert. 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)
Integrando o Mahout no Hadoop
Precisamos do RecommenderJob
Modo Newbie:
    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.


Frank Helbert
Ivanilton Polato            36
Chamada do Mahout no Hadoop
:~$ bin/hadoop jar mahout-core-0.6-job.jar
  org.apache.mahout.cf.taste.hadoop.item.Rec
  ommenderJob
  -Dmapred.input.dir=input/movieRec10M.txt -
  Dmapred.output.dir=outputCosine --usersFile
  input/movieUsers.txt
  --numRecommendations 10
  --maxPrefsPerUser 100
  --similarityClassname SIMILARITY_COSINE


Frank Helbert
Ivanilton Polato       37
Formato dos dados
O recomendador do Mahout espera que os
dados estejam da forma:
RecommenderJob (org.apache.mahout.cf.taste.hadoop.item.RecommenderJob)

    userID,itemID[,preferencevalue]
         UserID é um Long
         ItemID é um Long
         Preferencevalue é um Double




Frank Helbert
Ivanilton Polato                     38
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


Frank Helbert
Ivanilton Polato      39
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)


Frank Helbert
Ivanilton Polato               40
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

Frank Helbert
Ivanilton Polato             41
Mão na massa...

By Ivanilton Polato e Frank Helbert. 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)
Atividade
Em grupos
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
Juntar recomendações e rodar exemplo no
  cluster (fully distributed mode)
Frank Helbert
Ivanilton Polato          43
Instalando Hadoop (Pseudo-Distributed)
Extraia o conteúdo do arquivo
hadoop-1.0.1-pre-config.tar.gz no seu home
Dentro de hadoop-1.0.1/conf altere:
    hadoop-env.sh (alterar linha 9: java home)
         DE: /usr/lib/jvm/java-6-openjdk
         PARA: /usr/lib/jvm/java-6-sun
         OU: verifique sua versão do java!
Verifique os 3 arquivos .xml no diretório conf:
    core-site.xml
    hdfs-site.xml
    mapred-site.xml
Frank Helbert
                                44
Ivanilton Polato
Instalando Hadoop (Pseudo-Distributed)
Verifique o ssh da máquina. A maquina deve
  se conectar ao localhost sem necessidade de
  password.
:~$ ssh localhost

Agora vamos formatar (criar) o HDFS:
:~$ bin/hadoop namenode -format

E agora vamos inicializar o Hadoop (start-
Frank Helbert
Ivanilton Polato        45
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.

Frank Helbert
Ivanilton Polato            46
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.



Frank Helbert
Ivanilton Polato       47
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



Frank Helbert
Ivanilton Polato          48
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.Reco
    mmenderJob
-Dmapred.input.dir=input/rec.txt
    -Dmapred.output.dir=output
--usersFile input/user.txt
  Frank Helbert
--numRecommendations 10
  Ivanilton Polato          49
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

Frank Helbert
Ivanilton Polato           50
Referências:
Livros
Hadoop – The Definitive Guide
Tom White – 2ª Ed.
Hadoop in Action
Chuck Lam – 1ª Ed.
    Mining of Massive Datasets
         Rajaraman, A. & Ullman, J.D., 2011
    Mahout in Action
         Owen, S. et al., Manning, 2011
Web: http://wiki.apache.org/hadoop/
Frank Helbert
Ivanilton Polato               51
Apêndice
Criar chave ssh e permitir acesso sem senha:
:~$ sudo apt-get install ssh
:~$ ssh-keygen -t rsa
:~$ cat .ssh/id_rsa.pub >> authorized_keys
:~$ ssh localhost




Frank Helbert
Ivanilton Polato        52

Weitere ähnliche Inhalte

Andere mochten auch

XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...Ivanilton Polato
 
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e BazaarGerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e BazaarIvanilton Polato
 
Metodologia Ágil para Projetos de BI - Pentaho Day
Metodologia Ágil para Projetos de BI - Pentaho DayMetodologia Ágil para Projetos de BI - Pentaho Day
Metodologia Ágil para Projetos de BI - Pentaho DayMarco Garcia
 
Pentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesPentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesAmbiente Livre
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaMarcio Junior Vieira
 
FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...
FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...
FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...FGV | Fundação Getulio Vargas
 
Manual do Candidato do DEM 2016
Manual do Candidato do DEM 2016Manual do Candidato do DEM 2016
Manual do Candidato do DEM 2016Paulo Veras
 
Pesquisa da Nassau sobre eleições no Recife
Pesquisa da Nassau sobre eleições no RecifePesquisa da Nassau sobre eleições no Recife
Pesquisa da Nassau sobre eleições no RecifeJamildo Melo
 
AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...
AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...
AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...ABRADEP
 
5ª Pesquisa Eleitoral para Prefeito
5ª Pesquisa Eleitoral para Prefeito5ª Pesquisa Eleitoral para Prefeito
5ª Pesquisa Eleitoral para PrefeitoDurango Duarte
 
Comportamentos eleitorais - Prof. Doutor Rui Teixeira Santos
Comportamentos eleitorais - Prof. Doutor Rui Teixeira SantosComportamentos eleitorais - Prof. Doutor Rui Teixeira Santos
Comportamentos eleitorais - Prof. Doutor Rui Teixeira SantosA. Rui Teixeira Santos
 
Como se eleger vereador
Como se eleger vereadorComo se eleger vereador
Como se eleger vereadorCaciano Ca
 
Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...
Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...
Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...Ricardo Viana Vargas
 
#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...
#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...
#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...Durango Duarte
 
Método das Eliminações Sucessivas
Método das Eliminações SucessivasMétodo das Eliminações Sucessivas
Método das Eliminações Sucessivasmatematica97
 
The Potential and Limits of Digital Election Forensics
The Potential and Limits of Digital Election ForensicsThe Potential and Limits of Digital Election Forensics
The Potential and Limits of Digital Election Forensicshyperak
 

Andere mochten auch (20)

Creative Commons
Creative CommonsCreative Commons
Creative Commons
 
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
XXXI JAI - Apache Hadoop: conceitos teóricos e práticos, evolução e novas pos...
 
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e BazaarGerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
 
Metodologia Ágil para Projetos de BI - Pentaho Day
Metodologia Ágil para Projetos de BI - Pentaho DayMetodologia Ágil para Projetos de BI - Pentaho Day
Metodologia Ágil para Projetos de BI - Pentaho Day
 
Pentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesPentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data Lakes
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
 
Resolução TSE 23.459 (anexo) TABELA - Municípios x Valores
Resolução TSE 23.459 (anexo) TABELA - Municípios x ValoresResolução TSE 23.459 (anexo) TABELA - Municípios x Valores
Resolução TSE 23.459 (anexo) TABELA - Municípios x Valores
 
FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...
FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...
FGV / IBRE – Seminário "Eleições 2014: Panoramas Político e Eleitoral" - Coal...
 
Manual do Candidato do DEM 2016
Manual do Candidato do DEM 2016Manual do Candidato do DEM 2016
Manual do Candidato do DEM 2016
 
Brasil - Eleições 2014
Brasil - Eleições 2014Brasil - Eleições 2014
Brasil - Eleições 2014
 
Pesquisa da Nassau sobre eleições no Recife
Pesquisa da Nassau sobre eleições no RecifePesquisa da Nassau sobre eleições no Recife
Pesquisa da Nassau sobre eleições no Recife
 
AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...
AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...
AS ALTERAÇÕES PROMOVIDAS PELA LEI 13.165/2015 NO SISTEMA PROPORCIONAL BRASILE...
 
5ª Pesquisa Eleitoral para Prefeito
5ª Pesquisa Eleitoral para Prefeito5ª Pesquisa Eleitoral para Prefeito
5ª Pesquisa Eleitoral para Prefeito
 
Comportamentos eleitorais - Prof. Doutor Rui Teixeira Santos
Comportamentos eleitorais - Prof. Doutor Rui Teixeira SantosComportamentos eleitorais - Prof. Doutor Rui Teixeira Santos
Comportamentos eleitorais - Prof. Doutor Rui Teixeira Santos
 
Como se eleger vereador
Como se eleger vereadorComo se eleger vereador
Como se eleger vereador
 
Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...
Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...
Utilizando a Programação Multicritério (Analytic Hierarchy Process - AHP) par...
 
#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...
#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...
#PESQUISA365 - Pesquisa de Opinião - Implantação do Uber em Manaus - Fevereir...
 
Itatiba eleições 2016
Itatiba eleições 2016Itatiba eleições 2016
Itatiba eleições 2016
 
Método das Eliminações Sucessivas
Método das Eliminações SucessivasMétodo das Eliminações Sucessivas
Método das Eliminações Sucessivas
 
The Potential and Limits of Digital Election Forensics
The Potential and Limits of Digital Election ForensicsThe Potential and Limits of Digital Election Forensics
The Potential and Limits of Digital Election Forensics
 

Ähnlich wie Rodando um recomendador com Hadoop

Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Alessandro Binhara
 
Interoperabilidade com BigData Hadoop para Windows Azure
Interoperabilidade com BigData Hadoop  para Windows AzureInteroperabilidade com BigData Hadoop  para Windows Azure
Interoperabilidade com BigData Hadoop para Windows AzureAlessandro Binhara
 
Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Thiago Santiago
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
Big Data Open Source com Hadoop
Big Data Open Source com HadoopBig Data Open Source com Hadoop
Big Data Open Source com HadoopAmbiente Livre
 
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Ambiente Livre
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux DayFábio Albuquerque
 
Bancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsBancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsdcarneir
 
Terraform - Getting Started
Terraform - Getting StartedTerraform - Getting Started
Terraform - Getting StartedBruno Soares
 
Hadoop - primeiros passos
Hadoop - primeiros passosHadoop - primeiros passos
Hadoop - primeiros passosrhpinotti
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolarisguest830f1
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolarisCindy Dalfovo
 
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceApresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceMatteus Barbosa
 

Ähnlich wie Rodando um recomendador com Hadoop (20)

Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!!
 
Interoperabilidade com BigData Hadoop para Windows Azure
Interoperabilidade com BigData Hadoop  para Windows AzureInteroperabilidade com BigData Hadoop  para Windows Azure
Interoperabilidade com BigData Hadoop para Windows Azure
 
Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
Big Data Open Source com Hadoop
Big Data Open Source com HadoopBig Data Open Source com Hadoop
Big Data Open Source com Hadoop
 
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
 
BrunoSQLSat 469
BrunoSQLSat 469BrunoSQLSat 469
BrunoSQLSat 469
 
Semana da computacao - Linux Day
Semana da computacao - Linux DaySemana da computacao - Linux Day
Semana da computacao - Linux Day
 
Big Data, JVM e Redes Sociais
Big Data, JVM e Redes SociaisBig Data, JVM e Redes Sociais
Big Data, JVM e Redes Sociais
 
Bancos de dados No-SQL e afins
Bancos de dados No-SQL e afinsBancos de dados No-SQL e afins
Bancos de dados No-SQL e afins
 
Terraform - Getting Started
Terraform - Getting StartedTerraform - Getting Started
Terraform - Getting Started
 
Qcon Rio 2015 - Data Lakes Workshop
Qcon Rio 2015 - Data Lakes WorkshopQcon Rio 2015 - Data Lakes Workshop
Qcon Rio 2015 - Data Lakes Workshop
 
Data Lakes com Hadoop e Spark: Agile Analytics na prática
Data Lakes com Hadoop e Spark: Agile Analytics na práticaData Lakes com Hadoop e Spark: Agile Analytics na prática
Data Lakes com Hadoop e Spark: Agile Analytics na prática
 
Hadoop - primeiros passos
Hadoop - primeiros passosHadoop - primeiros passos
Hadoop - primeiros passos
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolaris
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolaris
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceApresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
 
Sistemas de Ficheiros Linux
Sistemas de Ficheiros LinuxSistemas de Ficheiros Linux
Sistemas de Ficheiros Linux
 

Rodando um recomendador com Hadoop

  • 1. Rodando um recomendador Ivanilton Polato Frank Helbert UTFPR Câmpus Campo Mourão Doutorado em Ciência da Computação DINTER IME/USP-UTFPR Abril/2012 By Ivanilton Polato e Frank Helbert. 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. Motivações atuais! Grandes quantidades (massivas) de dados Demoram MUITO para processar serialmente! Máquinas individuais falham! Mais máquinas juntas... probabilidade maior! O número de nós em um cluster não é constante! Computação nas nuvens Disponibilidade de computação e dados Escalabilidade de aplicações Computação sob demanda Frank Helbert Ivanilton Polato 2
  • 3. Histórico Fonte: Evert Lammerts (SARA.nl) * http://nutch.apache.org/ ** http://labs.google.com/papers/mapreduce.html http://labs.google.com/papers/gfs.html Frank Helbert Ivanilton Polato 3
  • 4. Histórico Fev/03 – Primeira biblioteca Map/Reduce na Google Out/03 – Artigo sobre GFS Dez/04 – Artigo sobre Map Reduce Dez/05 – Doug Cutting implementa MR e DFS no Nutch Fev/06 – Hadoop se torna um projeto oficial da Apache, Doug Cutting é contratado pela Yahoo!, que adota o Hadoop Abr/07 – Yahoo! roda Hadoop em um cluster de 1000 nós Jan/08 – Hadoop se transforma em um projeto principal da Apache Dez/11 – Apache disponibiliza versão 1.0.0 Frank Helbert Ivanilton Polato 4
  • 5. O que é Apache Hadoop? Framework para computação distribuída Usado em clusters/grades computacionais Milhares de nós Hardware comum (Commodity cluster computing) Petabytes de dados Open Source (licença Apache) Java Inspirado originalmente pelo GFS e MapReduce da Google Frank Helbert Ivanilton Polato 5
  • 6. Suposições do Projeto Os dados que serão processados não cabem em um nó Cada nó é hardware comum Falhas acontecem Mover dados é caro Mover computação é barato Computação distribuída é fácil Frank Helbert Ivanilton Polato 6
  • 7. Suposições do Projeto Ideias Sistemas de arquivos distribuído Replicação interna Recuperação de falhas automáticas Mover computação para os dados Escrever programas que são fáceis de distribuir Frank Helbert Ivanilton Polato 7
  • 8. Composição do Apache Hadoop Núcleo composto por: Hadoop Common: Bibliotecas principais HDFS: Sistema de arquivos MapReduce: Paradigma de programação Projetos relacionados: HBase: BD distribuído e escalável Hive e Pig: infraestrutura de DW Na web: http://hadoop.apache.org/ Frank Helbert Ivanilton Polato 8
  • 9. Possibilidades de uso System Data ... WEB ANALYTICS ... Frank Helbert Ivanilton Polato 9
  • 11. HDFS Hadoop Distributed File System By Ivanilton Polato e Frank Helbert. 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)
  • 12. HDFS: Hadoop Distributed File System Sistema de arquivos distribuído Grande  ordem de 10k nós Milhões de arquivos Projetado para hardware de baixo custo Redundância por replicação Tolerância a falhas e recuperação Otimizado para processamento em lote Localização dos dados exposta Grande largura de banda associada Frank Helbert Ivanilton Polato 12
  • 13. HDFS: Hadoop Distributed File System Coerência dos dados Modelo “write-once-ready-many” Arquivos existentes sofrem apenas operações de “append” Arquivos quebrados em pedaços (blocos) Variam de 64mb (padrão) a 256mb Blocos distribuídos pelos nós (um arquivo é dividido em N blocos e armazenado em M nós) Blocos são replicados e as replicações distribuídas Frank Helbert Ivanilton Polato 13
  • 14. HDFS: Hadoop Distributed File System Todos os comandos são executados com o prefixo hadoop fs Principais comandos similares unix/linux: ls »» lista arquivos put »» envia arquivos ao fs (origem, destino) get »» copia arquivos do fs (origem, destino) rm »» remove arquivos do fs rmr »» remove arquivos e diretórios do fs cat »» mostra o conteúdo de arquivo no fs Frank Helbert Ivanilton Polato 14
  • 15. MapReduce By Ivanilton Polato e Frank Helbert. 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)
  • 16. A ideia A ideia do paradigma de programação Map e Reduce não é nova Provavelmente 40+ anos! No Hadoop é a parte do framework 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 Frank Helbert Ivanilton Polato 16
  • 17. A natureza do MapReduce 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 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 Frank Helbert Ivanilton Polato 17
  • 18. Continuando... 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 Lida com o paralelismo Um Map por bloco, se possível Frank Helbert Ivanilton Polato 18
  • 19. 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 Frank Helbert Ivanilton Polato 19
  • 20. 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 Frank Helbert Ivanilton Polato 20
  • 21. Map e Reduce (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)); Frank Helbert Ivanilton Polato 21
  • 22. Funcionamento em um cluster By Ivanilton Polato e Frank Helbert. 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)
  • 23. MapReduce: Simplified Data Processing on Large Jeffrey Dean e Sanjay Ghemawat ACM, 200 Frank Helbert Ivanilton Polato 23
  • 24. HDFS: NameNode & DataNodes Fonte: Evert Lammerts (SARA.nl) NameNode (NN) DataNode (DN) Gerencia o namespace do sistema de Servidor de blocos que armazena arquivos Dados no sistema de arquivos local Mapeia nomes de arquivos para blocos Metadados dos blocos (hash) Mapeia blocos para DataNodes Disponibiliza metadados para clientes Gerenciamento de replicação Frank Helbert Ivanilton Polato 24
  • 25. MapReduce: JobTracker & TaskTrackers Fonte: Evert Lammerts (SARA.nl) JobTracker TaskTrackers Controla os metadados Solicita trabalho do JT Status de um job Busca código para executar do DFS Status de Tasks nos TTs Aplica configurações específicas dos Decide o escalonamento jobs Comunicam-se com o JT nas tasks Enviar saídas, atualizações de tasks, matar tasks, ... Frank Helbert Ivanilton Polato 25
  • 26. Mahout By Ivanilton Polato e Frank Helbert. 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)
  • 27. Apache Mahout É uma biblioteca de algoritmos de aprendizagem de máquina É um projeto da Apache Software Foundation Software Livre – Licença Apache Bem documentado Contribuição da Comunidade Principal objetivo: Ser escalável para manipular volume gigantesco de dados Frank Helbert Ivanilton Polato 27
  • 28. Apache Mahout Trabalha com: Matrizes e Vetores, Estruturas esparsas e densas, Agrupamento, Cobertura, K-Means, Análise densidade de funções, Filtragem colaborativa, Taste – motor de filtragem Mahout pode ser usado com o Hadoop explorando a escalabilidade para processar os dados Frank Helbert Ivanilton Polato 28
  • 29. Gerando recomendações 1. 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 Frank Helbert Ivanilton Polato 29
  • 30. Gerando recomendações Matriz de co-ocorrência para um conjunto de dados com sete itens Frank Helbert Ivanilton Polato 30
  • 31. Gerando recomendações 2. 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] Frank Helbert Ivanilton Polato 31
  • 32. Gerando recomendações 3. Computando as recomendações Para computar as recomendações para o usuário três, basta multiplicar seu vetor pela matriz de co- ocorrência Computar cada valor da saída corresponde a estimar a preferência por um determinado item Frank Helbert Ivanilton Polato 32
  • 33. Gerando recomendações 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 Frank Helbert Ivanilton Polato 33
  • 34. 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 Frank Helbert Ivanilton Polato 34
  • 35. Rodando o recomendador By Ivanilton Polato e Frank Helbert. 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)
  • 36. Integrando o Mahout no Hadoop Precisamos do RecommenderJob Modo Newbie: 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. Frank Helbert Ivanilton Polato 36
  • 37. Chamada do Mahout no Hadoop :~$ bin/hadoop jar mahout-core-0.6-job.jar org.apache.mahout.cf.taste.hadoop.item.Rec ommenderJob -Dmapred.input.dir=input/movieRec10M.txt - Dmapred.output.dir=outputCosine --usersFile input/movieUsers.txt --numRecommendations 10 --maxPrefsPerUser 100 --similarityClassname SIMILARITY_COSINE Frank Helbert Ivanilton Polato 37
  • 38. Formato dos dados O recomendador do Mahout espera que os dados estejam da forma: RecommenderJob (org.apache.mahout.cf.taste.hadoop.item.RecommenderJob) userID,itemID[,preferencevalue] UserID é um Long ItemID é um Long Preferencevalue é um Double Frank Helbert Ivanilton Polato 38
  • 39. 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 Frank Helbert Ivanilton Polato 39
  • 40. 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) Frank Helbert Ivanilton Polato 40
  • 41. 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 Frank Helbert Ivanilton Polato 41
  • 42. Mão na massa... By Ivanilton Polato e Frank Helbert. 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)
  • 43. Atividade Em grupos 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 Juntar recomendações e rodar exemplo no cluster (fully distributed mode) Frank Helbert Ivanilton Polato 43
  • 44. Instalando Hadoop (Pseudo-Distributed) Extraia o conteúdo do arquivo hadoop-1.0.1-pre-config.tar.gz no seu home Dentro de hadoop-1.0.1/conf altere: hadoop-env.sh (alterar linha 9: java home) DE: /usr/lib/jvm/java-6-openjdk PARA: /usr/lib/jvm/java-6-sun OU: verifique sua versão do java! Verifique os 3 arquivos .xml no diretório conf: core-site.xml hdfs-site.xml mapred-site.xml Frank Helbert 44 Ivanilton Polato
  • 45. Instalando Hadoop (Pseudo-Distributed) Verifique o ssh da máquina. A maquina deve se conectar ao localhost sem necessidade de password. :~$ ssh localhost Agora vamos formatar (criar) o HDFS: :~$ bin/hadoop namenode -format E agora vamos inicializar o Hadoop (start- Frank Helbert Ivanilton Polato 45
  • 46. 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. Frank Helbert Ivanilton Polato 46
  • 47. 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. Frank Helbert Ivanilton Polato 47
  • 48. 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 Frank Helbert Ivanilton Polato 48
  • 49. 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.Reco mmenderJob -Dmapred.input.dir=input/rec.txt -Dmapred.output.dir=output --usersFile input/user.txt Frank Helbert --numRecommendations 10 Ivanilton Polato 49
  • 50. 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 Frank Helbert Ivanilton Polato 50
  • 51. Referências: Livros Hadoop – The Definitive Guide Tom White – 2ª Ed. Hadoop in Action Chuck Lam – 1ª Ed. Mining of Massive Datasets Rajaraman, A. & Ullman, J.D., 2011 Mahout in Action Owen, S. et al., Manning, 2011 Web: http://wiki.apache.org/hadoop/ Frank Helbert Ivanilton Polato 51
  • 52. Apêndice Criar chave ssh e permitir acesso sem senha: :~$ sudo apt-get install ssh :~$ ssh-keygen -t rsa :~$ cat .ssh/id_rsa.pub >> authorized_keys :~$ ssh localhost Frank Helbert Ivanilton Polato 52