Hadoop - Varios nodos de clúster


Advertisements

Este capítulo se explica la configuración del clúster de varios nodos Hadoop en un entorno distribuido.

Como todo el conjunto no puede ser demostrado, estamos explicando la Hadoop cluster medio ambiente utilizando tres sistemas (un maestro y dos esclavos); a continuación, se presentan sus direcciones IP.

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Hadoop Slave: 192.168.1.16 (hadoop-slave-1)
  • Hadoop Slave: 192.168.1.17 (hadoop-slave-2)

Siga los pasos que se indican a continuación para que Hadoop clúster de varios nodos.

Instalación de Java

Java es el principal requisito previo para Hadoop. En primer lugar, debe comprobar la existencia de java en el sistema utilizando "java -version". La sintaxis de java versión comando es dada a continuación.

$ java -version

Si todo funciona bien, le dará el siguiente resultado.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Si java no está instalado en el sistema, a continuación, siga estos pasos para instalar java.

Paso 1

Descargar Java (JDK - X64.tar.gz) visitando el siguiente enlace http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

A continuación, jdk-7u71-linux-x64.tar.gz se descargará en su sistema.

Paso 2

En general, encontrará el archivo descargado java en carpeta de descargas. Verificar y extraer eljdk-7u71-linux-x64.gzusando los siguientes comandos.

$ cd Downloads/
$ ls
jdk-7u71-Linux-x64.gz
$ tar zxf jdk-7u71-Linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-Linux-x64.gz

Paso 3

Para que java disponible para todos los usuarios, tiene que mover a la ubicación “/usr/local/”. Abra el root, y escriba los siguientes comandos.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Paso 4

Para la configuración de ruta de acceso y JAVA_HOME variables, agregar los siguientes comandos en el archivo~/.bashrc.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=PATH:$JAVA_HOME/bin

Ahora compruebe que el java -version comando desde el terminal, como se explicó anteriormente. Siga el proceso anterior e instalar java en todos los nodos del clúster.

Creando una cuenta de usuario

Crear una cuenta de usuario del sistema en tanto el maestro como el esclavo sistemas Hadoop para utilizar la instalación.

# useradd hadoop 
# passwd hadoop

La asignación de nodos

Tiene que editar archivo hosts en /etc/ carpeta en todos los nodos, se especifica la dirección IP de cada sistema seguido por sus nombres de host.

# vi /etc/hosts
enter the following lines in the /etc/hosts file.
192.168.1.109 hadoop-master 
192.168.1.145 hadoop-slave-1 
192.168.56.1 hadoop-slave-2

Configuración basada en una clave de acceso

Configuración ssh en cada uno de los nodos, que pueden comunicarse entre sí sin pedir contraseña.

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub howcodex@hadoop-master 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp1@hadoop-slave-1 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop_tp2@hadoop-slave-2 
$ chmod 0600 ~/.ssh/authorized_keys 
$ exit

Instalar Hadoop

En el servidor maestro, descargue e instale Hadoop usando los siguientes comandos.

# mkdir /opt/hadoop 
# cd /opt/hadoop/ 
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.1/hadoop-1.2.0.tar.gz 
# tar -xzf hadoop-1.2.0.tar.gz 
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop 
# cd /opt/hadoop/hadoop/

Configuración Hadoop

Usted tendrá que configurar Hadoop server, haciendo los siguientes cambios como se indica a continuación.

core-site.xml

Abrir elcore-site.xmlarchivo y editar, como se muestra a continuación.

<configuration>
   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://hadoop-master:9000/</value> 
   </property> 
   <property> 
      <name>dfs.permissions</name> 
      <value>false</value> 
   </property> 
</configuration>

hdfs-site.xml

Abra lahdfs-site.xmly editar como se muestra a continuación.

<configuration>
   <property> 
      <name>dfs.data.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name/data</value> 
      <final>true</final> 
   </property> 

   <property> 
      <name>dfs.name.dir</name> 
      <value>/opt/hadoop/hadoop/dfs/name</value> 
      <final>true</final> 
   </property> 

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

mapred-site.xml

mapred-site.xmlarchivo xml y editar tal y como se muestra a continuación.

<configuration>
   <property> 
      <name>mapred.job.tracker</name> 
      <value>hadoop-master:9001</value> 
   </property> 
</configuration>

hadoop-env.sh

