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 [email protected]
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
$ 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 [email protected]
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