Hadoop Streaming: escriure un programa Hadoop MapReduce a Python



Aquesta entrada de bloc sobre Hadoop Streaming és una guia pas a pas per aprendre a escriure un programa Hadoop MapReduce a Python per processar grans quantitats de Big Data.

La quantitat de dades digitals generades cada dia creix exponencialment amb l’aparició dels mitjans digitals, Internet de les coses, entre d’altres desenvolupaments. Aquest escenari ha generat desafiaments en la creació d’eines i tecnologies d’última generació per emmagatzemar i manipular aquestes dades. Aquí és on entra Hadoop Streaming. A continuació es mostra un gràfic que representa el creixement de les dades generades anualment al món a partir del 2013. IDC calcula que la quantitat de dades creades anualment arribarà a 180 Zettabytes el 2025.

data-by-2025-hadoop-streaming





Font: IDC

IBM afirma que, cada dia, es creen gairebé 2,5 quintilions de bytes de dades, amb el 90% de les dades mundials creades en els darrers dos anys. Emmagatzemar una quantitat tan gran de dades és una tasca difícil. Hadoop pot gestionar grans volums de dades estructurades i no estructurades amb més eficiència que l'empresa tradicional Data Warehouse. Emmagatzema aquests enormes conjunts de dades en clústers distribuïts d’ordinadors. Hadoop Streaming utilitza el marc MapReduce que es pot utilitzar per escriure aplicacions per processar grans quantitats de dades.



Atès que el framework MapReduce es basa en Java, és possible que us pregunteu com un desenvolupador hi pot treballar si no té experiència en Java. Bé, els desenvolupadors poden escriure l'aplicació Mapper / Reducer utilitzant el seu llenguatge preferit i sense tenir molt coneixement de Java, utilitzant Transmissió d’Hadoop en lloc de canviar a noves eines o tecnologies com Pig and Hive.

Què és Hadoop Streaming?

Hadoop Streaming és una utilitat que inclou la distribució Hadoop. Es pot utilitzar per executar programes d'anàlisi de dades massives. La transmissió Hadoop es pot realitzar mitjançant llenguatges com Python, Java, PHP, Scala, Perl, UNIX i molts més. La utilitat ens permet crear i executar treballs de Map / Reduce amb qualsevol executable o script com el mapeador i / o el reductor. Per exemple:

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



-input myInputDirs

-output myOutputDir

-carpeta / paperera / gat

-reductor / bin / wc

Paràmetres Descripció:

Codi Python MapReduce:

mapper.py #! / usr / bin / python import sys # Exemple de recompte de paraules # L'entrada prové de l'entrada estàndard STDIN per a la línia de sys.stdin: line = line.strip () #remove white names ) # divideix la línia en paraules i torna com a llista de paraules en paraules: #escriu els resultats a la sortida estàndard STDOUT imprimeix '% s% s'% (paraula, 1) # Emet la paraula

reducer.py

#! / usr / bin / python import sys from operator import itemgetter # using a dictionary to map words to their counts current_word = None current_count = 0 word = None # input prové de STDIN per a la línia de sys.stdin: line = line.strip () word, count = line.split ('', 1) try: count = int (count) excepte ErrorError: continua si current_word == word: current_count + = count else: if current_word: imprimeix '% s% s'% (current_word, current_count) current_count = recompte current_word = paraula si current_word == paraula: imprimeix '% s% s'% (current_word, current_count)

Correr:

  1. Creeu un fitxer amb el contingut següent i anomeneu-lo word.txt.

Gat ratolí cérvol lleó Lleó tigre Elefant cérvol lleó

  1. Copieu els scripts mapper.py i reducer.py a la mateixa carpeta on existeix el fitxer anterior.

  1. Obriu el terminal i localitzeu el directori del fitxer Comandament: ls: per llistar tots els fitxers del directoricd: per canviar el directori / carpeta

  1. Vegeu el contingut del fitxer.
    Ordre: cat nom de l'arxiu

> contingut de mapper.py

ordre: cat mapper.py

> Contingut de reducer.py

ordre: cat reducer.py

anar a funcionar en python

Podem executar mapeador i reductor en fitxers locals (per exemple: word.txt). Per executar el mapa i reduir el sistema de fitxers distribuïts (HDFS) de Hadoop, necessitem el fitxer Pot de streaming Hadoop. Per tant, abans d’executar els scripts a HDFS, executem-los localment per assegurar-nos que funcionen bé.

> Executeu el mapeador

comandament: paraula de gat.txt | python mapper.py

> Executeu reducer.py

comandament: paraula de gat.txt | python mapper.py | ordenar -k1,1 | python reducer.py

què fa l'escàner a Java

Podem veure que l’assignador i el reductor funcionen com s’esperava, de manera que no afrontarem cap altre problema.

Executant el Codi Python a Hadoop

Abans d'executar la tasca MapReduce a Hadoop, copieu les dades locals (word.txt) a HDFS

> exemple: hdfs dfs -put directori_origen_directori hadoop_destination_directory

comandament: hdfs dfs -put /home/edureka/MapReduce/word.txt / usuari / edureka

Copieu la ruta del fitxer jar

El camí de Hadoop Streaming jar basat en la versió del jar és:

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

Per tant, localitzeu el pot Hadoop Streaming al vostre terminal i copieu el camí.

comandament:

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

Executeu el treball MapReduce

comandament:

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

Hadoop proporciona una interfície web bàsica per a estadístiques i informació. Quan el clúster Hadoop s’executa, obriu http: // localhost: 50070 al navegador. Aquí teniu la captura de pantalla de la interfície web d’Hadoop.

Ara navegueu pel sistema de fitxers i localitzeu el fitxer de recompte de paraules generat per veure la sortida. A continuació es mostra la captura de pantalla.

Podem veure la sortida al terminal mitjançant aquesta ordre

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

Ara heu après a executar un programa MapReduce escrit en Python mitjançant Hadoop Streaming.

Edureka té un curs dirigit per instructors sobre Big Data i Hadoop, co-creat per professionals de la indústria.

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondrem.