Búsqueda de sitios web

Instale Hadoop Multinode Cluster usando CDH4 en RHEL/CentOS 6.5


Hadoop es un marco de programación de código abierto desarrollado por Apache para procesar big data. Utiliza HDFS (Hadoop Distributed File System) para almacenar los datos en todos los nodos de datos del clúster de forma distributiva y un modelo mapreduce para procesar los datos.

Namenode (NN) es un demonio maestro que controla HDFS y Jobtracker (JT ) es el demonio maestro para el motor mapreduce.

Requisitos

En este tutorial estoy usando dos máquinas virtuales CentOS 6.3, 'master' y 'node', a saber. (maestro y nodo son mis nombres de host). La IP 'maestra' es 172.21.17.175 y la IP del nodo es '172.21.17.188'. Las siguientes instrucciones también funcionan en las versiones RHEL/CentOS 6.x.

En maestro
[root@master ~]# hostname

master
[root@master ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
En el nodo
[root@node ~]# hostname

node
[root@node ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

Primero asegúrese de que todos los hosts del clúster estén en el archivo '/etc/hosts' (en cada nodo), si no tiene DNS configurado.

En maestro
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
En el nodo
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Instalación del clúster multinodo de Hadoop en CentOS

Usamos el repositorio oficial CDH para instalar CDH4 en todos los hosts (Master y Node) de un clúster.

Paso 1: Descargar Instalar el repositorio CDH

Vaya a la página oficial de descarga de CDH y obtenga la versión CDH4 (es decir, 4.6) o puede usar el siguiente comando wget para descargar el repositorio e instalarlo.

En RHEL/CentOS de 32 bits
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/i386/cloudera-cdh-4-0.i386.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.i386.rpm
En RHEL/CentOS de 64 bits
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm

Antes de instalar Hadoop Multinode Cluster, agregue la clave GPG pública de Cloudera a su repositorio ejecutando uno de los siguientes comandos de acuerdo con la arquitectura de su sistema.

## on 32-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-cloudera
## on 64-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

Paso 2: Configurar JobTracker y NameNode

A continuación, ejecute el siguiente comando para instalar y configurar JobTracker y NameNode en el servidor maestro.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-0.20-mapreduce-jobtracker
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-namenode

Paso 3: Configurar el nodo de nombre secundario

Nuevamente, ejecute los siguientes comandos en el servidor maestro para configurar el nodo de nombre secundario.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-hdfs-secondarynam

Paso 4: Configurar Tasktracker y Datanode

A continuación, configure tasktracker y datanode en todos los hosts del clúster (Nodo), excepto en los hosts JobTracker, NameNode y NameNode secundario (o en espera) (en el nodo en este caso).

[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

Paso 5: configurar el cliente Hadoop

Puede instalar el cliente Hadoop en una máquina separada (en este caso lo instalé en datanode, puede instalarlo en cualquier máquina).

[root@node ~]# yum install hadoop-client

Paso 6: implementar HDFS en nodos

Ahora, si hemos terminado con los pasos anteriores, avancemos para implementar hdfs (que se realizará en todos los nodos).

Copie la configuración predeterminada al directorio /etc/hadoop (en cada nodo del clúster).

[root@master ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
[root@node ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

Utilice el comando alternativas para configurar su directorio personalizado, de la siguiente manera (en cada nodo del clúster).

[root@master ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@master ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
[root@node ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@node ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

Paso 7: Personalizar los archivos de configuración

Ahora abra el archivo 'core-site.xml' y actualice "fs.defaultFS" en cada nodo del clúster.

[root@master conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>

Próxima actualización “dfs.permissions.superusergroup” en hdfs-site.xml en cada nodo del clúster.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>

Nota: asegúrese de que la configuración anterior esté presente en todos los nodos (hágalo en un nodo y ejecute scp para copiar en reposo de los nodos).

Paso 8: Configurar directorios de almacenamiento local

Actualice “dfs.name.dir o dfs.namenode.name.dir” en ‘hdfs-site.xml’ en NameNode (en Master y Node). Cambie el valor como se resalta.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.namenode.name.dir</name>
 <value>file:///data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.datanode.data.dir</name>
 <value>file:///data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>

Paso 9: crear directorios y administrar permisos

Ejecute los siguientes comandos para crear una estructura de directorios y administrar los permisos de usuario en las máquinas Namenode (Master) y Datanode (Node).

[root@master]# mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
[root@master]# chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
[root@node]#  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
[root@node]#  chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn

Formatee el Namenode (en Master) emitiendo el siguiente comando.

[root@master conf]# sudo -u hdfs hdfs namenode -format

Paso 10: Configurar el NameNode secundario

Agregue la siguiente propiedad al archivo hdfs-site.xml y reemplace el valor como se muestra en Master.

<property>
  <name>dfs.namenode.http-address</name>
  <value>172.21.17.175:50070</value>
  <description>
    The address and port on which the NameNode UI will listen.
  </description>
</property>

Nota: en nuestro caso, el valor debe ser la dirección IP de la máquina virtual maestra.

Ahora implementemos MRv1 (Map-reduce versión 1). Abra el archivo 'mapred-site.xml' siguiendo los valores como se muestra.

[root@master conf]# cp hdfs-site.xml mapred-site.xml
[root@master conf]# vi mapred-site.xml
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>mapred.job.tracker</name>
 <value>master:8021</value>
</property>
</configuration>

A continuación, copie el archivo 'mapred-site.xml' a la máquina del nodo usando el siguiente comando scp.

[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

Ahora configure los directorios de almacenamiento local para que los utilicen MRv1 Daemons. Vuelva a abrir el archivo 'mapred-site.xml' y realice los cambios como se muestra a continuación para cada TaskTracker.

<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

Después de especificar estos directorios en el archivo 'mapred-site.xml', debe crear los directorios y asignarles los permisos de archivo correctos en cada nodo de su clúster.

mkdir -p /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
chown -R mapred:hadoop /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local

Paso 10: inicie HDFS

Ahora ejecute el siguiente comando para iniciar HDFS en cada nodo del clúster.

[root@master conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
[root@node conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

Paso 11: Crear directorios HDFS /tmp y MapReduce /var

Es necesario crear /tmp con los permisos adecuados exactamente como se menciona a continuación.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp
[root@master conf]# sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
[root@master conf]# sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

Ahora verifique la estructura del archivo HDFS.

[root@node conf]# sudo -u hdfs hadoop fs -ls -R /

drwxrwxrwt   - hdfs hadoop          	0 2014-05-29 09:58 /tmp
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var
drwxr-xr-x  	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib
drwxr-xr-x   	- hdfs hadoop         	0 2014-05-29 09:59 /var/lib/hadoop-hdfs
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred
drwxrwxrwt   - mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging

Después de iniciar HDFS y crear '/tmp', pero antes de iniciar JobTracker, cree el directorio HDFS especificado por el parámetro 'mapred.system.dir' (por defecto $ {hadoop.tmp .dir}/mapred/system y cambie el propietario a mapred.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
[root@master conf]# sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

Paso 12: Inicie MapReduce

Para iniciar MapReduce: inicie los servicios TT y JT.

En cada sistema TaskTracker
[root@node conf]# service hadoop-0.20-mapreduce-tasktracker start

Starting Tasktracker:                               [  OK  ]
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-node.out
En el sistema JobTracker
[root@master conf]# service hadoop-0.20-mapreduce-jobtracker start

Starting Jobtracker:                                [  OK  ]

starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-master.out

A continuación, cree un directorio de inicio para cada usuario de hadoop. se recomienda hacer esto en NameNode; Por ejemplo.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir  /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>

Nota: donde es el nombre de usuario de Linux de cada usuario.

Alternativamente, puede crear el directorio de inicio de la siguiente manera.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER

Paso 13: Abra JT, NN UI desde el navegador

Abra su navegador y escriba la URL como http://ip_address_of_namenode:50070 para acceder a Namenode.

Abra otra pestaña en su navegador y escriba la URL como http://ip_address_of_jobtracker:50030 para acceder a JobTracker.

Este procedimiento se ha probado con éxito en RHEL/CentOS 5.X/6.X. Por favor comente a continuación si tiene algún problema con la instalación, lo ayudaré con las soluciones.