En este tutorial, aprenderemos a configurar un clúster Hadoop de varios nodos en Ubuntu 16.04. Un clúster de Hadoop que tiene más de 1 nodo de datos es un clúster de Hadoop de múltiples nodos, por lo tanto, el objetivo de este tutorial es poner en funcionamiento 2 nodos de datos.
1) Requisitos previos
- Ubuntu 16.04
- Hadoop-2.7.3
- Java 7
- SSH
Para este tutorial, tengo dos ubuntu 16.04 sistemas, los llamo maestro y esclavo sistema, se ejecutará un nodo de datos en cada sistema.
Dirección IP de Maestro ->

Dirección IP de Esclavo ->

Sobre el Maestro
Edite el archivo de hosts con la dirección IP maestra y esclava.
sudo gedit /etc/hosts
Edite el archivo como se muestra a continuación, puede eliminar otras líneas del archivo. Después de editar, guarde el archivo y ciérrelo.

En Esclavo
Edite el archivo de hosts con la dirección IP maestra y esclava.
sudo gedit /etc/hosts
Edite el archivo como se muestra a continuación, puede eliminar otras líneas del archivo. Después de editar, guarde el archivo y ciérrelo.

2) Instalación de Java
Antes de configurar Hadoop, debe tener Java instalado en sus sistemas. Instale JDK 7 abierto en ambas máquinas ubuntu usando los siguientes comandos.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
do apt-get install openjdk-7-jdk

Ejecute el siguiente comando para ver si Java se instaló en su sistema.
java -version

Por defecto, java se almacena en /usr/lib/jvm/ directorio.
ls /usr/lib/jvm

Establezca la ruta de Java en .bashrc archivo.
sudo gedit .bashrc
exportar JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
exportar RUTA=$RUTA:/usr/lib/jvm/java-7-openjdk-amd64/bin
Ejecute el siguiente comando para actualizar los cambios realizados en el archivo .bashrc.
source .bashrc
3) SSH
Hadoop requiere acceso SSH para administrar sus nodos, por lo tanto, debemos instalar ssh en los sistemas maestro y esclavo.
sudo apt-get install openssh-server</pre
![]()
Now, we have to generate an SSH key on master machine. When it asks you to enter a file name to save the key, do not give any name, just press enter.
ssh-keygen -t rsa -P ""

En segundo lugar, debe habilitar el acceso SSH a su máquina maestra con esta clave recién creada.
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Ahora pruebe la configuración de SSH conectándose a su máquina local.
ssh localhost

Ahora ejecute el siguiente comando para enviar la clave pública generada en el maestro al esclavo.
ssh-copy-id -i $HOME/.ssh/id_rsa.pub ubuntu@slave

Ahora que tanto el maestro como el esclavo tienen la clave pública, también puede conectar maestro a maestro y maestro a esclavo.
ssh master

ssh slave

Sobre el Maestro
Edite el archivo maestro como se muestra a continuación.
sudo gedit hadoop-2.7.3/etc/hadoop/masters

Edite el archivo de esclavos como se muestra a continuación.
sudo gedit hadoop-2.7.3/etc/hadoop/slaves

En Esclavo
Edite el archivo maestro como se muestra a continuación.
sudo gedit hadoop-2.7.3/etc/hadoop/masters

4) Instalación de Hadoop
Ahora que tenemos nuestra configuración de java y ssh lista. Estamos listos para instalar Hadoop en ambos sistemas. Utilice el siguiente enlace para descargar el paquete Hadoop. Estoy usando la última versión estable hadoop 2.7.3
http://hadoop.apache.org/releases.html

Sobre el Maestro
El siguiente comando descargará hadoop-2.7.3 archivo tar.
wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz

ls
Descomprimir el archivo
tar -xvf hadoop-2.7.3.tar.gz

ls

Confirme que hadoop se ha instalado en su sistema.
cd hadoop-2.7.3/
bin/hadoop-2.7.3/

