Množství digitálních dat generovaných každý den exponenciálně roste s příchodem digitálních médií, internetu věcí mezi další vývoj. Tento scénář dal vzniknout výzvám při vytváření nástrojů a technologií nové generace pro ukládání a manipulaci s těmito daty. To je místo, kde přichází Hadoop Streaming! Níže je uveden graf, který zachycuje růst ročně generovaných dat ve světě od roku 2013. IDC odhaduje, že množství ročně vytvářených dat dosáhne v roce 2025 180 Zettabytů!
Zdroj: IDC
IBM uvádí, že každý den se vytvoří téměř 2,5 kvintilionu bajtů dat, přičemž 90 procent světových dat se vytvořilo za poslední dva roky! Je to náročný úkol ukládat takové obrovské množství dat. Hadoop dokáže zpracovat velké objemy strukturovaných a nestrukturovaných dat efektivněji než tradiční podnikový datový sklad. Ukládá tyto obrovské datové sady napříč distribuovanými klastry počítačů. Streamování Hadoop využívá rámec MapReduce, který lze použít k psaní aplikací pro zpracování obrovského množství dat.
Vzhledem k tomu, že rámec MapReduce je založen na Javě, možná vás zajímá, jak na ní může vývojář pracovat, pokud nemá zkušenosti s Javou. Vývojáři mohou psát aplikace mapovač / reduktor pomocí svého preferovaného jazyka a bez znalosti jazyka Java pomocí Streamování Hadoop místo přechodu na nové nástroje nebo technologie, jako je Pig and Hive.
Co je Hadoop Streaming?
Hadoop Streaming je nástroj dodávaný s distribucí Hadoop. Lze jej použít k provádění programů pro analýzu velkých dat. Streamování Hadoop lze provádět pomocí jazyků jako Python, Java, PHP, Scala, Perl, UNIX a mnoho dalších. Nástroj nám umožňuje vytvářet a spouštět úlohy Map / Reduce s libovolným spustitelným programem nebo skriptem jako mapovač a / nebo reduktor. Například:
$ HADOOP_HOME / bin / hadoop jar $ HADOOP_HOME / hadoop-streaming.jar
-input myInputDirs
-výstup myOutputDir
-složka / koš / kat
-redukce / zásobník / wc
Popis parametrů:
Kód Python MapReduce:
mapper.py #! / usr / bin / python import sys #Word Count Příklad # vstup pochází ze standardního vstupu STDIN pro řádek v sys.stdin: line = line.strip () #remove a trailing whitespaces words = line.split ( ) # rozdělit řádek na slova a vrátit se jako seznam slov ve slovech: # zapsat výsledky na standardní výstup STDOUT print '% s% s'% (word, 1) #Emit the word
reducer.py
#! / usr / bin / python import sys z operátoru import itemgetter # pomocí slovníku k mapování slov na jejich počty current_word = žádný current_count = 0 word = žádný # vstup pochází z STDIN pro řádek 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 = count current_word = word if current_word == word: print '% s% s'% (current_word, current_count)
najít největší prvek v poli java
Běh:
- Vytvořte soubor s následujícím obsahem a pojmenujte ho word.txt.
Kočičí myš lev jelen Tygr lev Slon lev jelen
- Zkopírujte skripty mapper.py a reducer.py do stejné složky, kde existuje výše uvedený soubor.
- Otevřete terminál a vyhledejte adresář souboru. Příkaz: ls: seznam všech souborů v adresáři cd: změna adresáře / složky
- Podívejte se na obsah souboru.
Příkaz: kat název souboru
> obsah mapper.py
příkaz: cat mapper.py
> Obsah reducer.py
příkaz: kat reducer.py
Můžeme spustit mapovač a redukci na místní soubory (např. Word.txt). Abychom mohli spustit Mapu a redukovat ji na Hadoop Distributed File System (HDFS), potřebujeme Streamovací nádoba Hadoop. Než tedy spustíme skripty na HDFS, spustíme je lokálně, abychom se ujistili, že fungují dobře.
> Spusťte mapovač
příkaz: kočičí word.txt | python mapper.py
> Spustit reducer.py
příkaz: kočičí word.txt | python mapper.py | třídit -k1,1 | python reducer.py
Vidíme, že mapovač a redukce fungují podle očekávání, takže již nebudeme čelit dalším problémům.
Spuštění Pythonský kód na Hadoopu
vysvětlete rozdíl mezi proměnlivými a neměnnými objekty.
Před spuštěním úlohy MapReduce na Hadoopu zkopírujte místní data (word.txt) do HDFS
> příklad: hdfs dfs -put zdrojový_adresář hadoop_destination_directory
příkaz: hdfs dfs -put /home/edureka/MapReduce/word.txt / uživatel / edureka
Zkopírujte cestu souboru jar
Cesta nádoby Hadoop Streaming založená na verzi nádoby je:
/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar
Vyhledejte tedy na terminálu nádobu Hadoop Streaming a cestu zkopírujte.
příkaz:
ls /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar
Spusťte úlohu MapReduce
pří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
rozdíl mezi přetížením a přepsáním v jazyce C ++
Hadoop poskytuje základní webové rozhraní pro statistiky a informace. Když běží cluster Hadoop, otevřete v prohlížeči http: // localhost: 50070. Zde je snímek obrazovky webového rozhraní Hadoop.
Nyní procházejte souborový systém a vyhledejte vygenerovaný soubor wordcount, abyste viděli výstup. Níže je snímek obrazovky.
Pomocí tohoto příkazu můžeme vidět výstup na terminálu
příkaz: hadoop fs -cat / user / edureka / Wordcount / part-00000
Nyní jste se naučili, jak spustit program MapReduce napsaný v Pythonu pomocí Hadoop Streaming!
Edureka má živý a instruktorský kurz Big Data & Hadoop, který společně vytvořili odborníci z oboru.
Máte na nás dotaz? Uveďte to prosím v sekci komentáře a my se vám ozveme.