HADOOP / MapReduce
Bruno Dadalt Zambiazi
Raniéri Geroldi
• Framework Java mantido pela Fundação Apache;
• Solução open-source para trabalhar com big data;
• Criado em 2005 com apoio de grandes empresas como
  Yahoo!




O que é?
• Desenvolvimento de aplicações distribuídas;
• Processamento de grandes volumes de dados.




Serve para...?
• A partir de outro projeto da Apache chamado “Nutch”.
  • Mecanismo para pesquisas web.
• Desenvolvedores encontravam dificuldades para
  realização de grandes processamentos em tempos
  eficientes;
• Doug Cutting foi o principal responsável pelo projeto;
• Yahoo! disponibilizou uma equipe de programadores para
  ajudar no desenvolvimento da ferramenta.




Como surgiu?
• Indicado para organizações que necessitem de análise de
  grandes volumes de dados;
• Áreas:
  •   Astronomia;
  •   Pesquisas científicas e militares;
  •   Meteorologia;
  •   Redes sociais;
  •   Pesquisa em internet;
  •   Mercado financeiro;
  •   E-commerce.



Onde utilizar?
•   Redução de custos;
•   Boa documentação;
•   Comunidade ativa;
•   Adesão por parte de grandes empresas.

• Estimativa:
    • Em cinco anos, metade dos dados digitais serão processados
      pelo Hadoop. (Fonte: Hortonworks, subsidiária do Yahoo!)




E os benefícios?
• Empresas:
  • Adobe, Amazon, eBay, Google, IBM, LinkedIn, Twitter

• Lista completa em:
  • http://wiki.apache.org/hadoop/PoweredBy

• Principais cases: Facebook e Yahoo!




Quem está usando?
• Tem múltiplos clusters com Hadoop;
• Um dos maiores com 2.500 núcleos de CPU e 1 PB de
  espaço em disco;
• Diariamente, carrega 250 GB de dados para o sistema de
  arquivos do Hadoop;
• Possui centenas de jobs do Hadoop sendo executadas
  contra esse conjunto de dados;
• Principal objetivo: recomendações (amigos, interesses,
  atividades, etc).



Facebook??
• Principal objetivo: recurso de pesquisa Search Assist
  (sugestões de resultado em tempo real);
• Resultado do Search Assist é gerado pela análise de
  terabytes de arquivos de log;
• Tempo de geração da base do Search Assist:
  • Com ferramentas tradicionais: 26 dias;
  • Com o Hadoop: 20 minutos.




Yahoo!?
• Composto por três subprojetos:

  • Hadoop Common: utilitários comuns aos demais
    subprojetos;

  • Hadoop Distributed File System (HDFS): é o sistema de
    armazenamento de arquivos;

  • Hadoop MapReduce: é quem possibilita o processamento
    distribuído.



E como funciona?
• Execução de um procedimento com Hadoop:

  1. Carregar os dados no HDFS;
  2. Realizar as operações MapReduce;
  3. Recuperar os resultados no HDFS.




Resumindo...
• Principal tarefa: armazenamento de dados;
• É o sistema de arquivos do Hadoop;
• Divide os arquivos e os replica para diferentes máquinas
  do cluster;
• Desenvolvido em Java;
• Pode ser executado em máquinas com hardwares comuns;
• Funciona sob o modelo master/workers.




HDFS          O que é?
• É o master (nó principal);
• Gerencia o sistema de arquivos e o acesso a eles.
  • Conhece todos os Datanodes e onde se encontram cada
    pedaço de determinado arquivo.
• Representa o JobTracker, serviço que delega e monitora o
  status das tarefas.
  • Permite reexecução de tarefas que falharam.




HDFS         Namenode
• É o worker, nó participante;
• Armazena pedaços dos arquivos.
  • Um arquivo de entrada é dividido em blocos, que são
    replicados para diversos Datanodes;
  • Cada “pedaço” varia entre 64 MB e 128 MB.
