Concrete Logo
Hamburger button

Hadoop, parte II

  • Blog
  • 19 de Dezembro de 2012
Share

 
Este post faz parte da série sobre BigData, MapReduce e Hadoop cujos primeiros posts foram os seguintes:

 
Hadoop humor from Google Internal Memes

Hadoop humor from Google Internal Memes

 

Rodando o primeiro exemplo

    No diretório hadoop-1.0.x onde foi descompactado o tar.gz (ou em /usr/local/Cellar/hadoop/1.0.4/libexec que é onde o brew instala o hadoop), há um arquivo hadoop-examples-1.0.4.jar com vários exemplos.

     

    Crie um diretório (chame de input para meu exemplo funcionar) e copie para lá o arquivo pg4300-UlyssesJoyce.txt.

      Antes de executar, não se esqueça que precisa setar o JAVA_HOME para apontar para a sua instalação do Java.

      No meu caso aqui no OSX Lion, ficou assim (é a saída de /usr/libexec/java_home)
      [sourcecode language=”bash” autolinks=”false”]
      export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home[/sourcecode]

    Então execute:
    [sourcecode language=”bash” autolinks=”false”]
    bin/hadoop jar hadoop-examples-1.0.4.jar wordcount input output[/sourcecode]

    O diretório output será criado e lá será armazenado o resultado.

    Aqui fiz assim:

      Os resultados estão no arquivo part-r-00000 no diretório output. Você pode comparar com que obteve rodando o exemplo mostrado em MapReduce – parte II. Sugestão: use head e tail.

 

Rodando o mesmo exemplo no sistema de arquivos do Hadoop

    O que fiz antes foi rodar um programa Java normal no nosso file system. Agora vou rodar de novo mas usando o file system do Hadoop.

    Antes de usar um novo file system, é normal formatá-lo.

    Mas antes disto é preciso editar alguns arquivos de configuração do Hadoop no diretório conf:

      conf/core-site.xml

        Caso tenha instalado o Hadoop via homebrew, o core-site.xml deve ficar assim:

        [sourcecode language=”xml” autolinks=”false”]
        <?xml version="1.0"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

        <!– Put site-specific property overrides in this file. –>

        <configuration>

        <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/Cellar/hadoop/hdfs/tmp</value>
        <description>A base for other temporary directories.</description>
        </property>
        <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
        </property>

        </configuration>
        [/sourcecode]

        Para ficar de acordo com este arquivo, criei os 2 diretórios:
        [sourcecode language=”bash” autolinks=”false”] mkdir /usr/local/Cellar/hadoop/hdfs
        mkdir /usr/local/Cellar/hadoop/hdfs/tmp[/sourcecode]

         
        Se instalou o Hadoop apenas descompactando o tar.gz, deve trocar /usr/local/Cellar/hadoop/ acima do brew pelo diretório onde está a raiz do Hadoop, isto é, onde foi descompactado o tar.gz)

       
      conf/hdfs-site.xml

        Abaixo está uma sugestão para configurar o arquivo hdfs-site.xml com replication = 1, isto é, com um único nó que nos servirá para os testes.

        [sourcecode language=”xml” autolinks=”false”]
        <?xml version="1.0"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

        <!– Put site-specific property overrides in this file. –>

        <configuration>

        <property>
        <name>dfs.replication</name>
        <value>1</value>
        </property>

        </configuration>

        [/sourcecode]

       
      conf/mapred-site.xml

        A configuração abaixo serve para definir a porta de conexão do daemon Job tracker (que explicaremos mais adiante).

        [sourcecode language=”xml” autolinks=”false”]
        <?xml version="1.0"?>
        <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
        <!– Put site-specific property overrides in this file. –>
        <configuration>
        <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9010</value>
        </property>
        </configuration>
        [/sourcecode]

 
Agora você já está com quase tudo pronto para rodar o mesmo exemplo no sistema de arquivos do Hadoop.

Porque quase?

Porque seus arquivos de dados ainda não estão no HDFS (que ainda nem foi formatado).

Antes de formatar o file system do Hadoop e copiar para lá o diretório input com o livro do James Joyce, terei que explicar um pouco sobre a arquitetura do Hadoop.

Assim mais uma vez farei uma interrupção para continuar em um próximo post.