Cómo instalar Hadoop en modo independiente en Ubuntu 20.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Java
  • Paso 2: Instalación de Hadoop
  • Paso 3: Configuración de la página de inicio de Java de Hadoop
    1. Opción 1: Establecer un valor estático
    2. Opción 2: Utilice Readlink para establecer el valor dinámicamente
  • Paso 4: Ejecución de Hadoop
  • Conclusió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 sudoprivilegios : 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 sudousuario 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:

    1. sudo apt update
    2. sudo apt install default-jdk

    Una vez finalizada la instalación, comprobemos la versión.

    1. 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.

    wgetEn el servidor, para obtenerlo usarás :

    1. 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 wgeten nuestro servidor para descargar el archivo:

    1. wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz.sha512

    Luego ejecuta la verificación:

    1. 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 .sha512archivo:

    1. 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:

    1. tar -xzvf hadoop-3.3.1.tar.gz

    Utilice el tarcomando con la -xbandera para extraer, -zdescomprimir, -vpara obtener una salida detallada y -fpara 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:

    1. 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/javaes un enlace simbólico a /etc/alternatives/java, que a su vez es un enlace simbólico al binario predeterminado de Java. Usarás readlinkcon el -findicador para seguir cada enlace simbólico en cada parte de la ruta, de forma recursiva. Luego, usarás sedpara recortar bin/javade la salida para darnos el valor correcto para JAVA_HOME.

    Para encontrar la ruta predeterminada de Java

    1. 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 readlinkcomando 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:

    1. 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+Wpara buscar rápidamente en el texto. Una vez que haya terminado, salga con CTRL+Xy guarde el archivo.

    Nota: Con respecto a Hadoop, el valor de JAVA_HOMEanula hadoop-env.shcualquier valor establecido en el entorno por /etc/profileo en el perfil de un usuario.

    Paso 4: Ejecución de Hadoop

    Ahora deberías poder ejecutar Hadoop:

    1. /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 inputin nuestro directorio de inicio y copie los archivos de configuración de Hadoop en él para utilizar esos archivos como nuestros datos.

    1. mkdir ~/input
    2. cp /usr/local/hadoop/etc/hadoop/*.xml ~/input

    A continuación, puede utilizar el siguiente comando para ejecutar el hadoop-mapreduce-examplesprograma MapReduce, un archivo Java con varias opciones:

    1. /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 grepprograma, uno de los muchos ejemplos incluidos en hadoop-mapreduce-examples, seguido del directorio de entrada inputy 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 alloweddentro 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 caten el directorio de salida:

    1. cat ~/grep_example/*
    Output22    allowed.1    allowed

    La tarea MapReduce encontró 19 apariciones de la palabra allowedseguida 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 .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion