Transmisión de Hadoop: escritura de un programa MapReduce de Hadoop en Python



Esta publicación de blog sobre Hadoop Streaming es una guía paso a paso para aprender a escribir un programa Hadoop MapReduce en Python para procesar enormes cantidades de Big Data.

La cantidad de datos digitales generados todos los días está creciendo exponencialmente con la llegada de los medios digitales, Internet de las cosas, entre otros desarrollos. Este escenario ha dado lugar a desafíos en la creación de herramientas y tecnologías de próxima generación para almacenar y manipular estos datos. ¡Aquí es donde entra en juego Hadoop Streaming! A continuación se muestra un gráfico que muestra el crecimiento de los datos generados anualmente en el mundo desde 2013. ¡IDC estima que la cantidad de datos creados anualmente alcanzará los 180 Zettabytes en 2025!

data-by-2025-hadoop-streaming





Fuente: IDC

IBM afirma que, todos los días, se crean casi 2,5 quintillones de bytes de datos, ¡con el 90 por ciento de los datos mundiales creados en los últimos dos años! Es una tarea desafiante almacenar una cantidad tan amplia de datos. Hadoop puede manejar grandes volúmenes de datos estructurados y no estructurados de manera más eficiente que el almacén de datos empresarial tradicional. Almacena estos enormes conjuntos de datos en grupos distribuidos de computadoras. Hadoop Streaming utiliza el marco MapReduce que se puede utilizar para escribir aplicaciones para procesar enormes cantidades de datos.



Dado que el marco MapReduce se basa en Java, es posible que se pregunte cómo puede trabajar un desarrollador en él si no tiene experiencia en Java. Bueno, los desarrolladores pueden escribir la aplicación Mapper / Reducer usando su lenguaje preferido y sin tener mucho conocimiento de Java, usando Transmisión de Hadoop en lugar de cambiar a nuevas herramientas o tecnologías como Pig y Hive.

¿Qué es Hadoop Streaming?

Hadoop Streaming es una utilidad que viene con la distribución de Hadoop. Se puede utilizar para ejecutar programas para el análisis de big data. La transmisión de Hadoop se puede realizar utilizando lenguajes como Python, Java, PHP, Scala, Perl, UNIX y muchos más. La utilidad nos permite crear y ejecutar trabajos Map / Reduce con cualquier ejecutable o script como mapeador y / o reductor. Por ejemplo:

$ HADOOP_HOME / bin / hadoop jar $ HADOOP_HOME / hadoop-streaming.jar



-input myInputDirs

-salida myOutputDir

-carpeta / papelera / gato

-reductor / contenedor / inodoro

Descripción de los parámetros:

Código MapReduce de Python:

mapper.py #! / usr / bin / python import sys #Word Count Ejemplo # la entrada proviene de la entrada estándar STDIN para la línea en sys.stdin: line = line.strip () #remove inicial y final en blanco palabras = line.split ( ) # divide la línea en palabras y devuelve como una lista de palabra en palabras: #escribe los resultados en la salida estándar STDOUT imprime '% s% s'% (palabra, 1) #Emite la palabra

reducer.py

#! / usr / bin / python import sys from operator import itemgetter # usando un diccionario para asignar palabras a sus recuentos current_word = None current_count = 0 word = None # la entrada proviene de STDIN para la línea en sys.stdin: line = line.strip () word, count = line.split ('', 1) try: count = int (count) excepto ValueError: continue if current_word == word: current_count + = count else: if current_word: print '% s% s'% (palabra_actual, recuento_actual) recuento_actual = recuento palabra_actual = palabra si palabra_actual == palabra: imprimir '% s% s'% (palabra_actual, recuento_actual)

c ++ ordenar números en orden ascendente

Carrera:

  1. Cree un archivo con el siguiente contenido y asígnele el nombre word.txt.

Gato ratón león ciervo Tigre león Elefante león ciervo

  1. Copie los scripts mapper.py y reducer.py en la misma carpeta donde existe el archivo anterior.

  1. Abra la terminal y busque el directorio del archivo. Comando: ls: para listar todos los archivos en el directorio cd: para cambiar el directorio / carpeta

  1. Vea el contenido del archivo.
    Comando: gato nombre del archivo

> contenido de mapper.py

comando: cat mapper.py

> Contenido de reducer.py

comando: gato reducer.py

cómo convertir cadenas a la fecha

Podemos ejecutar mapper y reducer en archivos locales (por ejemplo, word.txt). Para ejecutar el mapa y reducir en el sistema de archivos distribuido de Hadoop (HDFS), necesitamos el Frasco de Hadoop Streaming. Entonces, antes de ejecutar los scripts en HDFS, ejecutémoslos localmente para asegurarnos de que funcionan bien.

> Ejecutar el mapeador

mando: cat word.txt | python mapper.py

> Ejecute reducer.py

mando: cat word.txt | python mapper.py | sort -k1,1 | Python reducer.py

Podemos ver que el mapeador y el reductor funcionan como se esperaba, por lo que no enfrentaremos más problemas.

Ejecutando el Código Python en Hadoop

Antes de ejecutar la tarea MapReduce en Hadoop, copie los datos locales (word.txt) a HDFS

> ejemplo: hdfs dfs -put source_directory hadoop_destination_directory

mando: hdfs dfs -put /home/edureka/MapReduce/word.txt / usuario / edureka

Copia la ruta del archivo jar

La ruta del jar de Hadoop Streaming basada en la versión del jar es:

/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar

Así que ubique el jar de Hadoop Streaming en su terminal y copie la ruta.

mando:

ls /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

Ejecute el trabajo MapReduce

mando:

hadoop jar /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file /home/edureka/mapper.py -mapper mapper.py -file / home / edureka / reducer.py -reducer reducer.py -input / user / edureka / word -output / user / edureka / Wordcount

cómo crear un panel de power bi

Hadoop proporciona una interfaz web básica para estadísticas e información. Cuando el clúster de Hadoop se esté ejecutando, abra http: // localhost: 50070 en el navegador. Aquí está la captura de pantalla de la interfaz web de Hadoop.

Ahora navegue por el sistema de archivos y localice el archivo de recuento de palabras generado para ver el resultado. A continuación se muestra la captura de pantalla.

Podemos ver la salida en el terminal usando este comando

mando: hadoop fs -cat / user / edureka / Wordcount / part-00000

¡Ahora ha aprendido cómo ejecutar un programa MapReduce escrito en Python usando Hadoop Streaming!

Edureka tiene un curso en vivo y dirigido por un instructor sobre Big Data y Hadoop, co-creado por profesionales de la industria.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios y nos pondremos en contacto con usted.