SlideShare uma empresa Scribd logo
1 de 31
HADOOPPrimeiros Passos
Fillipe Massuda • Consultor SOA
Fillipe Massuda
 Consultor SOA na Sensedia
 Engenheiro da computação
pela FEI com MBA em
Arquitetura de TI pela FIAP
 Especialista em
implementação de
arquitetura de referência SOA
nas plataformas IBM e Oracle
 Apaixonado por TI e novas
tecnologias
 Guitarrista amador
aposentado e viciado em
videogamefillipe.massuda@sensedia.com
@fimassuda
Sobre a Sensedia
 Empresa brasileira, sediada em Campinas com escritórios
em São Paulo, Rio de Janeiro e EUA
 Profundo conhecimento em:
 SOA (Arquitetura Orientada a Serviços)
 API (Application Programming Interfaces)
 Posicionada como visionária no quadrante mágico em
SOA do Gartner
Sobre a Sensedia
Objetivo
Apresentar os primeiros passos para configurar e executar um
job MapReduce em Single-Node Cluster no Hadoop.
 Para esta demonstração, o ambiente foi o seguinte:
• Ubuntu 13.04
• JDK 1.6
• Apache Hadoop 1.1.2 (Stable)
 Foram utilizadas as seguintes ferramentas de apoio:
• Apache Maven 3.0.5
Ambiente
 O Hadoop possui 3 modos de operação:
 Local (Standalone)
 Pseudo-Distributed
 Fully-Distributed
Modos de Operação
Neste apresentação será demonstrada a configuração e execução de um job no
modo Pseudo-Distributed, também chamado Single-Node Cluster, no qual
cada Hadoop daemon é rodado em um processo java separado.
Pseudo-Distributed
Mode
A configuração do SSH é necessária para o Hadoop gerenciar seus nós.
Por rodar tudo em localhost, podemos configurar sem senha de conexão.
 Executar os seguintes comandos para criação da chave para conexão
ssh ao localhost
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_Keys
 Testar a conexão ssh para adicionar a máquina na lista de
known_hosts
$ ssh localhost
Passo 1: Configuração do SSH
Configurar o arquivo de perfil para adicionar as variáveis de ambiente ao
Path. Além disso, adicionar a pasta do Hadoop as variáveis
(HADOOP_PREFIX) e verificar se JAVA_HOME também está configurada.
 Configuração do .bashrc (Ubuntu)
Passo 2: Configurando ~/.bashrc
Lembrando que ao atualizar
o .bashrc, o perfil deve ser
carregado novamente,
reiniciando o terminal ou
executando
 source ~/.bashrc
 Nota: Em algumas versões a variável com a pasta do Hadoop
pode ser configurada como HADOOP_HOME. Para esta versão,
quando utilizado HADOOP_HOME, o aviso “$HADOOP_HOME is
deprecated” era gerado, para evitar este aviso é necessário
utilizar a variável HADOOP_PREFIX.
 Configurar o JAVA_HOME no arquivo $HADOOP_PREFIX/conf/hadoop-
env.sh
 Criar uma pasta para que o Hadoop utilize como base para os
arquivos temporários
 ex: $HADOOP_PREFIX/tmp
Passo 3: Configuração do Hadoop
No arquivo core-site.xml configurar o nome padrão para o File System e a
pasta base para os arquivos temporários:
 $HADOOP_PREFIX/conf/core-site.xml
Passo 4: Arquivos de configuração(1/3)
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/fillipe/dev/hadoop/tmp</value>
</property>
</configuration>
 Nota: Para mais informações sobre as propriedades
do arquivo core-site.xml, consultar o arquivo
docs/core-default.html
Alterar no arquivo de configuração do HDFS, para adicionar o número do
replicações:
 $HADOOP_PREFIX/conf/hdfs-site.xml
Passo 4: Arquivos de configuração(2/3)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
 Nota: Para mais informações de configuração no
arquivo hdfs-site.xml, consultar o arquivo docs/hdfs-
default.html
Alterar no arquivo de configurações do MapReduce o host e a porta de
execução do job tracker:
 $HADOOP_PREFIX/conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
