Cómo instalar Apache Hadoop en Ubuntu 22.04

Apache Hadoop es un marco de código abierto para procesar y almacenar big data. En las industrias actuales, Hadoop se ha convertido en el marco estándar para los grandes datos. Hadoop está diseñado para ejecutarse en sistemas distribuidos con cientos o incluso miles de ordenadores agrupados o servidores dedicados. Teniendo esto en cuenta, Hadoop puede manejar grandes conjuntos de datos de gran volumen y complejidad, tanto para datos estructurados como no estructurados.

Toda implementación de Hadoop contiene los siguientes componentes:

  1. Hadoop Común: Las utilidades comunes que dan soporte a los demás módulos de Hadoop.
  2. Sistema de Archivos Distribuidos Hadoop (HDFS): Un sistema de archivos distribuido que proporciona acceso de alto rendimiento a los datos de las aplicaciones.
  3. Hadoop YARN: Un marco para la programación de trabajos y la gestión de recursos de clúster.
  4. Hadoop MapReduce: Un sistema basado en YARN para el procesamiento paralelo de grandes conjuntos de datos.

En este tutorial, instalaremos la última versión de Apache Hadoop en un servidor Ubuntu 22.04. Hadoop se instala en un servidor de un solo nodo y creamos un Modo Pseudo-Distribuido de despliegue de Hadoop.

Requisitos previos

Para completar esta guía, necesitarás los siguientes requisitos:

  • Un servidor Ubuntu 22.04 – Este ejemplo utiliza un servidor Ubuntu con nombre de host servidor ‘hadoop’ y dirección IP ‘192.168.5.100’.
  • Un usuario no root con privilegios de administrador sudo/root.

Instalación del OpenJDK de Java

Hadoop es un gran proyecto de la Apache Software Foundation, que está escrito principalmente en Java. En el momento de escribir esto, la última versión de hadoop es la v3.3,4, que es totalmente compatible con Java v11.

El OpenJDK 11 de Java está disponible por defecto en el repositorio de Ubuntu, y lo instalarás mediante APT.

Para empezar, ejecuta el siguiente comando apt para actualizar y refrescar las listas/repositorios de paquetes en tu sistema Ubuntu.

sudo apt update

Ahora instala el OpenJDK 11 de Java mediante el siguiente comando apt. En el repositorio de Ubuntu 22.04, el paquete ‘default-jdk’ se refiere al Java OpenJDK v11.

sudo apt install default-jdk

Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar. Y comenzará la instalación de Java OpenJDK.

instalar java

Una vez instalado Java, ejecuta el siguiente comando para verificar la versión de Java. Deberías tener el Java OpenJDK 11 instalado en tu sistema Ubuntu.

java -version

comprobar java

Ahora que el Java OpebnJDK está instalado, a continuación configurarás un nuevo usuario con autenticación SSH sin contraseña que se utilizará para ejecutar los procesos y servicios de hadoop.

Configurar el usuario y la autenticación SSH sin contraseña

Apache Hadoop requiere que se ejecute el servicio SSH en el sistema. Éste será utilizado por los scripts hadoop para gestionar el demonio hadoop remoto en el servidor remoto. En este paso, crearás un nuevo usuario que se utilizará para ejecutar los procesos y servicios de hadoop y, a continuación, configurarás la autenticación SSH sin contraseña.

En caso de que no tengas SSH instalado en tu sistema, ejecuta el siguiente comando apt para instalar SSH. El paquete«pdsh» es un cliente shell remoto multihilo que te permite ejecutar comandos en varios hosts en modo paralelo.

sudo apt install openssh-server openssh-client pdsh

Ahora ejecuta el siguiente comando para crear un nuevo usuario «hadoop» y establece la contraseña para el usuario «hadoop».

sudo useradd -m -s /bin/bash hadoop
sudo passwd hadoop

Introduce la nueva contraseña para el usuario ‘hadoop‘ y repite la contraseña.

A continuación, añade el usuario «hadoop» al grupo«sudo» mediante el comando usermod que aparece a continuación. Esto permite al usuario «hadoop» ejecutar el comando «sudo».

sudo usermod -aG sudo hadoop

Ahora que el usuario «hadoop» está creado, inicia sesión con el usuario«hadoop» mediante el siguiente comando.

su - hadoop

Una vez iniciada la sesión, el símbolo del sistema será el siguiente«hadoop@nombrehost..».

configurar usuario

A continuación, ejecuta el siguiente comando para generar la clave pública y privada SSH. Cuando se te pida que establezcas la contraseña de la clave, pulsa ENTER para omitirla.

ssh-keygen -t rsa

La clave SSH se genera ahora en el directorio ~/.ssh. El archivo id_rsa .pub es la clave pública SSH y el archivo ‘id_rsa ‘ es la clave privada.

generar clave ssh

Puedes verificar la clave SSH generada mediante el siguiente comando.

ls ~/.ssh/

A continuación, ejecuta el siguiente comando para copiar la clave pública SSH ‘id_rsa.pub’ en el archivo ‘authorized_keys‘ y cambia el permiso por defecto a 600.

En ssh, el archivo ‘authorized_keys» es donde almacenaste la clave pública ssh, que pueden ser varias claves públicas. Cualquiera que tenga la clave pública almacenada en el archivo ‘authorized_keys‘ y disponga de la clave privada correcta podrá conectarse al servidor como usuario‘hadoop‘ sin necesidad de contraseña.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

configurar ssh sin contraseña

Una vez finalizada la configuración SSH sin contraseña, puedes verificarlo conectándote a la máquina local mediante el comando ssh que aparece a continuación.

ssh localhost

Introduce sí para confirmar y añade la huella digital SSH y estarás conectado al servidor sin autenticación de contraseña.

conectar ssh sin contraseña

Ahora que ya está creado el usuario‘hadoop‘ y configurada la autenticación SSH sin contraseña, a continuación vas a realizar la instalación de hadoop descargando el paquete binario hadoop.

Descarga de Hadoop

Tras crear un nuevo usuario y configurar la autenticación SSH sin contraseña, ahora puedes descargar el paquete binario de Apache Hadoop y configurar el directorio de instalación para él. En este ejemplo, descargarás hadoop v3.3.4 y el directorio de instalación de destino será el directorio‘/usr/local/hadoop‘.

Ejecuta el siguiente comando wget para descargar el paquete binario de Apache Hadoop al directorio de trabajo actual. Deberías obtener el archivo‘hadoop-3.3.4.tar.gz‘ en tu directorio de trabajo actual.

wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

A continuación, extrae el paquete de Apache Hadoop ‘hadoop-3.3 .4.tar.g z’ mediante el siguiente comando tar. A continuación, mueve el directorio extraído a‘/usr/local/hadoop’.

tar -xvzf hadoop-3.3.4.tar.gz
sudo mv hadoop-3.3.4 /usr/local/hadoop

Por último, cambia la propiedad del directorio de instalación de hadoop ‘/usr/local/hadoop ‘ al usuario‘hadoop‘ y al grupo‘hadoop‘.

sudo chown -R hadoop:hadoop /usr/local/hadoop

descargar hadoop

En este paso, has descargado el paquete binario de Apache Hadoop y configurado el directorio de instalación de hadoop. Con esto en mente, ya puedes empezar a configurar la instalación de hadoop.

Configurar las variables de entorno de Hadoop

Abre el archivo de configuración‘~/.bashrc‘ mediante el comando editor nano que aparece a continuación.

nano ~/.bashrc

Añade las siguientes líneas al archivo. Asegúrate de colocar las siguientes líneas al final del mismo.

# Hadoop environment variables
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para aplicar los nuevos cambios dentro del archivo‘~/.bashrc’.

source ~/.bashrc

Una vez ejecutado el comando, se aplicarán las nuevas variables de entorno. Puedes verificarlo comprobando cada variable de entorno mediante el comando siguiente. Y deberías obtener la salida de cada variable de entorno.

