Hadoop: clúster de varios nodos

Este capítulo explica la configuración del clúster Hadoop Multi-Node en un entorno distribuido.

Como no se puede demostrar todo el clúster, estamos explicando el entorno del clúster de Hadoop utilizando tres sistemas (un maestro y dos esclavos); a continuación se muestran sus direcciones IP.

  • Hadoop Master: 192.168.1.15 (hadoop-master)
  • Esclavo de Hadoop: 192.168.1.16 (hadoop-esclavo-1)
  • Esclavo de Hadoop: 192.168.1.17 (hadoop-esclavo-2)

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

Instalación de Java

Java es el principal requisito previo para Hadoop. En primer lugar, debe verificar la existencia de java en su sistema usando "java -version". La sintaxis del comando de la versión java se proporciona a continuación.

$ java -version

Si todo funciona bien, obtendrá 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 su sistema, siga los pasos dados para instalar java.

Paso 1

Descargue java (JDK <última versión> - X64.tar.gz) visitando el siguiente enlace www.oracle.com

Luego jdk-7u71-linux-x64.tar.gz se descargará en su sistema.

Paso 2

Generalmente, encontrará el archivo java descargado en la carpeta Descargas. Verifíquelo y extraiga eljdk-7u71-linux-x64.gz archivo usando 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 esté disponible para todos los usuarios, debe moverlo a la ubicación “/ usr / local /”. Abra la raíz y escriba los siguientes comandos.

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

Etapa 4

Para configurar PATH y JAVA_HOME variables, agregue los siguientes comandos a ~/.bashrc archivo.

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

Ahora verifique el java -versioncomando desde el terminal como se explicó anteriormente. Siga el proceso anterior e instale java en todos los nodos de su clúster.

Crear cuenta de usuario

Cree una cuenta de usuario del sistema en los sistemas maestro y esclavo para usar la instalación de Hadoop.

# useradd hadoop 
# passwd hadoop

Mapeo de los nodos

Tienes que editar hosts presentar en /etc/ carpeta en todos los nodos, especifique la dirección IP de cada sistema seguida de 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

Configurar el inicio de sesión basado en claves

Configure ssh en cada nodo de modo que puedan comunicarse entre sí sin que se le solicite una contraseña.

# su hadoop 
$ ssh-keygen -t rsa 
$ ssh-copy-id -i ~/.ssh/id_rsa.pub tutorialspoint@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

Instalación de 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/

Configurando Hadoop

Debe configurar el servidor Hadoop realizando los siguientes cambios como se indica a continuación.

core-site.xml

Abre el core-site.xml archivo y edítelo 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

Abre el hdfs-site.xml archivo y edítelo 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

Abre el mapred-site.xml archivo y edítelo como se muestra a continuación.

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

hadoop-env.sh

Abre el hadoop-env.sh archivo y edite JAVA_HOME, HADOOP_CONF_DIR y HADOOP_OPTS como se muestra a continuación.

Note - Configure JAVA_HOME según la configuración de su 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 Hadoop en servidores esclavos

Instale Hadoop en todos los servidores esclavos siguiendo los comandos dados.

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

Configuración de Hadoop en el servidor maestro

Abra el servidor maestro y configúrelo siguiendo los comandos dados.

# su hadoop 
$ cd /opt/hadoop/hadoop

Configurar el nodo maestro

$ vi etc/hadoop/masters

hadoop-master

Configuración del nodo esclavo

$ vi etc/hadoop/slaves

hadoop-slave-1 
hadoop-slave-2

Nodo de nombre de formato en Hadoop Master

# 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
************************************************************/

Inicio de los servicios de Hadoop

El siguiente comando es para iniciar todos los servicios de Hadoop en Hadoop-Master.

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

Agregar un nuevo nodo de datos en el clúster de Hadoop

A continuación se muestran los pasos que se deben seguir para agregar nuevos nodos a un clúster de Hadoop.

Redes

Agregue nuevos nodos a un clúster de Hadoop existente con alguna configuración de red adecuada. Suponga la siguiente configuración de red.

Para la configuración de un nuevo nodo:

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

Agregar usuario y acceso SSH

Agregar un usuario

En un nuevo nodo, agregue el usuario "hadoop" y establezca la contraseña del usuario de Hadoop en "hadoop123" o cualquier cosa que desee mediante los siguientes comandos.

useradd hadoop
passwd hadoop

Configuración de contraseña menos conectividad de maestro a esclavo nuevo.

Ejecute lo siguiente en el maestro

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 [email protected]:/home/hadoop/

Ejecute lo siguiente en los esclavos

Inicie sesión en hadoop. Si no es así, inicie sesión en el usuario de hadoop.

su hadoop ssh -X [email protected]

Copie el contenido de la clave pública en el archivo "$HOME/.ssh/authorized_keys" y luego cambie el permiso para el mismo ejecutando los siguientes comandos.

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

