Hadoop streaming: Pisanje programa Hadoop MapReduce u Pythonu



Ovaj post na blogu o Hadoop Streamingu korak je po korak kako naučiti pisati program Hadoop MapReduce na Pythonu za obradu ogromnih količina velikih podataka.

Količina digitalnih podataka koji se generiraju svakodnevno eksponencijalno raste pojavom Digitalnih medija, između ostalog i Interneta stvari. Ovaj je scenarij stvorio izazove u stvaranju alata i tehnologija sljedeće generacije za pohranu i manipulaciju tim podacima. Ovdje dolazi Hadoop Streaming! Dolje je dat graf koji prikazuje rast podataka koji se godišnje generiraju u svijetu od 2013. IDC procjenjuje da će količina podataka koji se stvaraju godišnje doseći 180 Zettabytes-a u 2025. godini!

data-by-2025-hadoop-streaming





Izvor: IDC

IBM navodi da se svakodnevno stvara gotovo 2,5 kvintilionskih bajtova podataka, s 90 posto svjetskih podataka stvorenih u posljednje dvije godine! Izazovan je zadatak pohraniti tako opsežnu količinu podataka. Hadoop može učinkovitije rukovati velikim količinama strukturiranih i nestrukturiranih podataka od tradicionalnog skladišta podataka poduzeća. Pohranjuje ove ogromne skupove podataka u distribuiranim skupinama računala. Hadoop Streaming koristi okvir MapReduce koji se može koristiti za pisanje aplikacija za obradu ogromnih količina podataka.



Budući da se okvir MapReduce temelji na Javi, možda se pitate kako programer može raditi na njemu ako nema iskustva s Javom. Pa, programeri mogu pisati aplikaciju mapper / Reducer koristeći svoj preferirani jezik i bez puno znanja o Javi Hadoop streaming umjesto da se prebaci na nove alate ili tehnologije poput svinje i košnice.

Što je Hadoop Streaming?

Hadoop Streaming uslužni je program koji dolazi s Hadoop distribucijom. Može se koristiti za izvršavanje programa za analizu velikih podataka. Hadoop streaming može se izvoditi na jezicima kao što su Python, Java, PHP, Scala, Perl, UNIX i mnogi drugi. Uslužni program omogućuje nam stvaranje i pokretanje poslova Map / Reduce s bilo kojom izvršnom datotekom ili skriptom kao mapper i / ili reduktor. Na primjer:

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



-unesite myInputDirs

-izlaz myOutputDir

-mapa / kanta / mačka

-reducer / kanta / wc

Opis parametara:

Python MapReduce kod:

mapper.py #! / usr / bin / python import sys # Primjer brojanja riječi # ulaz dolazi iz standardnog ulaza STDIN za liniju u sys.stdin: line = line.strip () #ukloni vodeće i prateće razmake riječi = line.split ( ) # podijelite redak na riječi i vratite se kao popis riječi u riječima: # napišite rezultate na standardni izlaz STDOUT ispis '% s% s'% (riječ, 1) #Pusti riječ

reduktor.py

#! / usr / bin / python import sys from operator import itemgetter # pomoću rječnika za mapiranje riječi na njihov broj current_word = None current_count = 0 word = None # ulaz dolazi iz STDIN-a za redak u sys.stdin: line = line.strip () riječ, broji = line.split ('', 1) try: count = int (count) osim ValueError: nastavi ako je current_word == riječ: 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)

Trčanje:

  1. Stvorite datoteku sa sljedećim sadržajem i nazovite je word.txt.

Mačji miš lav jelen Tigar lav Slon lav jelen

razvrstaj popis c ++
  1. Kopirajte skripte mapper.py i reducer.py u istu mapu u kojoj postoji gornja datoteka.

  1. Otvorite terminal i pronađite direktorij datoteke. Naredba: ls: za popis svih datoteka u direktoriju cd: za promjenu direktorija / mape

  1. Pogledajte sadržaj datoteke.
    Naredba: mačka naziv datoteke

> sadržaj mapper.py

naredba: mačka mapper.py

> Sadržaj reducer.py

naredba: mačka reduktor.py

Mape i reduktore možemo pokrenuti na lokalnim datotekama (npr. Word.txt). Da bismo pokrenuli Mapu i smanjili na Hadoop distribuiranom datotečnom sustavu (HDFS), potreban nam je Hadoop Streaming tegla. Dakle, prije nego što pokrenemo skripte na HDFS-u, pokrenimo ih lokalno kako bismo osigurali da rade u redu.

> Pokrenite mapper

naredba: mačka riječ.txt | python mapper.py

> Pokrenite reducer.py

naredba: mačka riječ.txt | python mapper.py | razvrstaj -k1,1 | python reduktor.py

Vidimo da mapper i reduktor rade kako se očekivalo pa se nećemo suočiti s daljnjim problemima.

Pokretanje Python kod na Hadoopu

kako koristiti zapisnik u Java - u

Prije nego što pokrenemo zadatak MapReduce na Hadoopu, kopirajte lokalne podatke (word.txt) na HDFS

> primjer: hdfs dfs -puni izvor_direktorij hadoop_destination_directory

naredba: hdfs dfs -put /home/edureka/MapReduce/word.txt / korisnik / edureka

Kopirajte stazu jar datoteke

Put Hadoop Streaming jar-a na temelju verzije jar-a je:

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

Dakle, pronađite staklenku Hadoop Streaming na vašem terminalu i kopirajte put.

naredba:

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

Pokrenite zadatak MapReduce

naredba:

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 -reduktor reduktor.py -input / user / edureka / word -output / user / edureka / Wordcount

Hadoop nudi osnovno web sučelje za statistiku i informacije. Kada se klaster Hadoop izvodi, otvorite http: // localhost: 50070 u pregledniku. Evo snimke zaslona web sučelja Hadoop.

Sada pregledajte datotečni sustav i pronađite generiranu datoteku s brojem riječi da biste vidjeli izlaz. Ispod je snimak zaslona.

Izlaz na terminalu možemo vidjeti pomoću ove naredbe

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

Sada ste naučili kako izvršiti program MapReduce napisan na Pythonu koristeći Hadoop Streaming!

Edureka ima tečaj uživo o Big Data & Hadoop-u koji vode instruktori, a zajednički su ga kreirali stručnjaci iz industrije.

Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare i javit ćemo vam se.