Introducción
Hadoop es un marco de software gratuito, de código abierto y basado en Java que se utiliza para almacenar y procesar grandes conjuntos de datos en grupos de máquinas. Utiliza HDFS para almacenar sus datos y procesarlos usando MapReduce.
Hadoop es un ecosistema de herramientas de Big Data que se utiliza principalmente para la minería de datos y el aprendizaje automático.
Apache Hadoop 3.3 viene con mejoras significativas y muchas correcciones de errores con respecto a versiones anteriores. Tiene cuatro componentes principales como Hadoop Common, HDFS, YARN y MapReduce.
Este tutorial le dirá cómo instalar y configurar Apache Hadoop en Ubuntu 20.04 LTS Focal Fossa.
Si desea instalar Hadoop en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instalar Java
Hadoop está escrito en Java y solo es compatible con la versión 8 de Java. La versión 3.3 de Hadoop y la última también son compatibles con el tiempo de ejecución de Java 11 y Java 8.
Puede instalar OpenJDK 8 desde los repositorios de apt predeterminados:
sudo apt update
sudo apt install openjdk-8-jdk
Una vez instalado, verifique la versión instalada de Java con el siguiente comando:
java -version
Debería obtener el siguiente resultado:
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
Crea un usuario de Hadoop
Es una buena idea crear un usuario separado para ejecutar Hadoop por razones de seguridad.
Ejecute el siguiente comando para crear un nuevo usuario con el nombre hadoop:
sudo adduser hadoop
Proporcione y confirme la nueva contraseña como se muestra a continuación:
Adding user `hadoop'...
Adding new group `hadoop' (1000)...
Adding new user `hadoop' (1000) with group `hadoop'...
The home directory `/home/hadoop' already exists. Not copying from `/etc/skel'.
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for hadoop
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
Configurar la autenticación basada en claves SSH
A continuación, deberá configurar la autenticación SSH sin contraseña para el sistema local.
Primero, inicie sesión con el usuario de hadoop
con el comando su:
su - hadoop
Luego, ejecute el siguiente comando para generar pares de claves públicas y privadas:
ssh-keygen -t rsa
Se le pedirá que ingrese el nombre del archivo. Simplemente presione Enter para completar el proceso:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:pfEaF19DFMxXeS1M3mWYPwcn2/GRb6Drv14mVNuPKow hadoop@TEST-SERVER-1
The key's randomart image is:
+---[RSA 3072]----+
| *=+O|
| o@B*|
|. o.+@O|
| = o...+X|
| S o...o+|
| +....|
|.o. o +|
| E o.. + |
|..o+. |
+----[SHA256]-----+
A continuación, agregue las claves públicas generadas por id_rsa.pub
a authorized_keys
y establezca el permiso apropiado:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 640 ~/.ssh/authorized_keys
A continuación, verifique la autenticación SSH sin contraseña con el siguiente comando:
ssh localhost
Se le pedirá que autentique los hosts agregando claves RSA a los hosts conocidos. Escriba yes
y presione Invio
para autenticar el host local:
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:CoGsEfZLQ4ELMBhVTnCASQ4DmNdmjcke/D35mmFvF9o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-52-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Instalar Hadoop
Primero, asegúrese de haber iniciado sesión con el hadoop
con el siguiente comando:
su - hadoop
A continuación, descargue la última versión de Hadoop usando el comando wget:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
Una vez descargado, extraiga el archivo descargado con el comando tar:
tar -xvzf hadoop-3.3.0.tar.gz
A continuación, cambie el nombre del directorio extraído a hadoop:
mv hadoop-3.3.0 hadoop
A continuación, deberá configurar las variables de entorno de Hadoop y Java en su sistema.
Abra el ~/.bashrc
en su editor de texto favorito, aquí usamos nano:
nano ~/.bashrc
Agrega las siguientes líneas:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/export HADOOP_HOME=/home/hadoop/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"
Guarde y cierre el archivo. Luego, active las variables de entorno con el siguiente comando:
source ~/.bashrc
Luego, abra el archivo de variables de entorno de Hadoop:
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Descomente y modifique la JAVA_HOME
acuerdo con la ruta de instalación de Java:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/
Guarde y cierre el archivo cuando termine.
Configurar Hadoop
Primero, deberá crear los namenode
y datanode
dentro del directorio de inicio de Hadoop:
Ejecute el siguiente comando para crear ambos directorios:
mkdir -p ~/hadoopdata/hdfs/namenode
mkdir -p ~/hadoopdata/hdfs/datanode
A continuación, edite el core-site.xml
y actualice con el nombre de host de su sistema:
nano $HADOOP_HOME/etc/hadoop/core-site.xml
Edite el siguiente archivo de acuerdo con el nombre de host del sistema:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://TUO_DOMINIO.com:9000</value>
</property>
</configuration>
Guarde y cierre el archivo. Luego, edite el archivo hdfs-site.xml
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
Cambie la ruta del directorio NameNode
y DataNode
como se muestra a continuación:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
Guarde y cierre el archivo. Luego, edite el archivo mapred-site.xml
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
Realice los siguientes cambios:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Guarde y cierre el archivo. Luego, edite el arn-site.xml
:
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
Realice los siguientes cambios:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Guarde y cierre el archivo cuando termine.
Iniciar Hadoop Cluster
Antes de iniciar el clúster de Hadoop. Deberá formatear el Namenode como el usuario de hadoop.
Ejecute el siguiente comando para formatear el hadoop de Namenode:
hdfs namenode -format
Debería obtener el siguiente resultado:
...
2020-11-23 22:59:13,290 INFO namenode.FSImage: Allocated new BlockPoolId: BP-650323875-127.0.1.1-1606168753269
2020-11-23 22:59:13,320 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/hdfs/namenode has been successfully formatted.
2020-11-23 22:59:13,403 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
2020-11-23 22:59:13,595 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds.
2020-11-23 22:59:13,605 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2020-11-23 22:59:13,610 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
2020-11-23 22:59:13,611 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at TUO_HOSTNAME/127.0.1.1
************************************************************/
Después de formatear el Namenode
, ejecute el siguiente comando para iniciar el clúster hadoop:
start-dfs.sh
HDFS
correctamente, debería obtener el siguiente resultado:
Starting namenodes on [TUO_DOMINIO.com]
Starting datanodes
Starting secondary namenodes [TUO_DOMINIO.com]
TUO_DOMINIO.com: Warning: Permanently added 'TUO_DOMINIO.com' (ECDSA) to the list of known hosts.
A continuación, inicie el YARN
como se muestra a continuación:
start-yarn.sh
Debería obtener el siguiente resultado:
Starting resourcemanager
Starting nodemanagers
Ahora puede verificar el estado de todos los servicios de Hadoop
usando el comando jps
jps
Debería ver todos los servicios ejecutándose en la siguiente salida:
2129 NodeManager
1827 SecondaryNameNode
2452 Jps
1701 DataNode
2024 ResourceManager
Configurar el firewall
Hadoop ahora se está ejecutando y escuchando en los puertos 9870
y 8088
.
Si tiene el firewall UFW habilitado, deberá permitir que estos puertos pasen a través del firewall.
Ejecute los siguientes comandos como root
para permitir conexiones de Hadoop a través del firewall:
ufw allow 9870/tcp
ufw allow 8088/tcp
Inicie sesión en Hadoop Namenode and Resource Manager
Para acceder al Namenode, abra su navegador web y visite la URL http://tuo_dominio.com:9870
. Debería ver la pantalla de resumen del servicio.
Para acceder a Resource Manage, abra su navegador web y visite la URL http://tuo_dominio.com:8088
. Debería ver la pantalla de administración de Hadoop.
Compruebe el clúster de Hadoop
En este punto, el clúster de Hadoop está instalado y configurado. A continuación, crearemos algunos directorios en el sistema de archivos HDFS para probar Hadoop.
Asegúrese de haber iniciado sesión con el usuario de hadoop
su - hadoop
Creemos un directorio en el sistema de archivos HDFS usando el siguiente comando:
hdfs dfs -mkdir /test1
hdfs dfs -mkdir /logs
Luego, ejecute el siguiente comando para listar el directorio de arriba:
hdfs dfs -ls /
Debería obtener el siguiente resultado:
Found 3 items
drwxr-xr-x - hadoop supergroup 0 2020-11-23 23:46 /logs
drwxr-xr-x - hadoop supergroup 0 2020-11-23 23:41 /test1
Además, coloque algunos archivos en el sistema de archivos de hadoop. Por ejemplo, agregue los archivos de registro de la máquina host al sistema de archivos hadoop.
hdfs dfs -put /var/log/* /logs/
También puede consultar los archivos y el directorio anteriores en la interfaz web de Hadoop Namenode.
Vaya a la interfaz web de Namenode, haga clic en Utilities->Browse the file system
. Debería ver los directorios que creó anteriormente.
Detener el clúster de Hadoop
También puede detener el servicio Hadoop Namenode and Yarn en cualquier momento ejecutando los scripts stop-dfs.sh y stop-yarn.sh como usuario de Hadoop.
Para detener el servicio Hadoop Namenode, ejecute el siguiente comando como usuario hadoop:
stop-dfs.sh
Para detener el servicio de Hadoop Resource Manager, ejecute el siguiente comando:
stop-yarn.sh
Conclusión
Este tutorial le explicó paso a paso cómo instalar y configurar Hadoop en el sistema Linux Ubuntu 20.04 LTS Focal Fossa.