Abra elhadoop-env.sharchivo y editar JAVA_HOME, HADOOP_CONF_DIR y HADOOP_OPTS como se muestra a continuación.

Nota: Ajuste el JAVA_HOME como por la configuración del sistema.

export JAVA_HOME=/opt/jdk1.7.0_17 export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf

Instalación de servidores esclavos Hadoop

Instalar Hadoop en todos los servidores esclavos siguiendo el recibir órdenes.

# su hadoop 
$ cd /opt/hadoop 
$ scp -r hadoop hadoop-slave-1:/opt/hadoop 
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

Hadoop Configuración en el servidor maestro

Abra el servidor maestro y configurar siguiendo el recibir órdenes.

# su hadoop 
$ cd /opt/hadoop/hadoop

Configurar Nodo maestro

$ vi etc/hadoop/masters
hadoop-master

Configurar Nodo secundario

$ vi etc/hadoop/slaves
hadoop-slave-1 
hadoop-slave-2

Nombre de formato nodo maestro sobre Hadoop

# su hadoop 
$ cd /opt/hadoop/hadoop 
$ bin/hadoop namenode –format
11/10/14 10:58:07 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = hadoop-master/192.168.1.109 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 1.2.0 
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473; compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013 
STARTUP_MSG: java = 1.7.0_71 ************************************************************/ 11/10/14 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap editlog=/opt/hadoop/hadoop/dfs/name/current/edits
………………………………………………….
………………………………………………….
…………………………………………………. 11/10/14 10:58:08 INFO common.Storage: Storage directory /opt/hadoop/hadoop/dfs/name has been successfully formatted. 11/10/14 10:58:08 INFO namenode.NameNode: 
SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15 ************************************************************/

Hadoop Inicio Servicios

El comando siguiente es para iniciar todas las Hadoop servicios en el Hadoop-Master.

$ cd $HADOOP_HOME/sbin
$ start-all.sh

Agregar un nuevo DataNode en el Hadoop Cluster

A continuación, se presentan los pasos a seguir para agregar nuevos nodos a un clúster Hadoop.

Redes

Agregar nuevos nodos a un clúster Hadoop existente con las correspondientes de la red. Asumir la siguiente configuración de red.

Para la nueva configuración de nodo:

IP address : 192.168.1.103 
netmask : 255.255.255.0
hostname : slave3.in

Agregar el usuario y acceso SSH

Agregar un usuario

En un nodo nuevo, agregue "hadoop" usuario y contraseña de Hadoop usuario "hadoop123" o cualquier cosa que quiera con los siguientes comandos.

useradd hadoop
passwd hadoop

Contraseña de configuración menor conectividad desde el maestro al nuevo esclavo.

Ejecute el siguiente en el master

mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh 
ssh-keygen -t rsa -P '' -f $HOME/.ssh/id_rsa 
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys
Copy the public key to new slave node in hadoop user $HOME directory
scp $HOME/.ssh/id_rsa.pub hadoop@192.168.1.103:/home/hadoop/

Ejecute el siguiente de los esclavos

Iniciar sesión en hadoop. Si no es así, inicie sesión en hadoop usuario.

su hadoop ssh -X hadoop@192.168.1.103

Copiar el contenido de clave pública en un archivo "$HOME/.ssh/authorized_keys" y, a continuación, cambiar el permiso del mismo ejecutando el siguiente comando.

cd $HOME
mkdir -p $HOME/.ssh 
chmod 700 $HOME/.ssh
cat id_rsa.pub >>$HOME/.ssh/authorized_keys 
chmod 644 $HOME/.ssh/authorized_keys

Verificar ssh login en la máquina maestra. Ahora compruebe si puede ssh al nuevo nodo sin una contraseña del maestro.

ssh hadoop@192.168.1.103 or hadoop@slave3

Configurar nombre de host del nodo nuevo

Puede configurar nombre de host en el archivo/etc/sysconfig/network

On new slave3 machine
NETWORKING=yes 
HOSTNAME=slave3.in

Para que los cambios surtan efecto, reinicie el equipo o comando hostname a un nuevo equipo con el respectivo nombre de reiniciar es una buena opción).

El esclavo3 equipo de nodo:

hostname slave3.in

Actualizar el archivo /etc/hostsen todas las máquinas del clúster con las líneas siguientes:

192.168.1.102 slave3.in slave3

Ahora, intente hacer ping a la máquina con nombres de host para comprobar si se está resolviendo en IP o no.

