SlideShare a Scribd company logo
1 of 86
Download to read offline
Apache


Conceitos teóricos e práticos,
evolução e novas possibilidades

Prof. Dr. Alfredo Goldman
Prof. 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)
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                               2
                                   evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            3
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                              4
                                  evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                 5
                                     evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                             6
                                 evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            7
                                evolução e novas possibilidades




Histórico




***http://nutch.apache.org/
***http://labs.google.com/papers/mapreduce.html
***http://labs.google.com/papers/gfs.html
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            8
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            9
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            10
                                evolução e novas possibilidades




Quem utiliza?
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            11
                                evolução e novas possibilidades




Onde utilizar?
• DataWarehouse
• Business Intelligence
• Aplicações analíticas
• Mídias sociais
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            12
                                evolução e novas possibilidades




Muitas possibilidades...
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            13
                                evolução e novas possibilidades




Vantagens
• Por que usar Hadoop?
   • Código aberto
   • Econômico
   • Robusto
   • Escalável
   • Foco na regra de negócio
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            14
                                evolução e novas possibilidades




Vantagens (1)
• Código Aberto
   • Comunidade ativa
   • Apoio de grandes corporações
   • Maiores correções de erros
   • Constante evolução do arcabouço
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            15
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                              16
                                  evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            17
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                             18
                                 evolução e novas possibilidades




Vantagens (5)
• Foco na regra de negócio
   • Hadoop realiza o "trabalho duro“
   • Desenvolvedores podem focar apenas na
     abstração do problema
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            19
                                evolução e novas possibilidades




Desvantagens (1)
• Único nó mestre
   • Ponto único de falha
   • Pode impedir o escalonamento
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            20
                                evolução e novas possibilidades




Desvantagens (2)
• Dificuldade das aplicações paralelas
   • Problemas não paralelizáveis
   • Processamento de arquivos pequenos
   • Muito processamento em poucos dados
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            21
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                22
                                    evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                        23
                                            evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            24
                                evolução e novas possibilidades




Subprojetos
• Principais
   • Hadoop Common
   • Hadoop Distributed File System (HDFS)
   • Hadoop MapReduce
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            25
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            26
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            27
                                evolução e novas possibilidades
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            28
                                evolução e novas possibilidades




Componentes do Hadoop
• Nó Mestre:
   • NameNode
   • DataNode
   • SecondaryNameNode
• Nó(s) Escravo(s):
   • JobTracker
   • TaskTracker
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            29
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            30
                                evolução e novas possibilidades




Componentes do Hadoop
• DataNode
   • Realiza o armazenamento dos dados
   • Permite armazenar diversos blocos
   • Deve se comunicar com o NameNode
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            31
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            32
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            33
                                evolução e novas possibilidades




Componentes do Hadoop
• TaskTracker
   • Realiza o processamento das tarefas
     MapReduce
   • Uma instância em cada nó escravo
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            34
                                evolução e novas possibilidades




Resumindo...
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                       35
                                           evolução e novas possibilidades




NameNode e DataNodes no HDFS




NameNode (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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                               36
                                   evolução e novas possibilidades




JobTracker 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, ...
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            37
                                evolução e novas possibilidades




Formas de Execução
• Local
• Pseudo-distribuído
• Completamente distribuído
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            38
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            39
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            40
                                evolução e novas possibilidades




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
Apache



HDFS
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            42
                                evolução e novas possibilidades




HDFS
• Hadoop Distributed Filesystem
   • Características
   • Divisão em blocos
   • Replicação de dados
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            43
                                evolução e novas possibilidades




HDFS
• Características
• Sistema de arquivos distribuídos
• Arquitetura Mestre/Escravo
• Inspirado no Google FileSystem
  (GFS)
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            44
                                evolução e novas possibilidades




Características
• Implementado em Java
• Armazenamento de grandes volumes
  de dados
• Recuperação de dados transparente
  ao usuário
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            45
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            46
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            47
                                evolução e novas possibilidades




Exemplo…
Apache



MapReduce
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                 49
                                     evolução e novas possibilidades




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
 CSBC JAI 2012
                                                                 Curitiba, 2
 CSBC 2012 em Curitiba
                                                                 em, 1
                                    Word Count
                                                                 JAI, 2
Minicurso Hadoop JAI 2012                                        Hadoop, 1
CSBC 2012 Curitiba Paraná                                        Minicurso, 1
                                                                 Paraná, 1
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                50
                                    evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                51
                                    evolução e novas possibilidades




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!
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            52
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                53
                                    evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                 54
                                     evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                   55
                                       evolução e novas possibilidades




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)
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            56
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            57
                                evolução e novas possibilidades