• Possui um TaskTracker que executa as tarefas delegadas
  pelo JobTracker (do Namenode).




HDFS         Datanode
HDFS   Namenode / Datanode
• API Java;
• Interface de linha de comando:

Principais comandos
Ajuda:                     ./hadoop fs -help

Criação de diretório:      ./hadoop fs –mkdir my_folder

Listagem de arquivos:      ./hadoop fs –ls my_folder

Envio de arquivo:          ./hadoop fs –put /tmp/my_file.txt my_folder

Visualização de arquivo:   ./hadoop fs –cat my_folder/my_file.txt

Busca de arquivo:          ./hadoop fs –get my_folder/my_file.txt

Remoção de diretório:      ./hadoop fs –rmr my_folder




HDFS                    Como utilizar?
• Principal tarefa: processamento paralelo;
• Simplifica o processamento de dados em grande escala;
• Pode ser utilizado tanto sobre sistemas de arquivos
  (dados não-estruturado) quanto sobre bancos de dados
  (dados estruturados);

• Processamento composto de duas fases:
  • Map (mapear)
  • Reduce (reduzir, simplifcar)



MapReduce                      O que é?
• Master recebe a entrada e divide em problemas menores;
• Cada “subproblema” é então distribuído para algum
  worker;
• Os workers trabalham no subproblema, gravam seu
  resultado no disco local e depois enviam o resultado
  através da rede para o master;
• A saída é composta por pares de informação formados
  por chave-valor.




MapReduce                   A fase Map
• O master recebe a resposta de todos os nós participantes
  do processamento;
• As respostas são, então, combinadas de alguma forma
  para que se obtenha a resposta do problema original.




MapReduce                     A fase Reduce
192.168.1.102, 03-01-2012, 10:30
  Map          192.168.1.100, 11-01-2012, 11:47
               192.168.1.102, 11-01-2012, 13:32       Entrada
               192.168.1.89, 13-01-2012, 08:27
               192.168.1.102, 14-01-2012, 16:01



 192.168.1.102, 1
 192.168.1.100, 1
 192.168.1.102, 1
                                             192.168.1.102, 3
 192.168.1.89, 1
                                             192.168.1.100, 1
 192.168.1.102, 1          Reduce
                                             192.168.1.89, 1




MapReduce                      Exemplo
• Três possibilidades de comportamento do Hadoop:

  • Local: é executado em apenas uma JVM, sendo a
    configuração adequada em tempo de desenvolvimento;

  • Pseudo-distribuído: serviços background do Hadoop
    executam localmente, simulando um cluster;

  • Totalmente distribuído: serviços background do Hadoop
    executam num cluster real.



Configuração
• Possuem o Hadoop como mecanismo central:

  • Cassandra: sistema de banco de dados distribuído;

  • HBase: sistema de banco de dados distribuído;

  • Hive: infraestrutura de data warehouse que transforma
    consultas HiveQL (dialeto SQL) em tarefas MapReduce;

  • Pig: linguagem de alto nível para simplificar e agilizar a
    criação de tarefas de análise de dados.


Projetos Apache
Hadoop é feito para criar soluções para desenvolvedores
que por acaso têm muitos dados para armazenar, ou muitos
dados para analisar, ou muitas máquinas para coordenar, e
que não têm tempo, habilidade, ou vontade de se tornar um
 especialista em sistemas distribuídos a ponto de preparar
       uma infraestrutura para lidar com tudo isso.

               Tom White, Hadoop – The Definitive Guide




Definição
• Big Data na plataforma Java. Revista Java Magazine,
  edição nº 103
• http://hadoop.apache.org/common/docs/r1.0.3/cluster_set
  up.html
• http://www.michael-noll.com/tutorials/running-hadoop-
  on-ubuntu-linux-multi-node-cluster/
• http://www.ibm.com/developerworks/br/cloud/library/l-
  hadoop-1/?ca=drs-
