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.