Hoy en día, cuando una empresa o cualquier operación que involucre ordenadores crece hasta el punto de necesitar más de uno para gestionarla, recurrimos casi de inmediato a varios ordenadores conectados en red para distribuir la carga de trabajo de forma más eficiente. Esto se ha vuelto tan habitual que prácticamente todas las operaciones en áreas como la ciencia de datos se realizan mediante estos equipos en red. Sin duda, ejecutar tareas informáticas exigentes es más eficiente de esta manera, pero también es enormemente complejo: hay que configurar cada ordenador por separado y luego gestionar toda la red mientras procesa las tareas. Aquí es donde entran en juego programas como Hadoop.
- ¿Qué es Apache Hadoop?
- Casos de uso de Hadoop
- Visión general de la arquitectura de Hadoop
- Instalar Hadoop en Ubuntu 20.04 - Guía paso a paso
- Requisitos previos
- Paso 1: Crear un usuario sin privilegios de root para Hadoop
- Paso 2: Configurar claves SSH
- Paso 3: Descargar e instalar Hadoop en Ubuntu
- Paso 4: Configurar el entorno de Hadoop
- Paso 5: Editar los archivos de configuración
- Paso 6: Formatear HDFS
- Paso 7: Iniciar los servicios de Hadoop
- Paso 8: Verificar la instalación
- Paso 9: Acceder a las interfaces web
- Paso 10: Ejecutar un ejemplo de MapReduce
- Paso 11: Definir las variables de entorno
- Conclusión
- Preguntas frecuentes
Hadoop es un conjunto de herramientas y programas publicado por Apache que permite conectar en red varios equipos con mucha más eficiencia y facilidad. En este artículo repaso qué es Hadoop, analizo sus casos de uso, exploro sus ventajas e inconvenientes y ofrezco una visión general de su arquitectura avanzada, antes de pasar a una guía paso a paso sobre cómo instalar Hadoop en Ubuntu 20.04 para cerrar este tutorial de Hadoop 2024.
¿Qué es Apache Hadoop?
Hadoop, un conjunto de herramientas desarrollado por Apache, lleva más de 15 años transformando la configuración y el uso de redes. Los usuarios pueden sacar partido de la eficiencia en el uso de recursos de Hadoop, aprovechando su capacidad de cómputo actual para tareas exigentes sin necesidad de costosas actualizaciones. El conjunto consta de cuatro módulos: HDFS, YARN, MapReduce y Hadoop Common, cada uno diseñado para casos de uso específicos.
El punto fuerte de Hadoop es su capacidad para reunir los recursos computacionales existentes de personas y organizaciones en una sola unidad coordinada, capaz de afrontar retos de cómputo de gran envergadura. Sin Hadoop, esas mismas entidades se verían obligadas a invertir continuamente en máquinas cada vez más potentes.
Casos de uso de Hadoop
Ya sabemos qué es Hadoop. Pero ¿cómo se aplican sus casos de uso en el mundo real? Entender un programa en teoría está bien, pero no sustituye a ver su potencial en una operación real. A continuación presento algunos ejemplos antes de pasar al tutorial de Hadoop.
Análisis de riesgos
Como ya se ha mencionado, Hadoop permite combinar la potencia de varios sistemas informáticos como una sola unidad de red para procesar grandes volúmenes de datos y analizarlos más rápido de lo habitual. Toda empresa tiene riesgos que hay que analizar y calcular, y Hadoop resulta muy útil en ese contexto. Tanto es así que muchos hospitales de referencia lo utilizan para analizar los riesgos de distintos tratamientos y estimar los posibles resultados y estadísticas de sus operaciones para sus pacientes.
Detección de brechas de seguridad
A medida que crece el número de dispositivos conectados en una red o empresa, aumentan también los posibles puntos de vulnerabilidad a vigilar. Una de las utilidades clave de Hadoop es evaluar el conjunto de una operación analizando grandes volúmenes de datos e identificando los puntos débiles del sistema.
Mapeo de reseñas
Muchas empresas dependen de las reseñas de sus productos para mejorarlos o desarrollar nuevas estrategias de mercado. Mientras que un humano tardaría mucho tiempo en revisar un archivo de reseñas suficientemente amplio, Hadoop aprovecha la red de equipos para ofrecer resultados mucho más rápidos.
Análisis de mercado
Hablando de estrategias de mercado, el análisis de reseñas mencionado antes no es nada comparado con los recursos necesarios para estudiar el mercado y evaluar el potencial de un producto nuevo. Este es otro caso en el que Hadoop destaca: permite incluso a pequeñas empresas emergentes analizar el mercado con varios equipos de forma eficiente y en un tiempo razonable.
Análisis de archivos de registro
Otro aspecto que se complica a medida que una empresa crece es la cantidad de software que empieza a utilizar en todos los ámbitos. Usar cada vez más software genera más posibles errores y puntos de fallo, y requiere un empleado dedicado a gestionar los archivos de registro y resolver los problemas. Esto consume mucho tiempo, pero con unos sencillos protocolos, una empresa puede usar Hadoop para revisar y evaluar rápidamente los archivos de registro, localizar esos errores y eliminarlos.
Existen muchos otros casos de uso y aplicaciones de Hadoop, pero para mantener el foco en el objetivo del artículo, no los trataremos aquí.
Visión general de la arquitectura de Hadoop
Supongamos que ya conoces Hadoop, sus casos de uso y lo que hace. Y si no es así, este artículo ya te ha puesto al día. Ahora conviene conocer en profundidad de qué está compuesto realmente Hadoop y cómo interactúan sus distintas partes. Como se mencionó antes, Hadoop tiene cuatro capas principales. En esta parte del tutorial de Hadoop aprenderemos más sobre HDFS (Hadoop Distributed File System), YARN (Yet Another Resource Negotiator), MapReduce y Hadoop Common. Sin embargo, dado que Hadoop Common no tiene demasiadas funciones que requieran explicación detallada, sus aspectos esenciales se conocen como Zookeeper. En esta sección intentaré explicar de forma sencilla la arquitectura avanzada de Hadoop, su ecosistema y sus cuatro componentes, antes de pasar a cómo instalar Hadoop en Ubuntu 20.04.
HDFS
HDFS en el ecosistema Hadoop constituye el sistema de almacenamiento general que utilizan todos los subsistemas y aplicaciones de Hadoop para acceder, transferir y guardar datos. El punto clave de la arquitectura HDFS es que, a diferencia del propio Hadoop, que es un programa de código abierto, HDFS es el sistema de archivos responsable de ejecutar todas las operaciones subyacentes de un único clúster de Hadoop. HDFS es un sistema de archivos muy resistente que divide los lotes de datos en bloques de 128 MB y los optimiza para operaciones basadas en secuencias.
La función principal de HDFS en el software Hadoop es proporcionar todos los datos como parte de un rack de datos global, que puede manipularse a través de distintos namenodes y racks secundarios en subsecciones para organizar la operación de análisis de datos. A continuación se pueden usar otras opciones como los racks Journal, QJM, HA, fsimage y los archivos de registro de edición, además del registro general, para hacer seguimiento y realizar otras tareas.
YARN
YARN es otro componente ejecutivo de Hadoop que se utiliza para asignar cantidades determinadas de recursos de cómputo a aplicaciones específicas dentro del ecosistema Hadoop. En esencia, permite usar un gestor de recursos para que los clientes asignen esos recursos a distintas tareas y aplicaciones a través de un conjunto de nodos. YARN también cuenta con un registro que, al igual que el de HDFS, permite hacer seguimiento de todos los recursos asignados y las operaciones en curso. YARN se divide en tres subsecciones: el Resource Manager, el Application Master y el Node Manager.
Cada una de estas tres subsecciones crea una nueva instancia de sí misma por clúster, aplicación y nodo, respectivamente. Con YARN no solo puedes asignar recursos a distintas tareas, sino también programar esos recursos para que cambien con el tiempo y dar lugar a flujos de trabajo algorítmicos avanzados. YARN no se limita a sus propias subsecciones: habrá muchas situaciones en las que lo usarás junto con otras capas arquitectónicas como HDFS y Zookeeper para asignar recursos y evaluar el conjunto de la operación.
Hadoop MapReduce
Hadoop MapReduce es otro componente principal del ecosistema Hadoop. Una vez que instalas Hadoop en Ubuntu, puedes usar esta función para analizar de forma distribuida un gran volumen de datos entre varios equipos. En esencia, Hadoop MapReduce funciona así: introduces un gran mapa de datos en el programa. Ese mapa se redistribuye, fragmenta y distribuye entre los equipos de la red. A continuación, mediante protocolos específicos conocidos como reducers, los datos se reducen a sus componentes esenciales. Cada una de estas operaciones se denomina Job.
Imaginemos que tienes una frase de tres palabras que actúa como el mapa de datos que quieres analizar con MapReduce. Supongamos que la frase es Oso Caza Conejo. Hadoop MapReduce descompondrá esa frase en tres lotes, cada uno con una palabra, y luego combinará esas palabras con entradas de datos similares de otros Jobs para crear un lote de datos final homogeneizado, con los datos innecesarios eliminados y listo para analizarse fácilmente.
Zookeeper
Zookeeper es otra subsección del ecosistema Hadoop que comenzó a cobrar protagonismo con el lanzamiento de Hadoop versión 2.0. La función principal de Zookeeper es coordinar las distintas operaciones que se ejecutan dentro de una misma instancia de Hadoop. Por eso, Zookeeper se usa casi siempre junto con el Resource Manager de YARN y las distintas funciones de HDFS en Hadoop. Su uso principal en estas operaciones es detectar y corregir los posibles puntos de fallo. Para ello utiliza dos herramientas: ZKFiloverControer y el Zookeeper Quorum.
En estos procedimientos, los nodos de datos gestionados por otros componentes de la arquitectura Hadoop se clasifican como namenodes activos, supervisados por el usuario. A continuación, cada uno de esos namenodes es examinado dentro de las dos subsecciones de Zookeeper mencionadas anteriormente, con el fin de identificar áreas problemáticas y posibles fallos.
Guía paso a paso para instalar Hadoop en Ubuntu 20.04
Por fin, tras conocer la arquitectura de Hadoop, es momento de ir al grano: cómo instalar Hadoop en Ubuntu 20.04, la parte final de este tutorial de Hadoop. Antes de pasar a la guía paso a paso, revisemos los requisitos previos. Ten en cuenta que esta guía también es válida para Ubuntu 18.04.
Requisitos previos
Los requisitos previos para instalar Hadoop en Ubuntu son bastante sencillos. Solo necesitas un equipo con Ubuntu y acceso root, ya sea de forma local o remota a través de un servidor VPS. En cuanto a los programas necesarios, asegúrate de tener instalados Java 11 y SSH. Si no los tienes, ejecuta los siguientes comandos uno a uno para instalarlos:
sudo apt update && sudo apt upgrade -y
sudo apt install openssh-server openssh-client -y
sudo apt install openjdk-11-jdk -y
En cuanto a la licencia, no necesitas ninguna, ya que Hadoop es gratuito y de código abierto. Con esto es suficiente. Pasemos al primer paso.
Paso 1: Crear un usuario sin privilegios de root para Hadoop
Crea un usuario sin privilegios de root para Hadoop con el siguiente comando. Esto forma parte de la configuración previa que hay que realizar antes de descargar e instalar Hadoop:
sudo adduser hdoop
su - hdoop
Paso 2: Configurar claves SSH
Para instalar Hadoop en Ubuntu, usaremos el usuario de Hadoop que acabas de crear para establecer una conexión SSH. Ejecuta este comando para generar un par de claves SSH y guardarlo:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
Una vez generadas las claves, la siguiente línea te permitirá marcarlas como authorized_keys y guardarlas en tu directorio SSH:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Usa este comando para asegurarte de que tu conexión SSH tiene todos los permisos necesarios:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
Confirma los cambios y podrás conectarte fácilmente a tu localhost en cualquier momento con el usuario que creaste:
ssh localhost
Paso 3: Descargar e instalar Hadoop en Ubuntu
Puedes visitar el sitio web de Apache Hadoop para ver una lista de versiones con su historial de cambios reciente. Elige la versión que prefieras y obtendrás un enlace que puedes usar con el siguiente comando para descargar e instalar Hadoop en Ubuntu. Aquí utilizaré la versión 3.3.6. Sustituye '3.3.6' por la última versión estable si es necesario:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
Una vez completada la descarga, ejecuta esta línea para finalizar el proceso de extracción e instalación:
tar xzf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
sudo chown -R hdoop:hdoop /usr/local/hadoop
Paso 4: Configurar el entorno de Hadoop
Establece JAVA_HOME in /usr/local/hadoop/etc/hadoop/hadoop-env.sh:
echo 'export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")' | sudo tee -a /usr/local/hadoop/etc/hadoop/hadoop-env.sh
Paso 5: Editar los archivos de configuración
Actualiza los archivos de configuración XML de Hadoop con los ajustes de tu clúster.
nano /usr/local/hadoop/etc/hadoop/core-site.xml
Paso 6: Formatear HDFS
Inicializa el espacio de nombres del sistema de archivos de Hadoop.
/usr/local/hadoop/bin/hdfs namenode -format
Paso 7: Iniciar los servicios de Hadoop
Inicia los servicios HDFS y YARN.
/usr/local/hadoop/sbin/start-dfs.sh
/usr/local/hadoop/sbin/start-yarn.sh
Paso 8: Verificar la instalación
Comprueba los procesos Java en ejecución para confirmar que Hadoop está funcionando.
jps
Paso 9: Acceder a las interfaces web
Abre en el navegador las interfaces NameNode y ResourceManager de Hadoop.
NameNode: http://localhost:9870
Gestor de Recursos: http://localhost:8088
Paso 10: Ejecutar un ejemplo de MapReduce
Ejecuta un trabajo MapReduce de ejemplo para validar la configuración.
/usr/local/hadoop/bin/hdfs dfs -mkdir /input
/usr/local/hadoop/bin/hdfs dfs -put localfile.txt /input
/usr/local/hadoop/bin/hadoop jar
/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep /input /output 'dfs[a-z.]+'
/usr/local/hadoop/bin/hdfs dfs -cat /output/*
Paso 11: Definir las variables de entorno
Añade el directorio bin y sbin directorios al PATH del sistema.
echo 'export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin' >> ~/.bashrc
source ~/.bashrc
¡Listo! Has configurado e instalado correctamente Apache Hadoop en Ubuntu 20.04.
Conclusión
En resumen, instalar Hadoop en Ubuntu 20.04 es un proceso detallado que requiere atención cuidadosa y disposición para entender cada paso de la configuración. Siguiendo los pasos de esta guía, los usuarios de Ubuntu pueden aprovechar al máximo las capacidades de Hadoop para sus proyectos de análisis de datos.
Mi recomendación es desplegar Hadoop como nodo único con distribución limitada si solo quieres aprenderlo y experimentar con él. Para ese propósito, un VPS es más que suficiente. Cloudzy te ofrece una amplia variedad de Servicios de Linux en VPS incluyendo un Ubuntu VPS fiable y sólido, que puedes configurar en poco tiempo para convertirlo en tu entorno de aprendizaje ideal para Hadoop. Desde 4,95 $ al mes, puedes tener tu propio Ubuntu VPS con más de 12 ubicaciones y soporte disponible las 24 horas, los 7 días de la semana.
La elección obvia
La mayoría de servidores que ejecutan Linux usan Ubuntu. ¿Por qué no el tuyo? Descubre por qué todo el mundo elige Ubuntu y consigue un VPS Ubuntu optimizado.
Obtén tu VPS UbuntuPreguntas frecuentes
¿Cuáles son las diferencias entre HDFS y MapReduce?
Aunque ambos módulos forman parte del ecosistema Hadoop, cumplen funciones diferentes. HDFS actúa como sistema de archivos distribuido y facilita el acceso a los datos. MapReduce, por su parte, destaca en la división y el análisis eficiente de grandes volúmenes de datos.
¿Hadoop es una base de datos?
Hadoop no es una base de datos, aunque es un error frecuente pensarlo. Funciona como un sistema de archivos distribuido que permite almacenar y procesar grandes cantidades de datos mediante una red de ordenadores interconectados. No debe usarse como sustituto directo de un sistema de base de datos tradicional.
¿Cuáles son los cuatro componentes principales de Hadoop?
Hadoop se compone de cuatro elementos principales: HDFS (Hadoop Distributed File System), YARN (Yet Another Resource Negotiator), MapReduce y Hadoop Common. Algunos recursos también consideran ZooKeeper como un componente, aunque no está reconocido oficialmente como tal.
¿Dónde se utiliza Hadoop habitualmente?
Hadoop se aplica en múltiples sectores donde gestionar, almacenar, procesar y analizar datos a gran escala es fundamental. Da respuesta a las necesidades de todo tipo de organizaciones: desde empresas medianas y hospitales hasta startups en crecimiento, ofreciendo soluciones basadas en datos.