Hadoop 2.8.0 – Debian 8.8 – IBM Power – parte III

Nesta sequência de artigos, de I a IV, vamos construir um cluster com 3 nós para rodar o Hadoop 2.8.0. Iremos usar uma máquina IBM POWER5 9117-570. Este ambiente é apenas um laboratório para estudos. As máquinas virtuais serão configuradas conforme abaixo:

  • lindev01 – NodeName
  • lindev02 – DataNode1
  • lindev03 – DataNode2
  • lindev04 – ClientNode

Agora que já temos o Debian e o Hadoop 2.8.0 instalados, vamos iniciar a configuração do Hadoop.

O Hadoop faz uso de arquivos XML para a sua configuração. Estes arquivos ficam localizados na pasta $HADOOP_HOME/etc/hadoop. Vamos fazer a configuração mínima destes arquivos apenas para deixar o cluster funcionando.

Editar o arquivo $HADOOP_HOME/etc/hadoop/hadoop-env.sh e configurar a variável $JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-powerpc

Editar o arquivo $HADOOP_HOME/etc/hadoop/core-site.xml e configurar conforme abaixo

<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
   <property>
      <name>fs.defaultFS</name>
      <value>hdfs://lindev01:8020/</value>
   </property>
   <property>
      <name>io.file.buffer.size</name>
      <value>131072</value>
   </property>
</configuration>

Editar o arquivo $HADOOP_HOME/etc/hadoop/hdfs-site.xml e configurar conforme abaixo

<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/srv/hadoop_work/hdfs/namenode</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/srv/hadoop_work/hdfs/datanode</value>
   </property>
   <property>
      <name>dfs.namenode.checkpoint.dir</name>
      <value>file:/srv/hadoop_work/hdfs/namesecondary</value>
   </property>
   <property>
      <name>dfs.replication</name>
      <value>2</value>
   </property>
   <property>
      <name>dfs.block.size</name>
      <value>134217728</value>
   </property>
</configuration>

Primeiro faremos uma copia do template: cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

$ cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template \
$HADOOP_HOME/etc/hadoop/mapred-site.xml

Editar o arquivo $HADOOP_HOME/etc/hadoop/mapred-site.xml e configurar conforme abaixo

<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
   <property>
      <name>mapreduce.jobhistory.address</name>
      <value>lindev01:10020</value>
   </property>
   <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>lindev01:19888</value>
   </property>
   <property>
      <name>yarn.app.mapreduce.am.staging-dir</name>
      <value>/user/app</value>
   </property>
   <property>
      <name>mapred.child.java.opts</name>
      <value>-Djava.security.egd=file:/dev/../dev/urandom</value>
   </property>
</configuration>

Editar o arquivo $HADOOP_HOME/etc/hadoop/yarn-site.xml e configurar conforme abaixo

<?xml version="1.0"?>
<!-- yarn-site.xml -->
<configuration>
   <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>lindev01</value>
   </property>
   <property>
      <name>yarn.resourcemanager.bind-host</name>
      <value>lindev01</value>
   </property>
   <property>
      <name>yarn.nodemanager.bind-host</name>
      <value>lindev01</value>
   </property>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
   <property>
      <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
      <value>org.apache.hadoop.mapred.ShuffleHandler</value>
   </property>
   <property>
      <name>yarn.log-aggregation-enable</name>
      <value>true</value>
   </property>
   <property>
      <name>yarn.nodemanager.local-dirs</name>
      <value>file:/srv/hadoop_work/yarn/local</value>
   </property>
   <property>
      <name>yarn.nodemanager.log-dirs</name>
      <value>file:/srv/hadoop_work/yarn/log</value>
   </property>
   <property>
      <name>yarn.nodemanager.remote-app-log-dir</name>
      <value>hdfs://lindev01:8020/var/log/hadoop-yarn/apps</value>
   </property>
</configuration>

Agora vamos informar ao Hadoop o hostname do NodeName secundário. Em nosso cluster, o NodeName primário e o NodeName secundário é a mesma máquina lin001. Isto é configurado editando o arquivo $HADOOP_HOME/etc/hadoop/masters. Deixe apenas o hostname do lin001 (NodeName) conforme abaixo

$ cat $HADOOP_HOME/etc/hadoop/masters
lindev01

O último passo antes de ativar o Hadoop, é formatar o Namenode. O Namenode é responsável pelo HDFS – o sistema de arquivos distribuído.

$ hadoop namenode -format

O processo de formatação exibe uma quantidade muito grande de informações, mas a formatação foi OK se você ver a mensagem “Storage directory /srv/hadoop_work/hdfs/namenode has been successfully formatted.”

hadoop@lindev01:/$ hadoop namenode -format
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

17/05/14 13:19:15 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   user = hadoop
STARTUP_MSG:   host = lindev01
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.8.0
STARTUP_MSG:   classpath = /srv/hadoop-2.8.0/etc/hadoop:/srv/hadoop/share/hadoop/common/lib/jetty-sslengine-6.1.26.jar:/srv/hadoop/share/hadoop/common/lib/asm-3.2.jar:/srv/hadoop/share/hadoop/common/lib/apacheds-i18n-2.0.0-M15.jar:/srv/hadoop/share/hadoop/common/lib/slf4j-api-1.7.10.jar:/srv/hadoop/share/hadoop/common/lib/xmlenc-0.52.jar:/srv/hadoop/share/hadoop/common/lib/commons-math3-3.1.1.jar:/srv/hadoop/share/hadoop/common/lib/commons-beanutils-core-1.8.0.jar:/srv/hadoop/share/hadoop/common/lib/commons-lang-2.6.jar:/srv/hadoop/share/hadoop/common/li

[]
...
...
...
...
[]

17/05/14 13:19:30 INFO common.Storage: Storage directory /srv/hadoop_work/hdfs/namenode has been successfully formatted.

[]
...
...
...
...
[]

17/05/14 13:19:30 INFO namenode.FSImageFormatProtobuf: Saving image file /srv/hadoop_work/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
17/05/14 13:19:33 INFO namenode.FSImageFormatProtobuf: Image file /srv/hadoop_work/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 323 bytes saved in 2 seconds.
17/05/14 13:19:33 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
17/05/14 13:19:33 INFO util.ExitUtil: Exiting with status 0
17/05/14 13:19:33 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at lindev01
************************************************************/
hadoop@lindev01:/$

No próximo artigo, iremos configurar os Data Nodes

 

Douglas Ribas de Mattos
E-mail: douglasmattos0@gmail.com
LinkedIn: https://www.linkedin.com/in/douglasmattos0/
Blog: http://www.douglasmattos.com
Twitter: @douglasmattos0

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s