echo $JAVA_HOME
echo $HADOOP_HOME
echo $HADOOP_OPTS

A continuación, también configurarás la variable de entorno JAVA_HOME en el script ‘hadoop-env.sh‘.

Abre el archivo ‘hadoop-env.sh’ utilizando el siguiente comando del editor nano. El archivo ‘hadoop-env.sh’ está disponible en el directorio‘$HADOOP_HOME‘, que hace referencia al directorio de instalación de hadoop ‘/usr/local/hadoop‘.

nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh

Descomenta la línea de entorno JAVA_HOME y cambia el valor al directorio de instalación de Java OpenJDK‘/usr/lib/jvm/java-11-openjdk-amd64‘.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

Guarda el archivo y sal del editor cuando hayas terminado.

configurar java home

Con las variables de entorno configuradas, ejecuta el siguiente comando para verificar la versión de hadoop en tu sistema. Deberías ver Apache Hadoop 3.3.4 instalado en tu sistema.

hadoop version

versión de hadoop

Llegados a este punto, ya estás preparado para instalar y configurar el clúster hadoop, que puede desplegarse en varios modos.

Configuración del clúster Apache Hadoop: Modo Pseudo-Distribuido

En hadoop, puedes crear un clúster en tres modos diferentes:

  1. ModoLocal (Standalone) – instalación por defecto de hadoop, que se ejecuta como un único proceso Java y en modo no distribuido. Con él, puedes depurar fácilmente el proceso hadoop.
  2. ModoPseudo-Distribuido – Te permite ejecutar un cluster hadoop con modo distribuido incluso con un único nodo/servidor. En este modo, los procesos hadoop se ejecutarán en procesos Java separados.
  3. ModoTotalmente Distribuido – gran despliegue de hadoop con múltiples o incluso miles de nodos/servidores. Si quieres ejecutar hadoop en producción, debes utilizar hadoop en modo totalmente distribuido.

En este ejemplo, configurarás un clúster Apache Hadoop con modo Pseudo-Distribuido en un único servidor Ubuntu. Para ello, realizarás cambios en algunas de las configuraciones de hadoop:

  • core-site.xml – Se utilizará para definir NameNode para el clúster hadoop.
  • hdfs-site.xml – Esta configuración se utilizará para definir el NodoDatos del clúster hadoop.
  • mapred-site. xml – La configuración de MapReduce para el clúster hadoop.
  • yarn-site.xml – Configuración de ResourceManager y NodeManager para el clúster hadoop.

Configurar NameNode y DataNode

En primer lugar, configurarás el NameNode y el DataNode para el clúster hadoop.

Abre el archivo‘$HADOOP_HOME/etc/hadoop/core-site.xml‘ utilizando el siguiente editor nano.

sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml

Añade las siguientes líneas al archivo. Asegúrate de cambiar la dirección IP del NameNode, o puedes sustituirla por ‘0.0.0.0’ para que el NameNode se ejecute en todas las interfaces y direcciones IP.

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.5.100:9000</value>
    </property>
</configuration>

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para crear nuevos directorios que se utilizarán para el DataNode en el cluster hadoop. A continuación, cambia la propiedad de los directorios del DataNode al usuario ‘hadoop‘.

sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}
sudo chown -R hadoop:hadoop /home/hadoop/hdfs

Después, abre el archivo ‘$HADOOP_HOME/etc/hadoop/hdfs-site.x ml’ utilizando el siguiente comando del editor nano.

sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml

Añade la siguiente configuración al archivo. En este ejemplo, vas a configurar el cluster hadoop en un único nodo, por lo que debes cambiar el valor de ‘dfs.replication’ a ‘1’. Además, debes especificar el directorio que se utilizará para el Nodo de Datos.

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

<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hdfs/namenode</value>
</property>

<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hdfs/datanode</value>
</property>

</configuration>

Guarda el archivo y sal del editor cuando hayas terminado.

Con el NodoNombre y el NodoDatos configurados, ejecuta el siguiente comando para formatear el sistema de archivos hadoop.

hdfs namenode -format

