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!
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:
- Ustvarite datoteko z naslednjo vsebino in jo poimenujte word.txt.
Mačji miš levji jelen Tigrov lev Slon lev jelen
- Kopirajte skripti mapper.py in reducer.py v isto mapo, kjer obstaja zgornja datoteka.
- Odprite terminal in poiščite imenik datoteke.Komanda: ls: seznam vseh datotek v imeniku cd: za spremembo imenika / mape
- 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.