Passo 4: Arquivos de configuração(3/3)
 Nota: Para mais informações de configuração no
arquivo mapred-site.xml, consultar o arquivo
docs/mapred-default.html
Formatar o hadoop filesystem para inicializar as pastas para o HDFS e o
MapReduce:
 $ hadoop namenode -format
Passo 5: Formatando o HDFS FileSystem
 Inicializar os processos:
 start-all.sh
 Finalizar os processos:
 stop-all.sh
Passo 6: Inicialização dos Processos
 Nota: Estes comandos irão inicializar ou finalizar os
DataNodes, NameNodes, JobTrackers e TaskTrackers.
Map
Reduce
 O job MapReduce que será utilizado, terá o objetivo de contar a
quantidade de vezes que cada palavras aparece no documento de
entrada, gerando um resumo na pasta de saída.
 Os arquivos para o teste serão:
Exemplo: Contador de Palavras
file1.txt
Hadoop
MapReduce
BigData
Apache
file2.txt
Hadoop
HDFS
Namenode and Datanode
MapReduce
JobTracker and TaskTracker
 Nota: Este exemplo está disponível no pacote do hadoop.
 A primeira etapa é desenvolver o Map que irá receber os arquivos de
entrada, um por um, e retornará uma lista <chave, valor>.
Map
 Nota: Neste exemplo, a
função map, retornará
para o file1.txt como
input, algo semelhante à:
 file1.txt
• Hadoop, 1
• MapReduce, 1
• BigData, 1
• Apache, 1
 A etapa de shuffle será realizado pelas próprias bibliotecas de
MapReduce. A saída do map é a entrada do Shuffle e a saída do
Shuffle é a entrada do Reduce.
 Nesta etapa, a lista é agrupada e ordenada por chave.
Shuffle
 Saída do Map
 file1.txt
• Hadoop, 1
• MapReduce, 1
• BigData, 1
• Apache, 1
 file2.txt
• Hadoop, 1
• HDFS, 1
• Namenode, 1
• and, 1
• Datanode, 1
• MapReduce, 1
• JogTracker, 1
• and, 1
• TaskTracker, 1
 Saída do Shuffle
• Apache, [1]
• BigData, [1]
• Datanode, [1]
• HDFS, [1]
• Hadoop, [1,1]
• JobTracker, [1]
• MapReduce, [1,1]
• Namenode, [1]
• TaskTracker, [1]
• and, [1,1]
 Nesta etapa a função reduce é executada para cada item da lista
gerada pelo Shuffle.
Reduce
 Entrada
• Apache, [1]
• BigData, [1]
• Datanode, [1]
• HDFS, [1]
• Hadoop, [1,1]
• JobTracker, [1]
• MapReduce, [1,1]
• Namenode, [1]
• TaskTracker, [1]
• and, [1,1]
 Saída
• Apache, 1
• BigData, 1
• Datanode, 1
• HDFS, 1
• Hadoop, 2
• JobTracker, 1
• MapReduce, 2
• Namenode, 1
• TaskTracker, 1
• and, 2
 Por fim, devemos configurar a execução do job, informando ao
Hadoop como tratar o input e output, as classes de tratamento do
map e reduce, os tipos de variáveis e etc.
Driver
 Inicialmente devemos copiar os arquivos para o HDFS.
 Criar uma pasta dentro do HDFS para receber os arquivos:
 hadoop fs –mkdir /user/input
 Copiar os arquivos
 hadoop fs –put file* /user/input
Copiando os arquivos para o HDFS
 Nota: Para uma lista com os possíveis comandos para
serem executados no FS, executar hadoop fs -help
 Neste exemplo eu estou usando o maven para o gerenciamento de
dependências e empacotamento do JAR.
 Configuração de dependências no pom.xml
 Basta rodar mvn package para gerar o arquivo JAR.
Empacotando o JAR
 Nota: Para mais informações sobre Apache Maven
