Hadoop Streaming: pisanje programa Hadoop MapReduce v Pythonu



Ta objava v spletnem dnevniku o Hadoop Streaming je vodnik po korakih za učenje pisanja programa Hadoop MapReduce v Pythonu za obdelavo ogromnih količin velikih podatkov.

Količina digitalnih podatkov, ki se ustvarjajo vsak dan, eksponentno narašča s prihodom Digital Media, med drugim tudi interneta stvari. Ta scenarij je povzročil izzive pri ustvarjanju orodij in tehnologij naslednje generacije za shranjevanje in obdelavo teh podatkov. Tu nastopi Hadoop Streaming! Spodaj je prikazan graf, ki prikazuje rast letno ustvarjenih podatkov v svetu od leta 2013. IDC ocenjuje, da bo letno ustvarjena količina podatkov dosegla 180 Zettabajtov leta 2025!

data-by-2025-hadoop-streaming





Vir: IDC

IBM navaja, da se vsak dan ustvari skoraj 2,5 kvintiljona bajtov podatkov, v zadnjih dveh letih pa 90 odstotkov svetovnih podatkov! Zahtevna naloga je shranjevanje tako obsežne količine podatkov. Hadoop lahko učinkoviteje obravnava velike količine strukturiranih in nestrukturiranih podatkov kot tradicionalno skladišče podatkov podjetja. Te ogromne nabore podatkov shrani v porazdeljene skupine računalnikov. Hadoop Streaming uporablja ogrodje MapReduce, ki ga lahko uporabljamo za pisanje aplikacij za obdelavo ogromnih količin podatkov.



Ker ogrodje MapReduce temelji na Javi, se morda sprašujete, kako lahko razvijalec na njem deluje, če nima izkušenj z Javo. No, razvijalci lahko napišejo aplikacijo mapper / Reducer v svojem priljubljenem jeziku in ne da bi imeli veliko znanja o Javi Hadoop pretakanje namesto da bi prešli na nova orodja ali tehnologije, kot sta Prašič in panj.

Kaj je Hadoop Streaming?

Hadoop Streaming je pripomoček, ki je priložen distribuciji Hadoop. Uporablja se lahko za izvajanje programov za analizo velikih podatkov. Pretakanje Hadoop je mogoče izvajati v jezikih, kot so Python, Java, PHP, Scala, Perl, UNIX in mnogi drugi. Pripomoček nam omogoča, da ustvarimo in zaženemo opravila Map / Reduce s katerim koli izvršljivim programom ali skriptom kot mapper in / ali reduktor. Na primer:

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



-vnesite myInputDirs

-output myOutputDir

-mapa / koš / mačka

-reducer / koš / wc

Parametri Opis:

Koda Python MapReduce:

mapper.py #! / usr / bin / python import sys #Word Count Primer # vnos prihaja iz standardnega vhoda STDIN za vrstico v sys.stdin: line = line.strip () #remove vodilni in zadnji presledek word = line.split ( ) # razdeli vrstico na besede in se vrne kot seznam besed v besedah: # napiši rezultate v standardni izhod STDOUT print '% s% s'% (word, 1) #Emit the word

reducer.py

#! / usr / bin / python import sys from operator import itemgetter # z uporabo slovarja za preslikavo besed na njihovo štetje current_word = Noben current_count = 0 word = Noben # vnos prihaja iz STDIN za vrstico v sys.stdin: line = line.strip () beseda, count = line.split ('', 1) try: count = int (count) razen ValueError: nadaljevanje, če je trenutna beseda == beseda: current_count + = count else: if current_word: print '% s% s'% (current_word, current_count) current_count = count current_word = word if current_word == word: print '% s% s'% (current_word, current_count)

Zaženi:

  1. Ustvarite datoteko z naslednjo vsebino in jo poimenujte word.txt.

Mačji miš levji jelen Tigrov lev Slon lev jelen

  1. Kopirajte skripti mapper.py in reducer.py v isto mapo, kjer obstaja zgornja datoteka.

  1. Odprite terminal in poiščite imenik datoteke.Komanda: ls: seznam vseh datotek v imeniku cd: za spremembo imenika / mape

  1. Oglejte si vsebino datoteke.
    Ukaz: mačka Ime datoteke

> vsebina mapper.py

ukaz: mačka mapper.py

> Vsebina reducer.py

ukaz: mačka reducer.py

Mape in reduktor lahko zaženemo v lokalnih datotekah (npr. Word.txt). Za zagon Zemljevida in zmanjšanje v distribucijskem datotečnem sistemu Hadoop (HDFS) potrebujemo Hadoop Streaming jar. Torej, preden zaženemo skripte na HDFS, jih zaženimo lokalno, da zagotovimo, da dobro delujejo.

> Zaženite zemljevid

ukaz: mačja beseda.txt | python mapper.py

> Zaženite reducer.py

ukaz: mačja beseda.txt | python mapper.py | razvrsti -k1,1 | python reducer.py

Vidimo, da preslikava in reduktor delujeta po pričakovanjih, zato se ne bomo soočali z nobenimi nadaljnjimi težavami.

Zagon Koda Pythona na Hadoopu

Preden zaženemo nalogo MapReduce v Hadoopu, kopirajte lokalne podatke (word.txt) v HDFS

> primer: hdfs dfs -put vir_direktorij hadoop_destination_directory

ukaz: hdfs dfs -put /home/edureka/MapReduce/word.txt / uporabnik / edureka

Kopirajte pot do datoteke jar

Pot Hadoop Streaming jar glede na različico kozarca je:

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

Poiščite kozarec Hadoop Streaming na svojem terminalu in kopirajte pot.

ukaz:

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

Zaženite opravilo MapReduce

ukaz:

kaj je ide v javi

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 ponuja osnovni spletni vmesnik za statistiko in informacije. Ko se gruča Hadoop izvaja, v brskalniku odprite http: // localhost: 50070. Tu je posnetek zaslona spletnega vmesnika Hadoop.

Zdaj prebrskajte datotečni sistem in poiščite ustvarjeno datoteko s številom besed, da si ogledate izhodne podatke. Spodaj je posnetek zaslona.

Izhod na terminalu lahko vidimo s tem ukazom

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

Zdaj ste se naučili, kako izvajati program MapReduce, napisan v Pythonu, s pomočjo Hadoop Streaming!

Edureka ima tečaj Big Data & Hadoop pod vodstvom inštruktorjev, ki so ga soustvarili strokovnjaki iz industrije.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje in se vam bomo javili.