Streamovanie Hadoop: Písanie programu Hadoop MapReduce v Pythone



Tento blogový príspevok o streamovaní Hadoop je podrobným sprievodcom, ktorý sa naučí písať program Hadoop MapReduce v Pythone na spracovanie obrovského množstva veľkých dát.

Množstvo digitálnych údajov generovaných každý deň exponenciálne rastie s nástupom digitálnych médií, internetu vecí a ďalších vývojových trendov. Tento scenár priniesol výzvy pri vytváraní nástrojov a technológií novej generácie na ukladanie a manipuláciu s týmito údajmi. To je miesto, kde prichádza Hadoop Streaming! Nižšie je uvedený graf, ktorý zobrazuje rast každoročne generovaných dát vo svete od roku 2013. IDC odhaduje, že množstvo ročne vytvorených dát dosiahne v roku 2025 180 Zettabytov!

data-by-2025-hadoop-streaming





Zdroj: IDC

IBM uvádza, že každý deň sa vytvorí takmer 2,5 kvintiliónu bajtov údajov, pričom 90 percent svetových údajov sa vytvorí za posledné dva roky! Uložiť také rozsiahle množstvo dát je náročná úloha. Hadoop dokáže spracovať veľké objemy štruktúrovaných a neštruktúrovaných údajov efektívnejšie ako tradičný podnikový dátový sklad. Uchováva tieto obrovské množiny údajov naprieč distribuovanými klastrami počítačov. Streamovanie Hadoop využíva rámec MapReduce, ktorý je možné použiť na písanie aplikácií na spracovanie obrovského množstva údajov.



Pretože rámec MapReduce je založený na Jave, možno by vás zaujímalo, ako na ňom môže vývojár pracovať, ak nemá skúsenosti s Javou. Vývojári teda môžu písať aplikácie mapovače / reduktory pomocou svojho preferovaného jazyka a bez znalosti jazyka Java Streamovanie pomocou Hadoop namiesto prechodu na nové nástroje alebo technológie, ako sú Pig and Hive.

Čo je streamovanie Hadoop?

Hadoop Streaming je nástroj dodávaný s distribúciou Hadoop. Môže sa použiť na vykonávanie programov na analýzu veľkých dát. Streamovanie pomocou Hadoop je možné vykonávať v jazykoch ako Python, Java, PHP, Scala, Perl, UNIX a mnoho ďalších. Tento nástroj nám umožňuje vytvárať a spúšťať úlohy Mapovania / Redukcie pomocou ľubovoľného spustiteľného programu alebo skriptu ako mapovača a / alebo reduktora. Napríklad:

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



-input myInputDirs

-výstup myOutputDir

-priečinok / kôš / kat

-redukcia / zásobník / wc

Popis parametrov:

Kód Python MapReduce:

mapper.py #! / usr / bin / python import sys # počet slov príklad # vstup pochádza zo štandardného vstupu STDIN pre riadok v sys.stdin: line = line.strip () #remove a trailing whitespaces words = line.split ( ) # rozdeliť riadok na slová a vrátiť sa ako zoznam pre slovo v slovách: # výsledky napísať na štandardný výstup STDOUT tlač '% s% s'% (slovo, 1) #Vypustiť slovo

reducer.py

#! / usr / bin / python import sys z operátora import itemgetter # použitie slovníka na mapovanie slov na ich počty current_word = žiadny current_count = 0 word = žiadny # vstup pochádza z STDIN pre riadok v sys.stdin: line = line.strip () word, count = line.split ('', 1) try: count = int (count) except ValueError: continue if current_word == word: current_count + = count else: if current_word: print '% s% s'% (current_word, current_count) current_count = počet current_word = slovo, ak current_word == slovo: tlač '% s% s'% (current_word, current_count)

previesť dvojité na celé číslo v jave

Spustiť:

  1. Vytvorte súbor s nasledujúcim obsahom a pomenujte ho word.txt.

Mačka myš lev jeleň Tiger lev Slon lev jeleň

  1. Skopírujte skripty mapper.py a reducer.py do rovnakého priečinka, v ktorom existuje vyššie uvedený súbor.

  1. Otvorte terminál a vyhľadajte adresár súboru. Príkaz: ls: zoznam všetkých súborov v adresári cd: zmena adresára / priečinka

  1. Zobraziť obsah súboru.
    Príkaz: kat názov súboru

> obsah mapper.py

príkaz: cat mapper.py

> Obsah reducer.py

príkaz: kat reducer.py

Môžeme spustiť mapovač a redukciu na miestne súbory (napr. Word.txt). Na spustenie mapy a redukciu na Hadoop Distributed File System (HDFS) potrebujeme Streamovacia nádoba Hadoop. Skôr ako teda spustíme skripty na HDFS, spustime ich lokálne, aby sme sa uistili, že fungujú dobre.

> Spustite mapovač

príkaz: mačacie slovo.txt | python mapper.py

> Spustite reducer.py

príkaz: mačacie slovo.txt | python mapper.py | triediť -k1,1 | python reducer.py

Vidíme, že mapovač a reduktor fungujú podľa očakávania, takže už nebudeme čeliť ďalším problémom.

Prevádzka Pythonský kód na Hadoop

program série Fibonacci v Jave

Predtým, ako spustíme úlohu MapReduce na Hadoop, skopírujte lokálne dáta (word.txt) do HDFS

> príklad: hdfs dfs -put zdrojovy_adresar hadoop_destination_directory

príkaz: hdfs dfs -put /home/edureka/MapReduce/word.txt / užívateľ / edureka

Skopírujte cestu k súboru jar

Cesta nádoby Hadoop Streaming založenej na verzii nádoby je:

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

Nájdite teda na svojom termináli nádobu na streamovanie Hadoop a skopírujte cestu.

príkaz:

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

Spustite úlohu MapReduce

príkaz:

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

získajte veľkosť poľa javascript

Hadoop poskytuje základné webové rozhranie pre štatistiku a informácie. Keď je klaster Hadoop spustený, otvorte v prehliadači http: // localhost: 50070. Tu je screenshot webového rozhrania Hadoop.

Teraz prehľadajte súborový systém a nájdite vygenerovaný súbor slov, aby ste videli výstup. Nižšie je uvedený screenshot.

Pomocou tohto príkazu môžeme vidieť výstup na termináli

príkaz: hadoop fs -cat / user / edureka / Wordcount / part-00000

Teraz ste sa naučili, ako spustiť program MapReduce napísaný v Pythone pomocou streamovania Hadoop!

Edureka má živý a inštruktorom vedený kurz Big Data & Hadoop, ktorý spolu vytvorili odborníci v odbore.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov a my sa vám ozveme.