Ilustrando a ideia original
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            58
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                               59
                                   evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            60
                                evolução e novas possibilidades




Word 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));
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            61
                                evolução e novas possibilidades




Execução do WordCount
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            62
                                evolução e novas possibilidades




Implementação do Hadoop
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            63
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            64
                                evolução e novas possibilidades




Ilustrando o Grep

      cat | grep | sort | unique > file
    input | map | shuffle | reduce > output
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            65
                                evolução e novas possibilidades




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))
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                               66
                                                  evolução e novas possibilidades




Ilustrando 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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            67
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                              68
                                  evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            69
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            70
                                evolução e novas possibilidades




Gerando recomendações
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            71
                                evolução e novas possibilidades




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]
Hadoop: conceitos teóricos e práticos,
 XXXII CSBC 2012 – XXX JAI                                                           72
                                                evolução e novas possibilidades




 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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            73
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            74
                                evolução e novas possibilidades




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.
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                             75
                                 evolução e novas possibilidades




Chamada do Mahout no Hadoop
:~$ 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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                76
                                    evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            77
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                78
                                    evolução e novas possibilidades




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)
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                79
                                    evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                 80
                                     evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                  81
                                      evolução e novas possibilidades




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.
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            82
                                evolução e novas possibilidades




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.
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                            83
                                evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                               84
                                   evolução e novas possibilidades




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
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                                85
                                    evolução e novas possibilidades




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>
Hadoop: conceitos teóricos e práticos,
XXXII CSBC 2012 – XXX JAI                                             86
                                 evolução e novas possibilidades




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

More Related Content

What's hot

Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveFlavio Fonte, PMP, ITIL
 
TDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ONTDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ONThiago Santiago
 
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
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceFelipe RENZ - MBA TI / Big
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passosSensedia
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataArquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataSandro Andrade
 
Palestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software LivrePalestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software LivreAmbiente Livre
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Ambiente Livre
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Ambiente Livre
 
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
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoAmbiente Livre
 
OS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATAOS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATALeonardo Dias
 
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
 
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e PentahoBig Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e PentahoAmbiente Livre
 
A importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataA importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataVinícius Barros
 

What's hot (20)

Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
 
Hadoop, Big Data e Cloud Computing
Hadoop, Big Data e Cloud ComputingHadoop, Big Data e Cloud Computing
Hadoop, Big Data e Cloud Computing
 
TDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ONTDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ON
 
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
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open source
 
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
 
Proposta de arquitetura Hadoop
Proposta de arquitetura HadoopProposta de arquitetura Hadoop
Proposta de arquitetura Hadoop
 
Hadoop - Primeiros passos
Hadoop - Primeiros passosHadoop - Primeiros passos
Hadoop - Primeiros passos
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigDataArquiteturas, Tecnologias e Desafios para Análise de BigData
Arquiteturas, Tecnologias e Desafios para Análise de BigData
 
Palestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software LivrePalestra: Cientista de Dados – Dominando o Big Data com Software Livre
Palestra: Cientista de Dados – Dominando o Big Data com Software Livre
 
Seminário Hadoop
Seminário HadoopSeminário Hadoop
Seminário Hadoop
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
 
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
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
 
OS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATAOS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATA
 
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
 
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e PentahoBig Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
 