http://maven.apache.org
 Para executar o job, basta rodar o seguinte comando:
 hadoop jar <Nome do Arquivo Jar> <Classe Main> <arg...>
Executando o Job
 Comando de exemplo:
hadoop jar HadoopPrimeirosPassos-1.0-
SNAPSHOT.jar WordCount /user/input /user/output
 Para verificar o resultado gerado pelo job, basta acessar o arquivo, na
pasta de saída:
 hadoop fs –cat /user/output/part-*
 Copiar o arquivo de resultado para o diretório local:
 hadoop fs –copyToLocal /user/output/part-* output.txt
Analisando o Resultado
 O hadoop possui algumas
interfaces web por padrão,
como o NameNode Web UI,
no qual é possível, através
do browser, consultar
informações referentes a
saúde do cluster HDFS.
http://localhost:50070
NameNode Web UI
JobTracker Web UI
 Assim como no
NameNode, podemos
ter informações sobre
o job a partir de uma
interface web, como
quais jobs estão
rodando, quantos
estão rodando, etc,
através do JobTracker
Web UI.
http://localhost:50030
TaskTracker Web UI
 Por fim, podemos ter
informações sobre
quais tasks estão
rodando ou não, além
de podermos consultar
os logs, através do
TaskTracker Web UI.
http://localhost:50060
 Hadoop Single Node Setup
http://hadoop.apache.org/docs/r1.1.2/single_node_setup.html
 Introdução ao Hadoop
http://www.aqueleblogdesoa.com.br/2013/05/introducao-ao-hadoop/
 Código fonte disponível em:
https://github.com/fimassuda/HadoopPrimeirosPassos
Referências
Obrigado!
Fillipe Massuda • Consultor SOA
fillipe.massuda@sensedia.com
@fimassuda
sensedia.com/br

Mais conteúdo relacionado

Mais procurados

DistribuiçõEs Linux
DistribuiçõEs LinuxDistribuiçõEs Linux
DistribuiçõEs Linux
pjdias
 
Desenho da rede
Desenho da redeDesenho da rede
Desenho da rede
H P
 
Aula 1 fundamentos de redes de computadores
Aula 1   fundamentos de redes de computadoresAula 1   fundamentos de redes de computadores
Aula 1 fundamentos de redes de computadores
wab030
 

Mais procurados (20)

Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Preparação e Limpeza de Dados
Preparação e Limpeza de DadosPreparação e Limpeza de Dados
Preparação e Limpeza de Dados
 
Construindo um projeto de pesquisa
Construindo um projeto de pesquisaConstruindo um projeto de pesquisa
Construindo um projeto de pesquisa
 
DistribuiçõEs Linux
DistribuiçõEs LinuxDistribuiçõEs Linux
DistribuiçõEs Linux
 
Desenho da rede
Desenho da redeDesenho da rede
Desenho da rede
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Python Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfPython Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdf
 
Sistema Operativo Open Source
Sistema Operativo Open SourceSistema Operativo Open Source
Sistema Operativo Open Source
 
Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
 
Arquitetura de Hardware
Arquitetura de HardwareArquitetura de Hardware
Arquitetura de Hardware
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas Operacionais
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
My sql apresentação
My sql apresentaçãoMy sql apresentação
My sql apresentação
 
Aula 5 - Redes de computadores
Aula 5 - Redes de computadoresAula 5 - Redes de computadores
Aula 5 - Redes de computadores
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
 
Coleta de dados
Coleta de dadosColeta de dados
Coleta de dados
 
Aula 1 fundamentos de redes de computadores
Aula 1   fundamentos de redes de computadoresAula 1   fundamentos de redes de computadores
Aula 1 fundamentos de redes de computadores
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 

Destaque

Open API Strategy, by Sensedia
Open API Strategy, by SensediaOpen API Strategy, by Sensedia
Open API Strategy, by Sensedia
Sensedia
 

Destaque (20)

Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
Hackathons & Innovation: como engajar desenvolvedores em torno da sua empresa...
 
