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!
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:
- Looge järgmise sisuga fail ja andke sellele nimi word.txt.
Kasshiire lõvi hirv Tiigri lõvi Elevant lõvi hirv
- Kopeerige skriptid mapper.py ja reducer.py samasse kausta, kus ülaltoodud fail olemas on.
- Avage terminal ja leidke faili kataloog. Käsu: ls: kõigi kataloogis olevate failide loendamiseks cd: kataloogi / kausta muutmine
- 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.