BigData MapReduce
BigData MapReduceBigData MapReduce
BigData MapReduce
 
A importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataA importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big Data
 

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

Explorando os principais implementadores hadoop e o papel que eles exercem no...
Explorando os principais implementadores hadoop e o papel que eles exercem no...Explorando os principais implementadores hadoop e o papel que eles exercem no...
Explorando os principais implementadores hadoop e o papel que eles exercem no...José Renato Pequeno
 
BigData & Hadoop - Technology Latinoware 2016
BigData & Hadoop - Technology Latinoware 2016BigData & Hadoop - Technology Latinoware 2016
BigData & Hadoop - Technology Latinoware 2016Thiago Santiago
 
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...Vinícius Barros
 
Hadoop Day - MeetUp - O poder da Informação
Hadoop Day - MeetUp - O poder da InformaçãoHadoop Day - MeetUp - O poder da Informação
Hadoop Day - MeetUp - O poder da InformaçãoThiago Santiago
 
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
 
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigDataDataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigDataEduardo Hahn
 
TDC São Paulo Online 2020 - trilha Big Data
TDC São Paulo Online 2020 - trilha Big DataTDC São Paulo Online 2020 - trilha Big Data
TDC São Paulo Online 2020 - trilha Big DataEduardo Hahn
 
Pré-processamento em Big Data
Pré-processamento em Big DataPré-processamento em Big Data
Pré-processamento em Big DataJoão Gabriel Lima
 
Hadoop - TDC FLN 2013
Hadoop - TDC FLN 2013Hadoop - TDC FLN 2013
Hadoop - TDC FLN 2013Aldrin Leal
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaAlessandro Binhara
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Rodrigo Vieira
 
Introdução ao Apache Hadoop
Introdução ao Apache HadoopIntrodução ao Apache Hadoop
Introdução ao Apache HadoopVinícius Barros
 
Big Data Week São Paulo 2017
Big Data Week São Paulo 2017 Big Data Week São Paulo 2017
Big Data Week São Paulo 2017 Thiago Santiago
 

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

Explorando os principais implementadores hadoop e o papel que eles exercem no...
Explorando os principais implementadores hadoop e o papel que eles exercem no...Explorando os principais implementadores hadoop e o papel que eles exercem no...
Explorando os principais implementadores hadoop e o papel que eles exercem no...
 
Big Data, JVM e Redes Sociais
Big Data, JVM e Redes SociaisBig Data, JVM e Redes Sociais
Big Data, JVM e Redes Sociais
 
BigData & Hadoop - Technology Latinoware 2016
BigData & Hadoop - Technology Latinoware 2016BigData & Hadoop - Technology Latinoware 2016
BigData & Hadoop - Technology Latinoware 2016
 
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...
Indústria 4.0: como a IoT e Big Data mudarão a forma como lidamos com a tecno...
 
Hadoop Day - MeetUp - O poder da Informação
Hadoop Day - MeetUp - O poder da InformaçãoHadoop Day - MeetUp - O poder da Informação
Hadoop Day - MeetUp - O poder da Informação
 
Hadoop
HadoopHadoop
Hadoop
 
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
 
Hadoop
HadoopHadoop
Hadoop
 
Big Data
Big DataBig Data
Big Data
 
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigDataDataOps: da teoria a prática, como realmente se aplica em projetos de BigData
DataOps: da teoria a prática, como realmente se aplica em projetos de BigData
 
TDC São Paulo Online 2020 - trilha Big Data
TDC São Paulo Online 2020 - trilha Big DataTDC São Paulo Online 2020 - trilha Big Data
TDC São Paulo Online 2020 - trilha Big Data
 
Pré-processamento em Big Data
Pré-processamento em Big DataPré-processamento em Big Data
Pré-processamento em Big Data
 
Hadoop - TDC FLN 2013
Hadoop - TDC FLN 2013Hadoop - TDC FLN 2013
Hadoop - TDC FLN 2013
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
 
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
Aspectos do aprendizado do paradigma orientado a objetos por programadores pr...
 
