Hadoopi voogesitus: programmi Hadoop MapReduce kirjutamine Pythonis



See Hadoopi voogesituse ajaveebipostitus on samm-sammuline juhend, kuidas õppida Pythonis Hadoop MapReduce programmi kirjutama, et töödelda tohutult suuri andmeid.

Iga päev genereeritavate digitaalsete andmete hulk kasvab hüppeliselt, muu hulgas on digitaalse meedia, asjade Interneti kasutuselevõtt. See stsenaarium on tekitanud väljakutseid järgmise põlvkonna tööriistade ja tehnoloogiate loomisel nende andmete salvestamiseks ja manipuleerimiseks. Siit tuleb Hadoopi voogesitus! Allpool on toodud graafik, mis näitab igal aastal maailmas genereeritavate andmete kasvu alates 2013. aastast. IDC hinnangul ulatub igal aastal loodud andmete hulk 2025. aastal 180 zettabaiti!

data-by-2025-hadoop-streaming





Allikas: IDC

IBM teatab, et iga päev luuakse peaaegu 2,5 kvintiljonit baiti andmeid, 90 protsenti maailma andmetest on loodud viimase kahe aasta jooksul! Sellise ulatusliku andmemahu salvestamine on keeruline ülesanne. Hadoop suudab suures koguses struktureeritud ja struktureerimata andmeid tõhusamalt käsitseda kui traditsiooniline ettevõtte andmeladu. See salvestab need tohutud andmekogumid jaotatud arvutiklastrite vahel. Hadoop Streaming kasutab MapReduce raamistikku, mida saab kasutada rakenduste kirjutamiseks tohutu hulga andmete töötlemiseks.



Kuna MapReduce raamistik põhineb Java-l, võite mõelda, kuidas saab arendaja sellega töötada, kui tal pole Java-kogemust. Arendajad saavad kirjutada kaardistaja / reduktori rakenduse oma eelistatud keeles ja ilma Java-teadmisteta Hadoopi voogesitus selle asemel, et minna üle uutele tööriistadele või tehnoloogiatele nagu Pig and Hive.

Mis on Hadoopi voogesitus?

Hadoopi voogesitus on Hadoopi jaotusega kaasnev utiliit. Seda saab kasutada programmide käivitamiseks suurandmete analüüsiks. Hadoopi voogesitust saab kasutada selliste keelte abil nagu Python, Java, PHP, Scala, Perl, UNIX ja palju muud. Utiliit võimaldab meil luua ja käivitada Map / Reduce töökohti mis tahes käivitatava faili või skriptiga, nagu kaardistaja ja / või reduktor. Näiteks:

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



mis on java tostringu meetod

-sisend myInputDirs

-väljund myOutputDir

-kaust / prügikast / kass

-reduktor / bin / wc

Parameetrite kirjeldus:

Pythoni MapReduce kood:

mapper.py #! / usr / bin / python impordib sys #Word Count Näide # sisend pärineb sys.stdin rea reast sisendist STDIN: line = line.strip () # eemaldage ees ja taga olevad tühikud sõnad = line.split ( ) #jaotage rida sõnadeks ja naaseb sõnade loendina: #kirjutage tulemused standardsesse väljundisse STDOUT print '% s% s'% (sõna, 1) #Emit

reducer.py

#! / usr / bin / python impordib sys operaatorist impordib itemgetter # sõnastiku abil sõnade vastendamiseks nende arvudele current_word = puudub praegune_arv = 0 sõna = Puudub # sisend pärineb STDIN-st reale sys.stdin: line = line.strip () sõna, arv = rida.split ('', 1) proovige: loota = int (loota), välja arvatud ValueError: jätkake, kui praegune_sõna == sõna: praegune_arv + + arv veel: kui praegune_sõna: printige '% s% s'% (current_word, current_count) current_count = count current_word = sõna if current_word == sõna: print '% s% s'% (current_word, current_count)

Käivita:

  1. Looge järgmise sisuga fail ja andke sellele nimi word.txt.

Kasshiire lõvi hirv Tiigri lõvi Elevant lõvi hirv

  1. Kopeerige skriptid mapper.py ja reducer.py samasse kausta, kus ülaltoodud fail olemas on.

  1. Avage terminal ja leidke faili kataloog. Käsu: ls: kõigi kataloogis olevate failide loendamiseks cd: kataloogi / kausta muutmine

  1. Vaadake faili sisu.
    Käsk: kass faili nimi

> mapper.py sisu

käsk: kass mapper.py

> Reducer.py sisu

käsk: kass reducer.py

Saame käitada mapperit ja reduktorit kohalikes failides (nt: word.txt). Kaardi käitamiseks ja Hadoopi hajutatud failisüsteemi (HDFS) vähendamiseks vajame Hadoopi voogesituspurk. Nii et enne skriptide käitamist HDFS-is käivitame need kohapeal, et tagada nende hea töö.

> Käivitage kaardistaja

käsk: kassi sõna.txt | python mapper.py

> Käitage reduktorit.py

käsk: kassi sõna.txt | python mapper.py | sorteeri -k1,1 | python reducer.py

Näeme, et kaardistaja ja reduktor töötavad ootuspäraselt, nii et me ei puutu kokku täiendavate probleemidega.

Running Pythoni kood Hadoopil

Enne MapReduce'i ülesande käivitamist Hadoopil kopeerige kohalikud andmed (word.txt) HDFS-i

> näide: hdfs dfs -put source_directory hadoop_sihtkataloog

käsk: hdfs dfs -put /home/edureka/MapReduce/word.txt / kasutaja / edureka

Kopeerige purkfaili tee

Hadoopi voogesituse purgi tee põhineb purgi versioonil:

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

Nii et leidke oma terminalist Hadoop Streaming purk ja kopeerige tee.

käsk:

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

Käivitage MapReduce töö

käsk:

hadoop purk /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 pakub statistika ja teabe jaoks veebi põhiliidest. Kui Hadoopi klaster töötab, avage brauseris aadress http: // localhost: 50070. Siin on Hadoopi veebiliidese ekraanipilt.

Sirvige nüüd failisüsteemi ja leidke väljundi nägemiseks loodud Wordcount-fail. Allpool on ekraanipilt.

Selle käsu abil näeme terminali väljundit

käsk: hadoop fs -cat / user / edureka / Wordcount / part-00000

Nüüd olete õppinud, kuidas käivitada Pythonis kirjutatud MapReduce programm Hadoopi voogesituse abil!

Edurekal on reaalajas ja juhendajate juhitud kursus Big Data & Hadoop kohta, mille on loonud ka tööstuse praktikud.

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.