LINUX

Cómo ejecutar el programa Hadoop MapReduce en Ubuntu 16.04

En este blog, le mostraré cómo ejecutar un programa MapReduce. MapReduce es una de las partes centrales de Apache Hadoop, es la capa de procesamiento de Apache Hadoop. Entonces, antes de mostrarle cómo ejecutar un programa MapReduce, permítame explicarle brevemente MapReduce.

MapReduce es un sistema para el procesamiento paralelo de grandes conjuntos de datos. MapReduce reduce los datos a resultados y crea un resumen de los datos. Un programa mapreduce tiene dos partes: mapper y reducer. Una vez que el mapeador termina su trabajo, solo comienzan los reductores.

Mapeador: Asigna pares clave / valor de entrada a un conjunto de pares clave / valor intermedios.

Reductor: Reduce un conjunto de valores intermedios que comparten una clave a un conjunto de valores más pequeño.

Básicamente, en el programa mapreduce de recuento de palabras, proporcionamos archivo (s) de entrada, cualquier archivo de texto, como entrada. Cuando se inicia el programa mapreduce, a continuación se muestran los procesos por los que pasa:

División: Divide cada línea del archivo de entrada en palabras.

Mapeo: Forma un par clave-valor, donde palabra es la clave y 1 es el valor asignado a cada clave.

Barajar: Los pares de valores clave comunes se agrupan.

Reducir: Los valores de claves similares se suman.

Ejecución del programa MapReduce

Un programa MapReduce está escrito en Java. Y principalmente, los desarrolladores utilizan Eclipse IDE para la programación. Entonces, en este blog, le mostraré cómo exportar un programa mapreduce a un archivo jar desde Eclipse IDE y ejecutarlo en un clúster de Hadoop.

Mi programa MapReduce está en mi IDE de Eclipse.

Ahora, para ejecutar este programa MapReduce en un clúster hadoop, exportaremos el proyecto como un archivo jar. Seleccione la opción Archivo en eclipse ide y haga clic en Exportar. En la opción Java, seleccione el archivo Jar y haga clic en Siguiente.

Seleccione el proyecto Wordcount y proporcione la ruta y el nombre del archivo jar, lo mantengo wordcount.jar, haga clic en Siguiente dos veces.

Ahora haga clic en Examinar y seleccione la clase principal y finalmente haga clic en Finalizar para crear el archivo jar. En caso de que reciba alguna de las siguientes advertencias, simplemente haga clic en Aceptar.

Compruebe si su clúster de Hadoop está activo y funcionando o no.

Mando: jps

hadoop@hadoop-VirtualBox:~$ jps

3008 NodeManager

3924 Jps

2885 ResourceManager

2505 DataNode

3082 JobHistoryServer

2716 SecondaryNameNode

2383 NameNode

hadoop@hadoop-VirtualBox:~$

Tenemos nuestro archivo de entrada en HDFS para el programa de recuento de palabras.

hadoop@hadoop-VirtualBox:~$ hdfs dfs -put input /

hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /input

This is my first mapreduce test

This is wordcount program

hadoop@hadoop-VirtualBox:~$

Ahora ejecute el archivo wordcount.jar usando el siguiente comando.

Nota: Dado que seleccionamos la clase principal al exportar wordcount.jar, no es necesario mencionar la clase principal en el comando.

Mando: hadoop jar wordcount.jar / input / output

hadoop@hadoop-VirtualBox:~$ hadoop jar wordcount.jar /input /output

16/11/27 22:52:20 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:
8032

16/11/27 22:52:22 WARN mapreduce.JobResourceUploader: Hadoop command-line option 
parsing not performed. Implement the Tool interface and execute your application 
with ToolRunner to remedy this.

16/11/27 22:52:27 INFO input.FileInputFormat: Total input paths to process : 1

16/11/27 22:52:28 INFO mapreduce.JobSubmitter: number of splits:1

16/11/27 22:52:29 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_14802
67251741_0001

16/11/27 22:52:32 INFO impl.YarnClientImpl: Submitted application application_14802
67251741_0001

16/11/27 22:52:33 INFO mapreduce.Job: The url to track the job: http://hadoop-Virtu
alBox:8088/proxy/application_1480267251741_0001/

16/11/27 22:52:33 INFO mapreduce.Job: Running job: job_1480267251741_0001

16/11/27 22:53:20 INFO mapreduce.Job: Job job_1480267251741_0001 running in uber mo
de : false

16/11/27 22:53:20 INFO mapreduce.Job:  map 0% reduce 0%

16/11/27 22:53:45 INFO mapreduce.Job:  map 100% reduce 0%

16/11/27 22:54:13 INFO mapreduce.Job:  map 100% reduce 100%

16/11/27 22:54:15 INFO mapreduce.Job: Job job_1480267251741_0001 completed 
successfully

16/11/27 22:54:16 INFO mapreduce.Job: Counters: 49

          File System Counters

                    FILE: Number of bytes read=124

                    FILE: Number of bytes written=237911

                    FILE: Number of read operations=0

                    FILE: Number of large read operations=0

                    FILE: Number of write operations=0

                    HDFS: Number of bytes read=150

                    HDFS: Number of bytes written=66

                    HDFS: Number of read operations=6

                    HDFS: Number of large read operations=0

                    HDFS: Number of write operations=2

          Job Counters

                    Launched map tasks=1

                    Launched reduce tasks=1

                    Data-local map tasks=1

                    Total time spent by all maps in occupied slots (ms)=21062

                    Total time spent by all reduces in occupied slots (ms)=25271

                    Total time spent by all map tasks (ms)=21062

                    Total time spent by all reduce tasks (ms)=25271

                    Total vcore-milliseconds taken by all map tasks=21062

                    Total vcore-milliseconds taken by all reduce tasks=25271

                    Total megabyte-milliseconds taken by all map tasks=21567488

                    Total megabyte-milliseconds taken by all reduce tasks=25877504

          Map-Reduce Framework

                    Map input records=2

                    Map output records=10

                    Map output bytes=98

                    Map output materialized bytes=124

                    Input split bytes=92

                    Combine input records=0

                    Combine output records=0

                    Reduce input groups=8

                    Reduce shuffle bytes=124

                    Reduce input records=10

                    Reduce output records=8

                    Spilled Records=20

                    Shuffled Maps =1

                    Failed Shuffles=0

                    Merged Map outputs=1

                    GC time elapsed (ms)=564

                    CPU time spent (ms)=4300

                    Physical memory (bytes) snapshot=330784768

                    Virtual memory (bytes) snapshot=3804205056

                    Total committed heap usage (bytes)=211812352

          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=58

          File Output Format Counters

                    Bytes Written=66

hadoop@hadoop-VirtualBox:~$

Después de que el programa se ejecute correctamente, vaya a HDFS y verifique el archivo de pieza dentro del directorio de salida.

A continuación se muestra el resultado del programa de recuento de palabras.

hadoop@hadoop-VirtualBox:~$ hdfs dfs -cat /output/part-r-00000

 This    2
 first     1
 is        2
 mapreduce   1
 my      1
 program        1
 test     1
 wordcount     1
 hadoop@hadoop-VirtualBox:~$

Conclusión

Este ejemplo aquí está en Java, también puede escribir un programa MapReduce en Python. Ejecutamos con éxito un programa Hadoop MapReduce en un clúster Hadoop en Ubuntu 16.04. Los pasos para ejecutar un programa Mapreduce en otros entornos Linux siguen siendo los mismos. Asegúrese de que antes de ejecutar el programa, su clúster de Hadoop debe estar en funcionamiento, también su archivo de entrada debe estar presente en HDFS.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar