Streaming Hadoop: scrittura di un programma MapReduce Hadoop in Python



Questo post del blog su Hadoop Streaming è una guida passo passo per imparare a scrivere un programma Hadoop MapReduce in Python per elaborare enormi quantità di Big Data.

La quantità di dati digitali generati ogni giorno sta crescendo in modo esponenziale con l'avvento dei media digitali, Internet of Things tra gli altri sviluppi. Questo scenario ha dato luogo a sfide nella creazione di strumenti e tecnologie di prossima generazione per archiviare e manipolare questi dati. È qui che entra in gioco Hadoop Streaming! Di seguito è riportato un grafico che rappresenta la crescita dei dati generati ogni anno nel mondo dal 2013. IDC stima che la quantità di dati creati ogni anno raggiungerà 180 Zettabyte nel 2025!

miglior java ide per principianti

data-by-2025-hadoop-streaming





Fonte: IDC

IBM afferma che, ogni giorno, vengono creati quasi 2,5 quintilioni di byte di dati, con il 90% dei dati mondiali creati negli ultimi due anni! È un compito impegnativo archiviare una quantità di dati così ampia. Hadoop è in grado di gestire grandi volumi di dati strutturati e non strutturati in modo più efficiente rispetto al tradizionale data warehouse aziendale. Memorizza questi enormi set di dati su cluster distribuiti di computer. Hadoop Streaming utilizza il framework MapReduce che può essere utilizzato per scrivere applicazioni per elaborare enormi quantità di dati.



Poiché il framework MapReduce è basato su Java, ti starai chiedendo come può lavorarci uno sviluppatore se non ha esperienza in Java. Bene, gli sviluppatori possono scrivere applicazioni mapper / Reducer utilizzando la loro lingua preferita e senza avere molta conoscenza di Java, utilizzando Streaming Hadoop piuttosto che passare a nuovi strumenti o tecnologie come Pig e Hive.

Cos'è lo streaming Hadoop?

Hadoop Streaming è un'utilità fornita con la distribuzione Hadoop. Può essere utilizzato per eseguire programmi per l'analisi di big data. Lo streaming Hadoop può essere eseguito utilizzando linguaggi come Python, Java, PHP, Scala, Perl, UNIX e molti altri. L'utility ci permette di creare ed eseguire lavori di Map / Reduce con qualsiasi eseguibile o script come mapper e / o riduttore. Per esempio:

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



-input myInputDirs

-output myOutputDir

-folder / bin / cat

-riduttore / bidone / wc

Descrizione dei parametri:

Codice MapReduce di Python:

mapper.py #! / usr / bin / python import sys #Word Count Esempio # l'input proviene dallo standard input STDIN per la riga in sys.stdin: line = line.strip () #rimuove gli spazi bianchi iniziali e finali parole = line.split ( ) # divide la riga in parole e restituisce un elenco di parole in parole: #scrive i risultati sullo standard output STDOUT print '% s% s'% (word, 1) #Emit the word

riduttore.py

#! / usr / bin / python import sys dall'operatore import itemgetter # usando un dizionario per mappare le parole ai loro conteggi current_word = Nessuno current_count = 0 word = Nessuno # l'input proviene da STDIN per la riga in sys.stdin: line = line.strip () word, count = line.split ('', 1) try: count = int (count) eccetto ValueError: continue if current_word == word: current_count + = count else: if current_word: print '% s% s'% (current_word, current_count) current_count = conta current_word = word if current_word == word: print '% s% s'% (current_word, current_count)

Correre:

  1. Crea un file con il seguente contenuto e chiamalo word.txt.

Gatto topo leone cervo Leone tigre Leone elefante cervo

  1. Copia gli script mapper.py e riduttore.py nella stessa cartella in cui esiste il file sopra.

  1. Aprire il terminale e individuare la directory del file Comando: ls: per elencare tutti i file nella directory d: per cambiare directory / cartella

  1. Visualizza il contenuto del file.
    Comando: cat nome del file

> contenuto di mapper.py

comando: cat mapper.py

> Contenuto di riduttore.py

comando: cat riduttore.py

imposta il percorso java in Windows

Possiamo eseguire mappatore e riduttore su file locali (es: word.txt). Per eseguire la mappa e ridurre su Hadoop Distributed File System (HDFS), abbiamo bisogno del file Hadoop Streaming jar. Quindi, prima di eseguire gli script su HDFS, eseguiamoli localmente per assicurarci che funzionino correttamente.

> Esegui il mapper

comando: cat word.txt | python mapper.py

> Esegui riduttore.py

comando: cat word.txt | python mapper.py | sort -k1,1 | riduttore python.py

Possiamo vedere che il mappatore e il riduttore funzionano come previsto, quindi non dovremo affrontare ulteriori problemi.

Esecuzione di Codice Python su Hadoop

Prima di eseguire l'attività MapReduce su Hadoop, copia i dati locali (word.txt) su HDFS

> esempio: hdfs dfs -put directory_origine hadoop_destination_directory

comando: hdfs dfs -put /home/edureka/MapReduce/word.txt / utente / edureka

Copia il percorso del file jar

Il percorso del jar Hadoop Streaming basato sulla versione del jar è:

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

Quindi individua il jar di streaming Hadoop sul tuo terminale e copia il percorso.

comando:

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

Eseguire il lavoro MapReduce

comando:

vaso hadoop /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 / reduction.py -reducer Reduced.py -input / user / edureka / word -output / user / edureka / Wordcount

Hadoop fornisce un'interfaccia web di base per statistiche e informazioni. Quando il cluster Hadoop è in esecuzione, apri http: // localhost: 50070 nel browser. Ecco lo screenshot dell'interfaccia web di Hadoop.

Ora sfoglia il filesystem e individua il file wordcount generato per vedere l'output. Di seguito è riportato lo screenshot.

aggiungi due numeri in java

Possiamo vedere l'output sul terminale usando questo comando

comando: hadoop fs -cat / utente / edureka / Wordcount / part-00000

Ora hai imparato come eseguire un programma MapReduce scritto in Python utilizzando Hadoop Streaming!

Edureka ha un corso dal vivo e con istruttore su Big Data e Hadoop, co-creato da professionisti del settore.

Hai domande per noi? Per favore menzionalo nella sezione commenti e ti risponderemo.