En el nuevo equipo de nodo:

ping master.in

Iniciar el DataNode en Nuevo Nodo

Iniciar el demonio datanode manualmente mediante $HADOOP_HOME/bin/hadoop-daemon.sh script. Y automáticamente se contacto con el maestro (NameNode) y unirse al clúster. También debemos añadir el nuevo nodo al archivo conf/esclavos en el servidor maestro. La secuencia de comandos se reconocerá el nuevo nodo.

Iniciar sesión en nuevo nodo

su hadoop or ssh -X hadoop@192.168.1.103

Inicio HDFS en un nodo secundario recién agregado mediante el siguiente comando

./bin/hadoop-daemon.sh start datanode

La salida de jps comando en un nodo nuevo. Se ve de la siguiente manera.

$ jps
7141 DataNode
10312 Jps

Extracción de un DataNode del Hadoop Cluster

Podemos eliminar un nodo de un clúster sobre la marcha, mientras se está ejecutando, sin ninguna pérdida de datos. HDFS característica proporciona una clausura, el cual asegura que eliminar un nodo se lleva a cabo en forma segura. Para utilizar esta función, siga los pasos que aparecen a continuación:

Paso 1: Iniciar sesión en master

Iniciar sesión en master usuario de la máquina donde Hadoop está instalado.

$ su hadoop

Paso 2: Cambiar configuración de clúster

El excluir archivo debe estar configurado antes de iniciar el clúster. Agregar una clave con nombre dfs.hosts.excluir a nuestro $HADOOP_HOME/etc/hadoop/hdfs-site.xml. El valor asociado a la clave ofrece la ruta de acceso completa a un archivo en el NameNode local del sistema de archivos que contiene una lista de las máquinas que no están autorizados a conectarse a HDFS.

Por ejemplo, agregar las siguientes líneas al etc/hadoop/hdfs sitio.xml.

<property> 
   <name>dfs.hosts.exclude</name> 
   <value>/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt</value> 
   <description>DFS exclude</description> 
</property>

Paso 3: Determinar los hosts para retirar

Cada una de las máquinas que se van a desmantelar se debe agregar en el archivo identificado por el hdfs_exclude.txt, uno de los nombres de dominio por línea. De esta manera se impedirá que conecta a la NameNode. El contenido del"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt"archivo se muestra a continuación, si desea eliminar DataNode2.

slave2.in

Paso 4: Fuerza a cargar configuración

Ejecute el comando"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"sin las comillas.

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Esto hará que el NameNode volver a leer la configuración, incluyendo el recientemente actualizado "excluye" archivo. Se retira los nodos en un período de tiempo, lo que permite tiempo para cada uno de los nodos de bloques que se replican en las máquinas que están programadas para permanecer activo.

Enslave2.in, verificar la jps salida de comando. Después de algún tiempo, se verá el proceso DataNode se desconecta automáticamente.

Paso 5: Apagar los nodos

Después de que el proceso de retirada se ha completado, el hardware puede ser retirada con seguridad cerrado por mantenimiento. Ejecute el comando de informe a dfsadmin para comprobar el estado de retirada. El siguiente comando se describen el estado de los nodos y retirar los nodos conectados al panel de instrumentos.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Paso 6: Editar excluye archivo de nuevo

Una vez que las máquinas han sido clausuradas, se pueden retirar de la "excluye" archivo. Ejecución de"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes" nuevo a leer la excluye de nuevo en el NameNode; lo que permite que el DataNodes volver a unirse a un grupo después de la conservación se ha terminado, o se necesita más capacidad en el clúster nuevo, etc.

Nota especial: Si el proceso descrito anteriormente es seguido y el tasktracker proceso todavía está en funcionamiento en el nodo, es necesario que se cierre. Una manera de hacerlo es para desconectar la máquina como lo hicimos en los pasos anteriores. El Maestro se reconocerá el proceso automáticamente y se declaran como muertos. No hay necesidad de seguir el mismo proceso para la extracción de la tasktracker porque no es tan crucial como en comparación con el DataNode. DataNode contiene los datos que desea quitar de forma segura sin ninguna pérdida de datos.

La tasktracker se puede ejecutar/shutdown de la mosca con el siguiente comando en cualquier momento.

$ $HADOOP_HOME/bin/hadoop-daemon.sh stop tasktracker $HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker
Advertisements