Recibirás una salida como ésta:

formato namednode

A continuación, inicia el NameNode y el DataNode mediante el siguiente comando. El NameNode se ejecutará en la dirección IP del servidor que hayas configurado en el archivo ‘core-site.xml’.

start-dfs.sh

Verás una salida como ésta:

inicio namesode datanode

Ahora que el NameNode y el DataNode se están ejecutando, verificarás ambos procesos a través de la interfaz web.

La interfaz web hadoop NameNode se ejecuta en el puerto‘9870‘. Por tanto, abre tu navegador web y visita la dirección IP del servidor seguida del puerto 9870 (es decir: http://192.168.5.100:9870/).

Ahora deberías obtener la página como la siguiente captura de pantalla – El NameNode está actualmente activo.

namenode está en marcha

Ahora haz clic en el menú «Datanodes» y deberías obtener el DataNode actual que está activo en el cluster hadoop. La siguiente captura de pantalla confirma que el Nodo de Datos se está ejecutando en el puerto‘9864‘ del cluster hadoop.

lista datanode

Haz clic en la‘Dirección Http‘ del DataNode y deberías obtener una nueva página con información detallada sobre el DataNode. La siguiente captura de pantalla confirma que el DataNode se está ejecutando con el directorio de volumen‘/home/hadoop/hdfs/datanode‘.

estado del datanode

Con el NameNode y el DataNode en ejecución, a continuación configurarás y ejecutarás MapReduce en el gestor Yarn (otro gestor de recursos y otro gestor de nodos).

Gestor Yarn

Para ejecutar un MapReduce en Yarn en modo pseudodistribuido, tienes que hacer algunos cambios en los archivos de configuración.

Abre el archivo ‘$HADOOP_HOME/etc/hadoop/mapred-site.xml’ utilizando el siguiente comando del editor nano.

sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

Añade las siguientes líneas al archivo. Asegúrate de cambiar mapreduce.framework.name por ‘yarn’.

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, abre la configuración de Yarn‘$HADOOP_HOME/etc/hadoop/yarn-site.xml’ utilizando el siguiente comando del editor nanoe.

sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml

Cambia la configuración por defecto con los siguientes ajustes.

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando para iniciar los demonios Yarn. Y deberías ver que tanto ResourceManager como NodeManager se están iniciando.

start-yarn.sh

iniciar gestor de hilo

El ResourceManager debería estar ejecutándose en el puerto por defecto 8088. Vuelve a tu navegador web y visita la dirección IP del servidor seguida del puerto ‘8088’ del ResourceManager (es decir: http://192.168.5.100:8088/).

Deberías ver la interfaz web del Gestor de Recursos hadoop. Desde aquí, puedes monitorizar todos los procesos en ejecución dentro del clúster hadoop.

Gestor YARN hadoop

Haz clic en el menú Nodos y deberías obtener el nodo que se está ejecutando actualmente en el clúster Hadoop.

lista nodosb

Ahora el clúster Hadoop se está ejecutando en modo pseudodistribuido. Esto significa que cada proceso Hadoop se está ejecutando como un único proceso en un único nodo del servidor Ubuntu 22.04, que incluye el NameNode, DataNode, MapReduce y Yarn.

Conclusión

En esta guía, has instalado Apache Hadoop en un servidor Ubuntu 22.04 de una sola máquina. Instalaste Hadoop con el modo Pseudo-Distribuido activado, lo que significa que cada componente de Hadoop se ejecuta como un único proceso Java en el sistema. En esta guía también has aprendido a configurar Java, a configurar las variables de entorno del sistema y a configurar la autenticación SSH sin contraseña mediante clave pública-privada SSH.

Este tipo de despliegue de Hadoop, el modo Pseudo-Distribuido, se recomienda sólo para pruebas. Si quieres un sistema distribuido que pueda manejar conjuntos de datos medianos o grandes, puedes desplegar Hadoop en el modo Agrupado, que requiere más sistemas informáticos y proporciona alta disponibilidad para tu aplicación.

También te podría gustar...