Verifique el inicio de sesión ssh desde la máquina maestra. Ahora compruebe si puede acceder al nuevo nodo sin una contraseña del maestro.

ssh [email protected] or hadoop@slave3

Establecer el nombre de host del nuevo nodo

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

On new slave3 machine

NETWORKING = yes 
HOSTNAME = slave3.in

Para que los cambios sean efectivos, reinicie la máquina o ejecute el comando hostname en una nueva máquina con el nombre de host correspondiente (reiniciar es una buena opción).

En la máquina del nodo esclavo3 -

nombre de host esclavo3.in

Actualizar /etc/hosts en todas las máquinas del clúster con las siguientes líneas:

192.168.1.102 slave3.in slave3

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

En una nueva máquina de nodo -

ping master.in

Inicie el DataNode en un nodo nuevo

Inicie el demonio de nodo de datos manualmente usando $HADOOP_HOME/bin/hadoop-daemon.sh script. Se pondrá en contacto automáticamente con el maestro (NameNode) y se unirá al clúster. También debemos agregar el nuevo nodo al archivo conf / slaves en el servidor maestro. Los comandos basados ​​en secuencias de comandos reconocerán el nuevo nodo.

Iniciar sesión en un nuevo nodo

su hadoop or ssh -X [email protected]

Inicie HDFS en un nodo esclavo recién agregado mediante el siguiente comando

./bin/hadoop-daemon.sh start datanode

Verifique la salida del comando jps en un nuevo nodo. Tiene el siguiente aspecto.

$ jps
7141 DataNode
10312 Jps

Eliminar un DataNode del clúster de Hadoop

Podemos eliminar un nodo de un clúster sobre la marcha, mientras se ejecuta, sin pérdida de datos. HDFS proporciona una función de desmantelamiento, que garantiza que la eliminación de un nodo se realice de forma segura. Para usarlo, siga los pasos que se indican a continuación:

Paso 1: iniciar sesión en master

Inicie sesión con el usuario de la máquina principal donde está instalado Hadoop.

$ su hadoop

Paso 2: cambiar la configuración del clúster

Se debe configurar un archivo de exclusión antes de iniciar el clúster. Agregue una clave llamada dfs.hosts.exclude a nuestro$HADOOP_HOME/etc/hadoop/hdfs-site.xmlarchivo. El valor asociado con esta clave proporciona la ruta completa a un archivo en el sistema de archivos local de NameNode que contiene una lista de máquinas a las que no se les permite conectarse a HDFS.

Por ejemplo, agregue estas líneas a etc/hadoop/hdfs-site.xml archivo.

<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 que se retirarán

Cada máquina que se desmantelará debe agregarse al archivo identificado por hdfs_exclude.txt, un nombre de dominio por línea. Esto evitará que se conecten al NameNode. Contenido del"/home/hadoop/hadoop-1.2.1/hdfs_exclude.txt" El archivo se muestra a continuación, si desea eliminar DataNode2.

slave2.in

Paso 4: forzar la recarga de la configuración

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

$ $HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes

Esto obligará al NameNode a volver a leer su configuración, incluido el archivo de "exclusiones" recién actualizado. Desmantelará los nodos durante un período de tiempo, lo que permitirá que los bloques de cada nodo se repliquen en las máquinas que están programadas para permanecer activas.

En slave2.in, verifique la salida del comando jps. Después de un tiempo, verá que el proceso DataNode se apaga automáticamente.

Paso 5: apagar los nodos

Una vez que se ha completado el proceso de desmantelamiento, el hardware desmantelado se puede apagar de forma segura para su mantenimiento. Ejecute el comando de informe a dfsadmin para verificar el estado del retiro. El siguiente comando describirá el estado del nodo de retiro y los nodos conectados al clúster.

$ $HADOOP_HOME/bin/hadoop dfsadmin -report

Paso 6: vuelva a editar el archivo de exclusión

Una vez que las máquinas se han dado de baja, se pueden eliminar del archivo 'excluidas'. Corriendo"$HADOOP_HOME/bin/hadoop dfsadmin -refreshNodes"de nuevo leerá el archivo de exclusiones en el NameNode; permitir que los DataNodes se vuelvan a unir al clúster después de que se haya completado el mantenimiento, o se necesite capacidad adicional en el clúster nuevamente, etc.

Special Note- Si se sigue el proceso anterior y el proceso del rastreador de tareas aún se está ejecutando en el nodo, debe cerrarse. Una forma es desconectar la máquina como hicimos en los pasos anteriores. El Maestro reconocerá el proceso automáticamente y lo declarará muerto. No es necesario seguir el mismo proceso para eliminar el rastreador de tareas porque NO es muy importante en comparación con el DataNode. DataNode contiene los datos que desea eliminar de forma segura sin pérdida de datos.

El rastreador de tareas se puede ejecutar / apagar sobre la marcha mediante el siguiente comando en cualquier momento.

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