• http://forum.imasters.com.br/topic/411551-
  processamento-de-dados-distribuidos-com-hadoop-parte-
  02-indo-mais-longe/


Referências

Hadoop

  • 1.
    HADOOP / MapReduce BrunoDadalt Zambiazi Raniéri Geroldi
  • 2.
    • Framework Javamantido pela Fundação Apache; • Solução open-source para trabalhar com big data; • Criado em 2005 com apoio de grandes empresas como Yahoo! O que é?
  • 3.
    • Desenvolvimento deaplicações distribuídas; • Processamento de grandes volumes de dados. Serve para...?
  • 4.
    • A partirde outro projeto da Apache chamado “Nutch”. • Mecanismo para pesquisas web. • Desenvolvedores encontravam dificuldades para realização de grandes processamentos em tempos eficientes; • Doug Cutting foi o principal responsável pelo projeto; • Yahoo! disponibilizou uma equipe de programadores para ajudar no desenvolvimento da ferramenta. Como surgiu?
  • 5.
    • Indicado paraorganizações que necessitem de análise de grandes volumes de dados; • Áreas: • Astronomia; • Pesquisas científicas e militares; • Meteorologia; • Redes sociais; • Pesquisa em internet; • Mercado financeiro; • E-commerce. Onde utilizar?
  • 6.
    Redução de custos; • Boa documentação; • Comunidade ativa; • Adesão por parte de grandes empresas. • Estimativa: • Em cinco anos, metade dos dados digitais serão processados pelo Hadoop. (Fonte: Hortonworks, subsidiária do Yahoo!) E os benefícios?
  • 7.
    • Empresas: • Adobe, Amazon, eBay, Google, IBM, LinkedIn, Twitter • Lista completa em: • http://wiki.apache.org/hadoop/PoweredBy • Principais cases: Facebook e Yahoo! Quem está usando?
  • 8.
    • Tem múltiplosclusters com Hadoop; • Um dos maiores com 2.500 núcleos de CPU e 1 PB de espaço em disco; • Diariamente, carrega 250 GB de dados para o sistema de arquivos do Hadoop; • Possui centenas de jobs do Hadoop sendo executadas contra esse conjunto de dados; • Principal objetivo: recomendações (amigos, interesses, atividades, etc). Facebook??
  • 9.
    • Principal objetivo:recurso de pesquisa Search Assist (sugestões de resultado em tempo real); • Resultado do Search Assist é gerado pela análise de terabytes de arquivos de log; • Tempo de geração da base do Search Assist: • Com ferramentas tradicionais: 26 dias; • Com o Hadoop: 20 minutos. Yahoo!?
  • 10.
    • Composto portrês subprojetos: • Hadoop Common: utilitários comuns aos demais subprojetos; • Hadoop Distributed File System (HDFS): é o sistema de armazenamento de arquivos; • Hadoop MapReduce: é quem possibilita o processamento distribuído. E como funciona?
  • 11.
    • Execução deum procedimento com Hadoop: 1. Carregar os dados no HDFS; 2. Realizar as operações MapReduce; 3. Recuperar os resultados no HDFS. Resumindo...
  • 12.
    • Principal tarefa:armazenamento de dados; • É o sistema de arquivos do Hadoop; • Divide os arquivos e os replica para diferentes máquinas do cluster; • Desenvolvido em Java; • Pode ser executado em máquinas com hardwares comuns; • Funciona sob o modelo master/workers. HDFS O que é?
  • 13.
    • É omaster (nó principal); • Gerencia o sistema de arquivos e o acesso a eles. • Conhece todos os Datanodes e onde se encontram cada pedaço de determinado arquivo. • Representa o JobTracker, serviço que delega e monitora o status das tarefas. • Permite reexecução de tarefas que falharam. HDFS Namenode
  • 14.
    • É oworker, nó participante; • Armazena pedaços dos arquivos. • Um arquivo de entrada é dividido em blocos, que são replicados para diversos Datanodes; • Cada “pedaço” varia entre 64 MB e 128 MB. • Possui um TaskTracker que executa as tarefas delegadas pelo JobTracker (do Namenode). HDFS Datanode
  • 15.
    HDFS Namenode / Datanode
  • 16.
    • API Java; •Interface de linha de comando: Principais comandos Ajuda: ./hadoop fs -help Criação de diretório: ./hadoop fs –mkdir my_folder Listagem de arquivos: ./hadoop fs –ls my_folder Envio de arquivo: ./hadoop fs –put /tmp/my_file.txt my_folder Visualização de arquivo: ./hadoop fs –cat my_folder/my_file.txt Busca de arquivo: ./hadoop fs –get my_folder/my_file.txt Remoção de diretório: ./hadoop fs –rmr my_folder HDFS Como utilizar?
  • 17.
    • Principal tarefa:processamento paralelo; • Simplifica o processamento de dados em grande escala; • Pode ser utilizado tanto sobre sistemas de arquivos (dados não-estruturado) quanto sobre bancos de dados (dados estruturados); • Processamento composto de duas fases: • Map (mapear) • Reduce (reduzir, simplifcar) MapReduce O que é?
  • 18.
    • Master recebea entrada e divide em problemas menores; • Cada “subproblema” é então distribuído para algum worker; • Os workers trabalham no subproblema, gravam seu resultado no disco local e depois enviam o resultado através da rede para o master; • A saída é composta por pares de informação formados por chave-valor. MapReduce A fase Map
  • 19.
    • O masterrecebe a resposta de todos os nós participantes do processamento; • As respostas são, então, combinadas de alguma forma para que se obtenha a resposta do problema original. MapReduce A fase Reduce
  • 20.
    192.168.1.102, 03-01-2012, 10:30 Map 192.168.1.100, 11-01-2012, 11:47 192.168.1.102, 11-01-2012, 13:32 Entrada 192.168.1.89, 13-01-2012, 08:27 192.168.1.102, 14-01-2012, 16:01 192.168.1.102, 1 192.168.1.100, 1 192.168.1.102, 1 192.168.1.102, 3 192.168.1.89, 1 192.168.1.100, 1 192.168.1.102, 1 Reduce 192.168.1.89, 1 MapReduce Exemplo
  • 21.
    • Três possibilidadesde comportamento do Hadoop: • Local: é executado em apenas uma JVM, sendo a configuração adequada em tempo de desenvolvimento; • Pseudo-distribuído: serviços background do Hadoop executam localmente, simulando um cluster; • Totalmente distribuído: serviços background do Hadoop executam num cluster real. Configuração
  • 22.
    • Possuem oHadoop como mecanismo central: • Cassandra: sistema de banco de dados distribuído; • HBase: sistema de banco de dados distribuído; • Hive: infraestrutura de data warehouse que transforma consultas HiveQL (dialeto SQL) em tarefas MapReduce; • Pig: linguagem de alto nível para simplificar e agilizar a criação de tarefas de análise de dados. Projetos Apache
  • 23.
    Hadoop é feitopara criar soluções para desenvolvedores que por acaso têm muitos dados para armazenar, ou muitos dados para analisar, ou muitas máquinas para coordenar, e que não têm tempo, habilidade, ou vontade de se tornar um especialista em sistemas distribuídos a ponto de preparar uma infraestrutura para lidar com tudo isso. Tom White, Hadoop – The Definitive Guide Definição
  • 24.
    • Big Datana plataforma Java. Revista Java Magazine, edição nº 103 • http://hadoop.apache.org/common/docs/r1.0.3/cluster_set up.html • http://www.michael-noll.com/tutorials/running-hadoop- on-ubuntu-linux-multi-node-cluster/ • http://www.ibm.com/developerworks/br/cloud/library/l- hadoop-1/?ca=drs- • http://forum.imasters.com.br/topic/411551- processamento-de-dados-distribuidos-com-hadoop-parte- 02-indo-mais-longe/ Referências