REST - padrões e melhores práticas
REST - padrões e melhores práticasREST - padrões e melhores práticas
REST - padrões e melhores práticas
 
Open API Strategy, by Sensedia
Open API Strategy, by SensediaOpen API Strategy, by Sensedia
Open API Strategy, by Sensedia
 
Soa Next Steps/Passos de Adoção SOA
Soa Next Steps/Passos de Adoção SOASoa Next Steps/Passos de Adoção SOA
Soa Next Steps/Passos de Adoção SOA
 
Soa Em Tempos De Crise
Soa Em Tempos De CriseSoa Em Tempos De Crise
Soa Em Tempos De Crise
 
Governança de Serviços Automatizada na Prática
Governança de Serviços Automatizada na PráticaGovernança de Serviços Automatizada na Prática
Governança de Serviços Automatizada na Prática
 
SOA e APIs: O que muda e o que segue!
SOA e APIs: O que muda e o que segue!SOA e APIs: O que muda e o que segue!
SOA e APIs: O que muda e o que segue!
 
Construindo APIs Mobile
Construindo APIs MobileConstruindo APIs Mobile
Construindo APIs Mobile
 
Repositorio SOA
Repositorio SOARepositorio SOA
Repositorio SOA
 
Indicadores para APIs
Indicadores para APIsIndicadores para APIs
Indicadores para APIs
 
Construção de APIs para apps móveis
Construção de APIs para apps móveisConstrução de APIs para apps móveis
Construção de APIs para apps móveis
 
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
 
Treinamento hadoop - dia1
Treinamento hadoop - dia1Treinamento hadoop - dia1
Treinamento hadoop - dia1
 
Treinamento hadoop - dia4
Treinamento hadoop - dia4Treinamento hadoop - dia4
Treinamento hadoop - dia4
 
Case Sensedia Catho
Case Sensedia CathoCase Sensedia Catho
Case Sensedia Catho
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
 
Treinamento Hadoop - dia2
Treinamento Hadoop - dia2Treinamento Hadoop - dia2
Treinamento Hadoop - dia2
 
Mapreduce - Conceitos e Aplicações
Mapreduce - Conceitos e AplicaçõesMapreduce - Conceitos e Aplicações
Mapreduce - Conceitos e Aplicações
 
Case Sensedia B2W
Case Sensedia B2WCase Sensedia B2W
Case Sensedia B2W
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoopBigdata na pratica: Resolvendo problemas de performance com hadoop
Bigdata na pratica: Resolvendo problemas de performance com hadoop
 

Semelhante a Hadoop - Primeiros passos

Apache2+PHP5+PostgreSQL no Linux
Apache2+PHP5+PostgreSQL no LinuxApache2+PHP5+PostgreSQL no Linux
Apache2+PHP5+PostgreSQL no Linux
Victor Eloy
 
Hadoop java tdc 2014
Hadoop java   tdc 2014Hadoop java   tdc 2014
Hadoop java tdc 2014
Aldrin Leal
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
Francisco Santos
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
Fabiano Rodrigues
 

Semelhante a Hadoop - Primeiros passos (20)

Apache2+PHP5+PostgreSQL no Linux
Apache2+PHP5+PostgreSQL no LinuxApache2+PHP5+PostgreSQL no Linux
Apache2+PHP5+PostgreSQL no Linux
 
Arquitetura do Framework Apache Hadoop 2.6
Arquitetura do Framework Apache Hadoop 2.6Arquitetura do Framework Apache Hadoop 2.6
Arquitetura do Framework Apache Hadoop 2.6
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!!
 
Php01
Php01Php01
Php01
 
Seminário Hadoop
Seminário HadoopSeminário Hadoop
Seminário Hadoop
 
Hadoop java tdc 2014
Hadoop java   tdc 2014Hadoop java   tdc 2014
Hadoop java tdc 2014
 
Hadoop - primeiros passos
Hadoop - primeiros passosHadoop - primeiros passos
Hadoop - primeiros passos
 
Project HA
Project HAProject HA
Project HA
 
