- Hadoop Tutorial
- Hadoop - Inicio
- Hadoop - Grandes Datos Generales
- Hadoop - Grandes Soluciones de Datos
- Hadoop: Introducción
- Hadoop - Configuración Entorno
- Hadoop - HDFS Descripción General
- Hadoop - HDFS Operaciones
- Hadoop - Referencia de Comandos
- Hadoop - MapReduce
- Hadoop - Streaming
- Hadoop - Varios Nodos de Clúster
Hadoop - Varios nodos de clúster
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
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 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
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