„Hadoop Streaming“: „Hadoop MapReduce“ programos rašymas „Python“



Šis tinklaraščio įrašas apie „Hadoop Streaming“ yra nuoseklus vadovas, skirtas išmokti rašyti „Hadoop MapReduce“ programą „Python“, norint apdoroti didžiulius didelių duomenų kiekius.

Kiekvieną dieną generuojamų skaitmeninių duomenų kiekis eksponentiškai auga, nes, be kitų pokyčių, atsirado skaitmeninė laikmena, daiktų internetas. Šis scenarijus kėlė iššūkius kuriant naujos kartos įrankius ir technologijas, skirtus šiems duomenims saugoti ir jais manipuliuoti. Čia atsiranda „Hadoop Streaming“! Toliau pateiktas grafikas, kuriame pavaizduotas kasmet pasaulyje generuojamų duomenų augimas nuo 2013 m.

data-by-2025-hadoop-streaming





Šaltinis: IDC

IBM teigia, kad kiekvieną dieną sukuriama beveik 2,5 kvintilijono baitų duomenų, 90 procentų pasaulio duomenų sukurta per pastaruosius dvejus metus! Saugoti tokį didelį duomenų kiekį yra sudėtinga užduotis. „Hadoop“ gali efektyviau tvarkyti didelę struktūrizuotų ir nestruktūrizuotų duomenų kiekį nei tradicinė įmonės duomenų saugykla. Joje saugomi šie milžiniški duomenų rinkiniai paskirstytuose kompiuterių klasteriuose. „Hadoop Streaming“ naudoja „MapReduce“ sistemą, kurią galima naudoti programoms rašyti, norint apdoroti didžiulius duomenų kiekius.



Kadangi „MapReduce“ sistema yra pagrįsta „Java“, jums gali būti įdomu, kaip kūrėjas gali ją dirbti, jei neturi patirties „Java“. Na, kūrėjai gali rašyti žemėlapių kūrimo / reduktoriaus programą naudodami savo pageidaujamą kalbą ir neturėdami daug žinių apie „Java“ „Hadoop“ srautas o ne pereiti prie naujų įrankių ar technologijų, tokių kaip „Pig and Hive“.

Kas yra „Hadoop“ srautas?

„Hadoop Streaming“ yra programa, teikiama kartu su „Hadoop“ platinimu. Jis gali būti naudojamas didelių duomenų analizės programoms vykdyti. „Hadoop“ srautą galima atlikti naudojant tokias kalbas kaip „Python“, „Java“, PHP, „Scala“, „Perl“, UNIX ir daugeliu kitų. Naudingumas leidžia mums sukurti ir paleisti „Map / Reduce“ darbus naudojant bet kurį vykdomąjį failą ar scenarijų kaip žemėlapį ir (arba) reduktorių. Pavyzdžiui:

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



-įveskite myInputDirs

-output myOutputDir

aplankas / šiukšliadėžė / katė

- reduktorius / šiukšliadėžė / wc

Parametrų aprašymas:

„Python MapReduce“ kodas:

mapper.py #! / usr / bin / python import sys #Word Count Pavyzdys # įvestis gaunama iš standartinio įvesties STDIN eilutei sys.stdin: line = line.strip () # Pašalinti priekinius ir galinius tarpus žodžiai = line.split ( ) #padalykite eilutę žodžiais ir grįžkite kaip žodžių žodžiais sąrašas: #rašykite rezultatus į standartinę išvestį STDOUT spausdinti „% s% s“% (word, 1) #Emit žodį

reducer.py

#! / usr / bin / python importuoti sys iš operatoriaus importuoti itemgetter # naudojant žodyną žodžiams susieti su jų skaičiumi current_word = Nėra current_count = 0 žodis = Nėra # įvesties iš STDIN eilutei sys.stdin: line = line.strip () žodis, skaičius = eilutė.split ('', 1) bandymas: skaičius = int (skaičius), išskyrus „ValueError“: tęskite, jei dabartinis_žodis == žodis: dabartinis_skaita + = skaičiuokite dar: jei dabartinis_žodis: spausdinkite „% s% s“% (current_word, current_count) current_count = count current_word = word if current_word == word: spausdinti „% s% s“% (current_word, current_count)

Vykdyti:

  1. Sukurkite failą su tokiu turiniu ir pavadinkite jį word.txt.

Katės pelės liūtas elnias Tigro liūtas Dramblys liūtas elnias

fibonacci serijos programa java
  1. Nukopijuokite mapper.py ir reducer.py scenarijus į tą patį aplanką, kuriame yra aukščiau nurodytas failas.

  1. Atidarykite terminalą ir suraskite failo katalogą. Komanda: ls: išvardyti visus failus kataloge cd: pakeisti katalogą / aplanką

  1. Peržiūrėkite failo turinį.
    Komanda: katė failo pavadinimas

> mapper.py turinys

komanda: cat mapper.py

fibonacci funkcija c ++

> Reducer.py turinys

komanda: katė reducer.py

Vietinius failus (pvz .: word.txt) galime paleisti žemėlapių kūrėją ir reduktorių. Norint paleisti žemėlapį ir sumažinti „Hadoop Distributed File System“ (HDFS), mums reikia „Hadoop Streaming“ indelis. Taigi, prieš paleisdami scenarijus HDFS, paleiskime juos vietoje, kad įsitikintume, jog jie veikia gerai.

> Paleiskite žemėlapį

komanda: katės žodis.txt | python mapper.py

> Vykdyti reducer.py

komanda: katės žodis.txt | python mapper.py | rūšiuoti -k1,1 | pitono reduktorius.py

Matome, kad žemėlapių keitiklis ir reduktorius veikia taip, kaip tikėtasi, todėl daugiau problemų nesusidursime.

Veikia „Python“ kodas „Hadoop“

Prieš vykdydami „MapReduce“ užduotį „Hadoop“, nukopijuokite vietinius duomenis (word.txt) į HDFS

> pavyzdys: hdfs dfs -put source_directory hadoop_distination_directory

komanda: hdfs dfs -put /home/edureka/MapReduce/word.txt / vartotojas / edureka

Nukopijuokite stiklainio failo kelią

„Hadoop Streaming jar“ kelias pagal stiklainio versiją yra:

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

Taigi suraskite „Hadoop Streaming“ indelį savo terminale ir nukopijuokite kelią.

komanda:

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

Paleiskite „MapReduce“ užduotį

komanda:

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

įgyvendinti prioritetinę eilę c ++

„Hadoop“ teikia pagrindinę interneto sąsają statistikai ir informacijai. Kai „Hadoop“ klasteris veikia, naršyklėje atidarykite http: // localhost: 50070. Čia yra „Hadoop“ žiniatinklio sąsajos ekrano kopija.

Dabar naršykite failų sistemą ir suraskite sugeneruotą failą wordcount, kad pamatytumėte išvestį. Žemiau yra ekrano kopija.

Naudodami šią komandą galime pamatyti terminalo išvestį

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

Jūs jau išmokote paleisti „PyRthon“ parašytą „MapReduce“ programą naudodami „Hadoop Streaming“!

„Edureka“ turi tiesioginius ir instruktorių vedamus kursus apie „Big Data & Hadoop“, kuriuos bendrai sukūrė pramonės specialistai.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.