MigraçãO
MigraçãOMigraçãO
MigraçãO
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
php orientado_a_objetos
php orientado_a_objetosphp orientado_a_objetos
php orientado_a_objetos
 
40 php orientado a objetos
40 php orientado a objetos40 php orientado a objetos
40 php orientado a objetos
 
Apostila php orientado a objetos
Apostila php   orientado a objetosApostila php   orientado a objetos
Apostila php orientado a objetos
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
Instalando o WordPress local em qualquer sistema operacional - Anyssa Ferreir...
 
Aula 10 semana
Aula 10 semanaAula 10 semana
Aula 10 semana
 
Aula 10 semana
Aula 10 semanaAula 10 semana
Aula 10 semana
 

Mais de Sensedia

Mais de Sensedia (15)

Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Case Sensedia Simpress
Case Sensedia SimpressCase Sensedia Simpress
Case Sensedia Simpress
 
Case Sensedia Cielo
Case Sensedia CieloCase Sensedia Cielo
Case Sensedia Cielo
 
Case Cnova Page
Case Cnova PageCase Cnova Page
Case Cnova Page
 
Case Cnova-en
Case Cnova-enCase Cnova-en
Case Cnova-en
 
Case Simpress
Case SimpressCase Simpress
Case Simpress
 
Caso de Estudo CNova
Caso de Estudo CNovaCaso de Estudo CNova
Caso de Estudo CNova
 
Open Banking Platform - Intro
Open Banking Platform - IntroOpen Banking Platform - Intro
Open Banking Platform - Intro
 
Modelo Canônico: Vilão ou Mocinho?
Modelo Canônico: Vilão ou Mocinho?Modelo Canônico: Vilão ou Mocinho?
Modelo Canônico: Vilão ou Mocinho?
 
O poder das APIs
O poder das APIsO poder das APIs
O poder das APIs
 
Estratégia de APIs Abertas
Estratégia de APIs AbertasEstratégia de APIs Abertas
Estratégia de APIs Abertas
 
2o workshop governanca soa na pratica
2o workshop governanca soa na pratica2o workshop governanca soa na pratica
2o workshop governanca soa na pratica
 
Integração ensemble e governança repository
Integração ensemble e governança repositoryIntegração ensemble e governança repository
Integração ensemble e governança repository
 
Webinar: Maturidade e Roadmap SOA
Webinar: Maturidade e Roadmap SOAWebinar: Maturidade e Roadmap SOA
Webinar: Maturidade e Roadmap SOA
 
Governança SOA
Governança SOAGovernança SOA
Governança SOA
 

Último

