Cómo instalar Hadoop en modo independiente en Ubuntu 20.04

Introducción
Hadoop es un marco de programación basado en Java que permite procesar y almacenar conjuntos de datos extremadamente grandes en un grupo de máquinas económicas. Fue el primer proyecto importante de código abierto en el campo de los macrodatos y está patrocinado por la Apache Software Foundation.
Hadoop se compone de cuatro capas principales:
- Hadoop Common es la colección de utilidades y bibliotecas que admiten otros módulos de Hadoop.
- HDFS , que significa Hadoop Distributed File System, es responsable de persistir los datos en el disco.
- YARN , abreviatura de Yet Another Resource Negotiator, es el “sistema operativo” para HDFS.
- MapReduce es el modelo de procesamiento original para los clústeres de Hadoop. Distribuye el trabajo dentro del clúster o mapa, luego organiza y reduce los resultados de los nodos en una respuesta a una consulta. Hay muchos otros modelos de procesamiento disponibles para la versión 3.x de Hadoop.
Los clústeres de Hadoop son relativamente complejos de configurar, por lo que el proyecto incluye un modo independiente que es adecuado para aprender sobre Hadoop, realizar operaciones simples y depurar.
En este tutorial, instalará Hadoop en modo independiente y ejecutará uno de los programas MapReduce de ejemplo que incluye para verificar la instalación.
Prerrequisitos
Para seguir este tutorial, necesitarás:
- Un servidor Ubuntu 20.04 con un usuario no root con
sudo
privilegios : puede obtener más información sobre cómo configurar un usuario con estos privilegios en nuestra guía Configuración inicial del servidor con Ubuntu 20.04 .
También puede que le interese echar un vistazo a Introducción a los conceptos y la terminología de Big Data o Introducción a Hadoop
Una vez que haya completado los requisitos previos, inicie sesión como su sudo
usuario para comenzar.
Paso 1: Instalación de Java
Para comenzar, actualizará nuestra lista de paquetes e instalará OpenJDK, el kit de desarrollo de Java predeterminado en Ubuntu 20.04:
- sudo apt update
- sudo apt install default-jdk
Una vez finalizada la instalación, comprobemos la versión.
- java -version
Outputopenjdk version "11.0.13" 2021-10-19OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04)OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
Esta salida verifica que OpenJDK se ha instalado correctamente.
Paso 2: Instalación de Hadoop
Una vez instalado Java, visitará la página de versiones de Apache Hadoop para encontrar la versión estable más reciente.
Vaya al archivo binario correspondiente a la versión que desea instalar. En esta guía, instalará Hadoop 3.3.1, pero puede sustituir los números de versión de esta guía por los que prefiera.
En la página siguiente, haga clic derecho y copie el enlace al binario de lanzamiento.
wget
En el servidor, para obtenerlo usarás :
- wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
Nota: El sitio web de Apache lo dirigirá al mejor espejo de forma dinámica, por lo que su URL puede no coincidir con la URL anterior.
Para asegurarse de que el archivo que descargó no haya sido alterado, realice una verificación rápida utilizando SHA-512, o el algoritmo de hash seguro 512. Regrese a la página de versiones , luego haga clic derecho y copie el enlace al archivo de suma de comprobación para el binario de la versión que descargó:
Nuevamente, utilizarás wget
en nuestro servidor para descargar el archivo:
- wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz.sha512
Luego ejecuta la verificación:
- shasum -a 512 hadoop-3.3.1.tar.gz
Output2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66 hadoop-3.3.1.tar.gz
Compare este valor con el valor SHA-512 en el .sha512
archivo:
- cat hadoop-3.3.1.tar.gz.sha512
~/hadoop-3.3.1.tar.gz.sha512
...SHA512 (hadoop-3.3.1.tar.gz) = 2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66...
La salida del comando que ejecutaste en el archivo que descargaste del espejo debe coincidir con el valor del archivo que descargaste de apache.org .
Ahora que has verificado que el archivo no está dañado ni modificado, puedes extraerlo:
- tar -xzvf hadoop-3.3.1.tar.gz
Utilice el tar
comando con la -x
bandera para extraer, -z
descomprimir, -v
para obtener una salida detallada y -f
para especificar que está extrayendo de un archivo.
Finalmente, moverás los archivos extraídos a /usr/local
, el lugar apropiado para el software instalado localmente:
- sudo mv hadoop-3.3.1 /usr/local/hadoop
Con el software instalado, está listo para configurar su entorno.
Paso 3: Configuración de la página de inicio de Java de Hadoop
Hadoop requiere que configure la ruta a Java, ya sea como una variable de entorno o en el archivo de configuración de Hadoop.
La ruta a Java /usr/bin/java
es un enlace simbólico a /etc/alternatives/java
, que a su vez es un enlace simbólico al binario predeterminado de Java. Usarás readlink
con el -f
indicador para seguir cada enlace simbólico en cada parte de la ruta, de forma recursiva. Luego, usarás sed
para recortar bin/java
de la salida para darnos el valor correcto para JAVA_HOME
.
Para encontrar la ruta predeterminada de Java
- readlink -f /usr/bin/java | sed "s:bin/java::"
Output/usr/lib/jvm/java-11-openjdk-amd64/
Puede copiar esta salida para configurar la versión específica de Java de Hadoop, lo que garantiza que si cambia el valor predeterminado de Java, este valor no cambiará. Como alternativa, puede utilizar el readlink
comando de forma dinámica en el archivo para que Hadoop utilice automáticamente la versión de Java que esté configurada como predeterminada del sistema.
Para comenzar, abra hadoop-env.sh
:
- sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
Luego, modifique el archivo eligiendo una de las siguientes opciones:
Opción 1: Establecer un valor estático
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
. . .#export JAVA_HOME=export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/ . . .
Opción 2: Utilice Readlink para establecer el valor dinámicamente
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
. . .#export JAVA_HOME=export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") . . .
Si tiene problemas para encontrar estas líneas, utilice CTRL+W
para buscar rápidamente en el texto. Una vez que haya terminado, salga con CTRL+X
y guarde el archivo.
Nota: Con respecto a Hadoop, el valor de JAVA_HOME
anula hadoop-env.sh
cualquier valor establecido en el entorno por /etc/profile
o en el perfil de un usuario.
Paso 4: Ejecución de Hadoop
Ahora deberías poder ejecutar Hadoop:
- /usr/local/hadoop/bin/hadoop
OutputUsage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] or hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS] where CLASSNAME is a user-provided Java class OPTIONS is none or any of:--config dir Hadoop config directory--debug turn on shell script debug mode--help usage informationbuildpaths attempt to add class files from build treehostnames list[,of,host,names] hosts to use in slave modehosts filename list of hosts to use in slave modeloglevel level set the log4j level for this commandworkers turn on worker mode SUBCOMMAND is one of:. . .
Esta salida significa que ha configurado correctamente Hadoop para que se ejecute en modo independiente.
Para garantizar que Hadoop funcione correctamente, ejecute el programa MapReduce de ejemplo que viene con el paquete. Para ello, cree un directorio llamado input
in nuestro directorio de inicio y copie los archivos de configuración de Hadoop en él para utilizar esos archivos como nuestros datos.
- mkdir ~/input
- cp /usr/local/hadoop/etc/hadoop/*.xml ~/input
A continuación, puede utilizar el siguiente comando para ejecutar el hadoop-mapreduce-examples
programa MapReduce, un archivo Java con varias opciones:
- /usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep ~/input ~/grep_example 'allowed[.]*'
Esto invoca el grep
programa, uno de los muchos ejemplos incluidos en hadoop-mapreduce-examples
, seguido del directorio de entrada input
y el directorio de salida grep_example
. El programa grep de MapReduce contará las coincidencias de una palabra literal o expresión regular. Finalmente, allowed[.]*
se proporciona la expresión regular para encontrar ocurrencias de la palabra allowed
dentro o al final de una oración declarativa. La expresión distingue entre mayúsculas y minúsculas, por lo que no encontrará la palabra si estuviera en mayúscula al principio de una oración.
Cuando se completa la tarea, proporciona un resumen de lo que se ha procesado y los errores encontrados, pero no contiene los resultados reales.
Output . . . File System Counters FILE: Number of bytes read=1200956 FILE: Number of bytes written=3656025 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 Map-Reduce Framework Map input records=2 Map output records=2 Map output bytes=33 Map output materialized bytes=43 Input split bytes=114 Combine input records=0 Combine output records=0 Reduce input groups=2 Reduce shuffle bytes=43 Reduce input records=2 Reduce output records=2 Spilled Records=4 Shuffled Maps =1 Failed Shuffles=0 Merged Map outputs=1 GC time elapsed (ms)=41 Total committed heap usage (bytes)=403800064 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=147 File Output Format Counters Bytes Written=34
Nota: Si el directorio de salida ya existe, el programa fallará y, en lugar de ver el resumen, la salida se verá así:
Output . . . at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.hadoop.util.RunJar.run(RunJar.java:244) at org.apache.hadoop.util.RunJar.main(RunJar.java:158)
Los resultados se almacenan en el directorio de salida y se pueden comprobar ejecutando cat
en el directorio de salida:
- cat ~/grep_example/*
Output22 allowed.1 allowed
La tarea MapReduce encontró 19 apariciones de la palabra allowed
seguida de un punto y una aparición en la que no estaba. Al ejecutar el programa de ejemplo, se ha verificado que nuestra instalación independiente funciona correctamente y que los usuarios sin privilegios del sistema pueden ejecutar Hadoop para exploración o depuración.
Conclusión
En este tutorial, ha instalado Hadoop en modo independiente y lo ha verificado ejecutando un programa de ejemplo que se le proporcionó. Para aprender a escribir sus propios programas MapReduce, puede visitar el tutorial MapReduce de Apache Hadoop , que explica el código detrás del ejemplo. Cuando esté listo para configurar un clúster, consulte la guía de configuración de clústeres Hadoop de Apache Foundation .
Si está interesado en implementar un clúster completo en lugar de solo uno independiente, consulte Cómo poner en marcha un clúster Hadoop con Droplets de DigitalOcean .
Deja una respuesta