Antes de establecer configuraciones para hadoop, estableceremos las siguientes variables de entorno en el archivo .bashrc.
cd
sudo gedit .bashrc
Variables de entorno de Hadoop
# Set Hadoop-related environment variables
export HADOOP_HOME=$HOME/hadoop-2.7.3
export HADOOP_CONF_DIR=$HOME/hadoop-2.7.3/etc/hadoop
export HADOOP_MAPRED_HOME=$HOME/hadoop-2.7.3
export HADOOP_COMMON_HOME=$HOME/hadoop-2.7.3
export HADOOP_HDFS_HOME=$HOME/hadoop-2.7.3
export YARN_HOME=$HOME/hadoop-2.7.3
# Add Hadoop bin/ directory to PATH
export PATH=$PATH:$HOME/hadoop-2.7.3/bin

Coloque las líneas debajo al final de su .bashrc archivo, guárdelo y ciérrelo.
source .bashrc
Configurar JAVA_HOME en ‘hadoop-env.sh’ . Este archivo especifica las variables de entorno que afectan al JDK utilizado por los demonios de Apache Hadoop 2.7.3 iniciados por los scripts de inicio de Hadoop:
cd hadoop-2.7.3/etc/hadoop/
sudo gedit hadoop-env.sh

exportar JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Configure la ruta de java como se muestra arriba, guarde el archivo y ciérrelo.
Ahora crearemos NameNode y Nodo de datos directorios.
cd
mkdir -p $HADOOP_HOME/hadoop2_data/hdfs/namenode
mkdir -p $HADOOP_HOME/hadoop2_data/hdfs/datanode

Hadoop tiene muchos archivos de configuración, que deben configurarse según los requisitos de su infraestructura de Hadoop. Configuremos los archivos de configuración de Hadoop uno por uno.
cd hadoop-2.7.3/etc/hadoop/
sudo gedit core-site.xml
Sitio principal.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>

sudo gedit hdfs-site.xml
sitio hdfs.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/ubuntu/hadoop-2.7.3/hadoop2_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/ubuntu/hadoop-2.7.3/hadoop2_data/hdfs/datanode</value>
</property>
</configuration>

sudo gedit yarn-site.xml
sitio-hilo.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

cp mapred-site.xml.template mapred-site.xml
sudo gedit mapred-site.xml
sitio-mapeado.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

Ahora siga los mismos pasos de instalación y configuración de Hadoop en la máquina esclava también. Una vez que haya instalado y configurado Hadoop en ambos sistemas, lo primero que debe hacer para iniciar su clúster de Hadoop es formatear el sistema de archivos hadoop , que se implementa sobre los sistemas de archivos locales de su clúster. Esto es necesario la primera vez que se instala Hadoop. No formatee un sistema de archivos Hadoop en ejecución, esto borrará todos sus datos HDFS.
Sobre el Maestro
cd
cd hadoop-2.7.3/bin
hadoop namenode -format

Ahora estamos listos para iniciar los demonios de hadoop, es decir, NameNode, DataNode, ResourceManager y Administrador de nodos en nuestro clúster Apache Hadoop.
cd ..
Ahora ejecute el siguiente comando para iniciar NameNode en la máquina maestra y DataNodes en la maestra y la esclava.
sbin/start-dfs.sh

El siguiente comando iniciará los demonios YARN, ResourceManager se ejecutará en maestro y NodeManagers se ejecutará en maestro y esclavo.
sbin/start-yarn.sh

Verifique que todos los servicios se hayan iniciado correctamente utilizando JPS (Java Process Monitoring Tool). tanto en la máquina maestra como en la esclava.
A continuación se muestran los demonios que se ejecutan en la máquina principal.
jps

En Esclavo
Verá que DataNode y NodeManager también se ejecutarán en la máquina esclava.
jps

Ahora abra su navegador Mozilla en la máquina principal y vaya a la siguiente URL
Compruebe el estado de NameNode:http://master:50070/dfshealth.html

Si ve '2' en nodos activos , eso significa 2 nodos de datos están en funcionamiento y ha configurado con éxito un culster Hadoop de múltiples nodos.

Conclusión
Puede agregar más nodos a su clúster Hadoop, todo lo que necesita hacer es agregar la nueva ip del nodo esclavo al archivo esclavo en el maestro, copiar la clave ssh al nuevo nodo esclavo, colocar la ip maestra en el archivo maestro en el nuevo nodo esclavo y luego reiniciar el servicios de hadoop. ¡¡Felicidades!! Ha configurado correctamente un clúster Hadoop de varios nodos.