Um LCMS
Um LCMSUm LCMS
Um LCMS
 
Introdução ao Apache Hadoop
Introdução ao Apache HadoopIntrodução ao Apache Hadoop
Introdução ao Apache Hadoop
 
Big data
Big dataBig data
Big data
 
CBIE WRE Lanylldo
CBIE WRE LanylldoCBIE WRE Lanylldo
CBIE WRE Lanylldo
 
Big Data Week São Paulo 2017
Big Data Week São Paulo 2017 Big Data Week São Paulo 2017
Big Data Week São Paulo 2017
 

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

  • 1. Apache Conceitos teóricos e práticos, evolução e novas possibilidades Prof. Dr. Alfredo Goldman Prof. 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. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 2 evolução e novas possibilidades 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
  • 3. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 3 evolução e novas possibilidades 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
  • 4. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 4 evolução e novas possibilidades 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
  • 5. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 5 evolução e novas possibilidades 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
  • 6. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 6 evolução e novas possibilidades 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
  • 7. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 7 evolução e novas possibilidades Histórico ***http://nutch.apache.org/ ***http://labs.google.com/papers/mapreduce.html ***http://labs.google.com/papers/gfs.html
  • 8. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 8 evolução e novas possibilidades 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
  • 9. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 9 evolução e novas possibilidades 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
  • 10. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 10 evolução e novas possibilidades Quem utiliza?
  • 11. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 11 evolução e novas possibilidades Onde utilizar? • DataWarehouse • Business Intelligence • Aplicações analíticas • Mídias sociais
  • 12. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 12 evolução e novas possibilidades Muitas possibilidades...
  • 13. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 13 evolução e novas possibilidades Vantagens • Por que usar Hadoop? • Código aberto • Econômico • Robusto • Escalável • Foco na regra de negócio
  • 14. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 14 evolução e novas possibilidades Vantagens (1) • Código Aberto • Comunidade ativa • Apoio de grandes corporações • Maiores correções de erros • Constante evolução do arcabouço
  • 15. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 15 evolução e novas possibilidades 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
  • 16. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 16 evolução e novas possibilidades 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
  • 17. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 17 evolução e novas possibilidades 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
  • 18. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 18 evolução e novas possibilidades Vantagens (5) • Foco na regra de negócio • Hadoop realiza o "trabalho duro“ • Desenvolvedores podem focar apenas na abstração do problema
  • 19. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 19 evolução e novas possibilidades Desvantagens (1) • Único nó mestre • Ponto único de falha • Pode impedir o escalonamento
  • 20. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 20 evolução e novas possibilidades Desvantagens (2) • Dificuldade das aplicações paralelas • Problemas não paralelizáveis • Processamento de arquivos pequenos • Muito processamento em poucos dados
  • 21. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 21 evolução e novas possibilidades 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
  • 22. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 22 evolução e novas possibilidades 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
  • 23. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 23 evolução e novas possibilidades 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
  • 24. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 24 evolução e novas possibilidades Subprojetos • Principais • Hadoop Common • Hadoop Distributed File System (HDFS) • Hadoop MapReduce
  • 25. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 25 evolução e novas possibilidades 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
  • 26. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 26 evolução e novas possibilidades 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
  • 27. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 27 evolução e novas possibilidades
  • 28. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 28 evolução e novas possibilidades Componentes do Hadoop • Nó Mestre: • NameNode • DataNode • SecondaryNameNode • Nó(s) Escravo(s): • JobTracker • TaskTracker
  • 29. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 29 evolução e novas possibilidades 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
  • 30. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 30 evolução e novas possibilidades Componentes do Hadoop • DataNode • Realiza o armazenamento dos dados • Permite armazenar diversos blocos • Deve se comunicar com o NameNode
  • 31. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 31 evolução e novas possibilidades 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
  • 32. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 32 evolução e novas possibilidades 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
  • 33. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 33 evolução e novas possibilidades Componentes do Hadoop • TaskTracker • Realiza o processamento das tarefas MapReduce • Uma instância em cada nó escravo
  • 34. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 34 evolução e novas possibilidades Resumindo...
  • 35. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 35 evolução e novas possibilidades NameNode e DataNodes no HDFS NameNode (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. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 36 evolução e novas possibilidades JobTracker 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. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 37 evolução e novas possibilidades Formas de Execução • Local • Pseudo-distribuído • Completamente distribuído
  • 38. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 38 evolução e novas possibilidades 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
  • 39. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 39 evolução e novas possibilidades 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
  • 40. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 40 evolução e novas possibilidades 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
  • 42. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 42 evolução e novas possibilidades HDFS • Hadoop Distributed Filesystem • Características • Divisão em blocos • Replicação de dados
  • 43. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 43 evolução e novas possibilidades HDFS • Características • Sistema de arquivos distribuídos • Arquitetura Mestre/Escravo • Inspirado no Google FileSystem (GFS)
  • 44. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 44 evolução e novas possibilidades Características • Implementado em Java • Armazenamento de grandes volumes de dados • Recuperação de dados transparente ao usuário
  • 45. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 45 evolução e novas possibilidades 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
  • 46. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 46 evolução e novas possibilidades 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
  • 47. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 47 evolução e novas possibilidades Exemplo…
  • 49. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 49 evolução e novas possibilidades 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 CSBC JAI 2012 Curitiba, 2 CSBC 2012 em Curitiba em, 1 Word Count JAI, 2 Minicurso Hadoop JAI 2012 Hadoop, 1 CSBC 2012 Curitiba Paraná Minicurso, 1 Paraná, 1
  • 50. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 50 evolução e novas possibilidades 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
  • 51. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 51 evolução e novas possibilidades 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!
  • 52. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 52 evolução e novas possibilidades 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
  • 53. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 53 evolução e novas possibilidades 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
  • 54. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 54 evolução e novas possibilidades 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
  • 55. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 55 evolução e novas possibilidades 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)
  • 56. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 56 evolução e novas possibilidades 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
  • 57. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 57 evolução e novas possibilidades Ilustrando a ideia original
  • 58. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 58 evolução e novas possibilidades 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
  • 59. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 59 evolução e novas possibilidades 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
  • 60. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 60 evolução e novas possibilidades Word 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. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 61 evolução e novas possibilidades Execução do WordCount
  • 62. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 62 evolução e novas possibilidades Implementação do Hadoop
  • 63. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 63 evolução e novas possibilidades 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
  • 64. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 64 evolução e novas possibilidades Ilustrando o Grep cat | grep | sort | unique > file input | map | shuffle | reduce > output
  • 65. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 65 evolução e novas possibilidades 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))
  • 66. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 66 evolução e novas possibilidades Ilustrando 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. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 67 evolução e novas possibilidades 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
  • 68. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 68 evolução e novas possibilidades 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
  • 69. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 69 evolução e novas possibilidades 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
  • 70. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 70 evolução e novas possibilidades Gerando recomendações
  • 71. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 71 evolução e novas possibilidades 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]
  • 72. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 72 evolução e novas possibilidades 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
  • 73. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 73 evolução e novas possibilidades 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
  • 74. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 74 evolução e novas possibilidades 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.
  • 75. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 75 evolução e novas possibilidades Chamada do Mahout no Hadoop :~$ 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
  • 76. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 76 evolução e novas possibilidades 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
  • 77. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 77 evolução e novas possibilidades 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
  • 78. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 78 evolução e novas possibilidades 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)
  • 79. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 79 evolução e novas possibilidades 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
  • 80. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 80 evolução e novas possibilidades 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
  • 81. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 81 evolução e novas possibilidades 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.
  • 82. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 82 evolução e novas possibilidades 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.
  • 83. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 83 evolução e novas possibilidades 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
  • 84. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 84 evolução e novas possibilidades 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
  • 85. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 85 evolução e novas possibilidades 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>
  • 86. Hadoop: conceitos teóricos e práticos, XXXII CSBC 2012 – XXX JAI 86 evolução e novas possibilidades 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