Hadoop-suoratoisto: Hadoop MapReduce -ohjelman kirjoittaminen Pythonissa



Tämä Hadoop Streaming -blogiviesti on vaiheittainen opas, jolla opitaan kirjoittamaan Hadoop MapReduce -ohjelma Pythonissa käsittelemään suuria määriä Big Data -tietoja.

Päivittäin tuotettavan digitaalisen datan määrä kasvaa räjähdysmäisesti muun muassa digitaalisen median, esineiden internetin myötä. Tämä skenaario on herättänyt haasteita uuden sukupolven työkalujen ja tekniikoiden luomisessa näiden tietojen tallentamiseen ja käsittelyyn. Tässä tulee sisään Hadoop Streaming! Alla on kaavio, joka kuvaa vuosittain tuotettujen tietojen kasvua maailmassa vuodesta 2013. IDC arvioi, että vuosittain luotavan datan määrä saavuttaa 180 zettatavua vuonna 2025!

data-by-2025-hadoop-streaming





Lähde: IDC

IBM ilmoittaa, että joka päivä syntyy lähes 2,5 kvintillionia tavua tietoja, joista 90 prosenttia maailman tiedoista on luotu kahden viime vuoden aikana! Tällaisen suuren määrän tietojen tallentaminen on haastava tehtävä. Hadoop pystyy käsittelemään suuria määriä strukturoitua ja jäsentämätöntä dataa tehokkaammin kuin perinteinen yritystietovarasto. Se tallentaa nämä valtavat tietojoukot hajautettuihin tietokonejoukkoihin. Hadoop Streaming käyttää MapReduce-kehystä, jota voidaan käyttää sovellusten kirjoittamiseen valtavan määrän tietojen käsittelyä varten.



Koska MapReduce-kehys perustuu Java-ohjelmaan, saatat miettiä, kuinka kehittäjä voi työskennellä sen kanssa, jos hänellä ei ole kokemusta Java-ohjelmasta. Kehittäjät voivat kirjoittaa mapper / Reducer -sovelluksen haluamallaan kielellä ja ilman paljon Java-tuntemusta Hadoop-suoratoisto pikemminkin kuin siirtyminen uusiin työkaluihin tai tekniikoihin, kuten Pig and Hive.

Mikä on Hadoop-suoratoisto?

Hadoop Streaming on Hadoop-jakelun mukana tuleva apuohjelma. Sitä voidaan käyttää ohjelmien suorittamiseen isojen tietojen analysointia varten. Hadoop-suoratoisto voidaan suorittaa käyttämällä kieliä, kuten Python, Java, PHP, Scala, Perl, UNIX ja monia muita. Apuohjelman avulla voimme luoda ja suorittaa Map / Reduce-töitä millä tahansa suoritettavalla tiedostolla tai komentosarjalla kartoittajana ja / tai supistimena. Esimerkiksi:

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



-syöttää myInputDirs

-output myOutputDir

-kansio / bin / cat

-pienennin / bin / wc

Parametrit Kuvaus:

Python MapReduce -koodi:

mapper.py #! / usr / bin / python import sys #Word Count Esimerkki # input tulee vakiosyötteestä STDIN riville sys.stdin: line = line.strip () #poista johtavat ja jäljessä olevat välilyönnit words = line.split ( ) #jaka rivi sanoiksi ja palaa luettelona sanalle sanoille: # kirjoita tulokset vakiolähtöön STDOUT tulosta '% s% s'% (sana, 1) # lähetä sana

java-komentosarja ponnahdusikkuna

reducer.py

#! / usr / bin / python tuo sys operaattorista Tuo itemgetter # sanakirjan avulla sanojen kartoittamiseksi heidän lukumäärään current_word = Ei mitään current_count = 0 sana = Ei mitään # syötettä tulee STDIN: stä riville sys.stdin: line = line.strip () sana, count = rivi.split ('', 1) yritä: count = int (count) paitsi ValueError: jatka, jos current_word == sana: current_count + = laske muu: if current_word: tulosta '% s% s'% (current_word, current_count) current_count = count current_word = sana jos current_word == sana: tulosta '% s% s'% (current_word, current_count)

Juosta:

  1. Luo tiedosto, jonka sisältö on seuraava, ja nimeä se word.txt-tiedostoksi.

Kissa hiiren leijonahirvi Tiger leijona Elephant leijonan peura

  1. Kopioi mapper.py- ja reducer.py-komentosarjat samaan kansioon, jossa yllä oleva tiedosto on.

  1. Avaa pääte ja etsi tiedoston hakemisto Komento: ls: luetteloi kaikki tiedostot hakemistossa cd: vaihtaa hakemistoa / kansiota

  1. Katso tiedoston sisältö.
    Komento: kissa Tiedoston nimi

> mapper.py: n sisältö

komento: kissa mapper.py

> Reducer.py -sisältö

komento: kissa reducer.py

Voimme käyttää mapperia ja reduktoria paikallisissa tiedostoissa (esim. Word.txt). Tarvitsemme kartan ajamiseksi ja vähentämiseksi Hadoop Distributed File System (HDFS) -järjestelmässä Hadoop-suoratoistopurkki. Joten ennen kuin suoritamme komentosarjoja HDFS: llä, ajetaan ne paikallisesti varmistaaksemme, että ne toimivat hyvin.

> Suorita kartoitin

kuinka asettaa luokkatie Java-käyttöjärjestelmään Windows 10: ssä

komento: kissa sana.txt | python mapper.py

> Suorita reducer.py

komento: kissa sana.txt | python mapper.py | lajittele -k1,1 | python reducer.py

Voimme nähdä, että kartoitin ja vähennysventtiili toimivat odotetulla tavalla, joten emme kohta enää muita ongelmia.

Käynnissä Python-koodi Hadoopissa

Ennen kuin suoritamme MapReduce-tehtävän Hadoopissa, kopioi paikalliset tiedot (word.txt) HDFS: ään

> esimerkki: hdfs dfs -put lähdekansio hadoop_kohde_hakemisto

komento: hdfs dfs -put /home/edureka/MapReduce/word.txt / käyttäjä / edureka

Kopioi purkitiedoston polku

Hadoop Streaming -purkin polku purkkiversioon perustuen on:

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

Joten etsi Hadoop-suoratoistopurkki päätelaitteestasi ja kopioi polku.

komento:

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

Suorita MapReduce-työ

lopulta lopullinen ja viimeistellä Java

komento:

hadoop-purkki /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 tarjoaa perusverkkoliittymän tilastoille ja tiedoille. Kun Hadoop-klusteri on käynnissä, avaa selaimessa http: // localhost: 50070. Tässä on kuvakaappaus Hadoop-verkkokäyttöliittymästä.

Selaa nyt tiedostojärjestelmää ja etsi tuotettu wordcount-tiedosto nähdäksesi tulosteen. Alla on kuvakaappaus.

Näemme päätelaitteen lähdön tämän komennon avulla

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

Olet nyt oppinut suorittamaan Pythonissa kirjoitetun MapReduce-ohjelman Hadoop Streaming -ohjelmalla!

Edurekalla on live-ohjaajien johtama Big Data & Hadoop -kurssi, jonka ovat luoneet alan ammattilaiset.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.