Último (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Hadoop - Primeiros passos

  • 2. Fillipe Massuda  Consultor SOA na Sensedia  Engenheiro da computação pela FEI com MBA em Arquitetura de TI pela FIAP  Especialista em implementação de arquitetura de referência SOA nas plataformas IBM e Oracle  Apaixonado por TI e novas tecnologias  Guitarrista amador aposentado e viciado em videogamefillipe.massuda@sensedia.com @fimassuda
  • 3. Sobre a Sensedia  Empresa brasileira, sediada em Campinas com escritórios em São Paulo, Rio de Janeiro e EUA  Profundo conhecimento em:  SOA (Arquitetura Orientada a Serviços)  API (Application Programming Interfaces)  Posicionada como visionária no quadrante mágico em SOA do Gartner
  • 5. Objetivo Apresentar os primeiros passos para configurar e executar um job MapReduce em Single-Node Cluster no Hadoop.
  • 6.  Para esta demonstração, o ambiente foi o seguinte: • Ubuntu 13.04 • JDK 1.6 • Apache Hadoop 1.1.2 (Stable)  Foram utilizadas as seguintes ferramentas de apoio: • Apache Maven 3.0.5 Ambiente
  • 7.  O Hadoop possui 3 modos de operação:  Local (Standalone)  Pseudo-Distributed  Fully-Distributed Modos de Operação Neste apresentação será demonstrada a configuração e execução de um job no modo Pseudo-Distributed, também chamado Single-Node Cluster, no qual cada Hadoop daemon é rodado em um processo java separado.
  • 9. A configuração do SSH é necessária para o Hadoop gerenciar seus nós. Por rodar tudo em localhost, podemos configurar sem senha de conexão.  Executar os seguintes comandos para criação da chave para conexão ssh ao localhost $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_Keys  Testar a conexão ssh para adicionar a máquina na lista de known_hosts $ ssh localhost Passo 1: Configuração do SSH
  • 10. Configurar o arquivo de perfil para adicionar as variáveis de ambiente ao Path. Além disso, adicionar a pasta do Hadoop as variáveis (HADOOP_PREFIX) e verificar se JAVA_HOME também está configurada.  Configuração do .bashrc (Ubuntu) Passo 2: Configurando ~/.bashrc Lembrando que ao atualizar o .bashrc, o perfil deve ser carregado novamente, reiniciando o terminal ou executando  source ~/.bashrc  Nota: Em algumas versões a variável com a pasta do Hadoop pode ser configurada como HADOOP_HOME. Para esta versão, quando utilizado HADOOP_HOME, o aviso “$HADOOP_HOME is deprecated” era gerado, para evitar este aviso é necessário utilizar a variável HADOOP_PREFIX.
  • 11.  Configurar o JAVA_HOME no arquivo $HADOOP_PREFIX/conf/hadoop- env.sh  Criar uma pasta para que o Hadoop utilize como base para os arquivos temporários  ex: $HADOOP_PREFIX/tmp Passo 3: Configuração do Hadoop
  • 12. No arquivo core-site.xml configurar o nome padrão para o File System e a pasta base para os arquivos temporários:  $HADOOP_PREFIX/conf/core-site.xml Passo 4: Arquivos de configuração(1/3) <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/fillipe/dev/hadoop/tmp</value> </property> </configuration>  Nota: Para mais informações sobre as propriedades do arquivo core-site.xml, consultar o arquivo docs/core-default.html
  • 13. Alterar no arquivo de configuração do HDFS, para adicionar o número do replicações:  $HADOOP_PREFIX/conf/hdfs-site.xml Passo 4: Arquivos de configuração(2/3) <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>  Nota: Para mais informações de configuração no arquivo hdfs-site.xml, consultar o arquivo docs/hdfs- default.html
  • 14. Alterar no arquivo de configurações do MapReduce o host e a porta de execução do job tracker:  $HADOOP_PREFIX/conf/mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> Passo 4: Arquivos de configuração(3/3)  Nota: Para mais informações de configuração no arquivo mapred-site.xml, consultar o arquivo docs/mapred-default.html
  • 15. Formatar o hadoop filesystem para inicializar as pastas para o HDFS e o MapReduce:  $ hadoop namenode -format Passo 5: Formatando o HDFS FileSystem
  • 16.  Inicializar os processos:  start-all.sh  Finalizar os processos:  stop-all.sh Passo 6: Inicialização dos Processos  Nota: Estes comandos irão inicializar ou finalizar os DataNodes, NameNodes, JobTrackers e TaskTrackers.
  • 18.  O job MapReduce que será utilizado, terá o objetivo de contar a quantidade de vezes que cada palavras aparece no documento de entrada, gerando um resumo na pasta de saída.  Os arquivos para o teste serão: Exemplo: Contador de Palavras file1.txt Hadoop MapReduce BigData Apache file2.txt Hadoop HDFS Namenode and Datanode MapReduce JobTracker and TaskTracker  Nota: Este exemplo está disponível no pacote do hadoop.
  • 19.  A primeira etapa é desenvolver o Map que irá receber os arquivos de entrada, um por um, e retornará uma lista <chave, valor>. Map  Nota: Neste exemplo, a função map, retornará para o file1.txt como input, algo semelhante à:  file1.txt • Hadoop, 1 • MapReduce, 1 • BigData, 1 • Apache, 1
  • 20.  A etapa de shuffle será realizado pelas próprias bibliotecas de MapReduce. A saída do map é a entrada do Shuffle e a saída do Shuffle é a entrada do Reduce.  Nesta etapa, a lista é agrupada e ordenada por chave. Shuffle  Saída do Map  file1.txt • Hadoop, 1 • MapReduce, 1 • BigData, 1 • Apache, 1  file2.txt • Hadoop, 1 • HDFS, 1 • Namenode, 1 • and, 1 • Datanode, 1 • MapReduce, 1 • JogTracker, 1 • and, 1 • TaskTracker, 1  Saída do Shuffle • Apache, [1] • BigData, [1] • Datanode, [1] • HDFS, [1] • Hadoop, [1,1] • JobTracker, [1] • MapReduce, [1,1] • Namenode, [1] • TaskTracker, [1] • and, [1,1]
  • 21.  Nesta etapa a função reduce é executada para cada item da lista gerada pelo Shuffle. Reduce  Entrada • Apache, [1] • BigData, [1] • Datanode, [1] • HDFS, [1] • Hadoop, [1,1] • JobTracker, [1] • MapReduce, [1,1] • Namenode, [1] • TaskTracker, [1] • and, [1,1]  Saída • Apache, 1 • BigData, 1 • Datanode, 1 • HDFS, 1 • Hadoop, 2 • JobTracker, 1 • MapReduce, 2 • Namenode, 1 • TaskTracker, 1 • and, 2
  • 22.  Por fim, devemos configurar a execução do job, informando ao Hadoop como tratar o input e output, as classes de tratamento do map e reduce, os tipos de variáveis e etc. Driver
  • 23.  Inicialmente devemos copiar os arquivos para o HDFS.  Criar uma pasta dentro do HDFS para receber os arquivos:  hadoop fs –mkdir /user/input  Copiar os arquivos  hadoop fs –put file* /user/input Copiando os arquivos para o HDFS  Nota: Para uma lista com os possíveis comandos para serem executados no FS, executar hadoop fs -help
  • 24.  Neste exemplo eu estou usando o maven para o gerenciamento de dependências e empacotamento do JAR.  Configuração de dependências no pom.xml  Basta rodar mvn package para gerar o arquivo JAR. Empacotando o JAR  Nota: Para mais informações sobre Apache Maven http://maven.apache.org
  • 25.  Para executar o job, basta rodar o seguinte comando:  hadoop jar <Nome do Arquivo Jar> <Classe Main> <arg...> Executando o Job  Comando de exemplo: hadoop jar HadoopPrimeirosPassos-1.0- SNAPSHOT.jar WordCount /user/input /user/output
  • 26.  Para verificar o resultado gerado pelo job, basta acessar o arquivo, na pasta de saída:  hadoop fs –cat /user/output/part-*  Copiar o arquivo de resultado para o diretório local:  hadoop fs –copyToLocal /user/output/part-* output.txt Analisando o Resultado
  • 27.  O hadoop possui algumas interfaces web por padrão, como o NameNode Web UI, no qual é possível, através do browser, consultar informações referentes a saúde do cluster HDFS. http://localhost:50070 NameNode Web UI
  • 28. JobTracker Web UI  Assim como no NameNode, podemos ter informações sobre o job a partir de uma interface web, como quais jobs estão rodando, quantos estão rodando, etc, através do JobTracker Web UI. http://localhost:50030
  • 29. TaskTracker Web UI  Por fim, podemos ter informações sobre quais tasks estão rodando ou não, além de podermos consultar os logs, através do TaskTracker Web UI. http://localhost:50060
  • 30.  Hadoop Single Node Setup http://hadoop.apache.org/docs/r1.1.2/single_node_setup.html  Introdução ao Hadoop http://www.aqueleblogdesoa.com.br/2013/05/introducao-ao-hadoop/  Código fonte disponível em: https://github.com/fimassuda/HadoopPrimeirosPassos Referências
  • 31. Obrigado! Fillipe Massuda • Consultor SOA fillipe.massuda@sensedia.com @fimassuda sensedia.com/br