Hadoop Streaming: Hadoop MapReduce program írása Pythonban



Ez a Hadoop Streamingről szóló blogbejegyzés lépésről-lépésre segít megtanulni Hadoop MapReduce programot írni Python-ban nagy mennyiségű Big Data feldolgozásához.

A mindennap generált digitális adatok mennyisége exponenciálisan növekszik, a digitális média, a tárgyak internetének megjelenésével együtt. Ez a forgatókönyv kihívásokat vetett fel az új generációs eszközök és technológiák létrehozásában az adatok tárolására és kezelésére. Itt jön be a Hadoop Streaming! Az alábbiakban egy olyan grafikon látható, amely a világon 2013-tól évente generált adatok növekedését mutatja be. Az IDC becslései szerint az évente létrehozott adatok mennyisége eléri a 180 zettabájtot 2025-ben!

data-by-2025-hadoop-streaming





Forrás: IDC

Az IBM kijelenti, hogy naponta csaknem 2,5 kvintillió bájtnyi adat jön létre, a világ adatainak 90 százaléka az elmúlt két évben jött létre! Ilyen kiterjedt mennyiségű adat tárolása kihívást jelentő feladat. A Hadoop nagy mennyiségű strukturált és strukturálatlan adatot képes hatékonyabban kezelni, mint a hagyományos vállalati adattárház. Ezeket az óriási adathalmazokat az elosztott számítógépfürtökön tárolja. A Hadoop Streaming a MapReduce keretrendszert használja, amely felhasználható alkalmazások írására nagy mennyiségű adat feldolgozására.



Mivel a MapReduce keretrendszer Java-alapú, elgondolkodhat azon, hogy egy fejlesztő hogyan tud rajta dolgozni, ha nincs tapasztalata a Java-ban. Nos, a fejlesztők írhatnak mapper / Reducer alkalmazást az általuk preferált nyelv használatával, és anélkül, hogy sok Java ismerettel rendelkeznének Hadoop közvetítés ahelyett, hogy új eszközökre vagy technológiákra váltanának, mint például a Pig és a Hive.

hogyan készítsünk tömb objektumot a java-ban

Mi az a Hadoop Streaming?

A Hadoop Streaming egy segédprogram, amely a Hadoop disztribúcióval érkezik. Használható programok nagy adatok elemzésére. A Hadoop streaming olyan nyelvek segítségével hajtható végre, mint a Python, a Java, a PHP, a Scala, a Perl, a UNIX és még sok más. A segédprogram lehetővé teszi számunkra a Map / Reduce feladatok létrehozását és futtatását bármilyen futtatható vagy szkript segítségével, mint leképező és / vagy csökkentő. Például:

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



-input myInputDirs

-output myOutputDir

-mappa / kuka / kat

-reduktor / bin / wc

Paraméterek Leírás:

Python MapReduce Code:

mapper.py #! / usr / bin / python import sys #Word Count Példa # bemenet az STDIN szabványos bemenetről származik a sys.stdin sorhoz: line = line.strip () #remove and posting whitespaces words = line.split ( ) # ossza szét a sort szavakra és térjen vissza szavak listájaként: #írja az eredményeket a normál kimenetre. STDOUT nyomtassa ki:% s% s '% (word, 1) #Emit

reduktor.py

#! / usr / bin / python importál sys-t az operátorból importálja az itemgetter # szótár segítségével szavakat hozzárendelhet számukra current_word = Nincs current_count = 0 szó = Nincs # input az STDIN-ből származik a sys.stdin sorhoz: line = line.strip () word, count = line.split ('', 1) try: count = int (count) ValueError kivételével: folytassa, ha current_word == szó: current_count + = további szám: if current_word: nyomtassa '% s% s'% (current_word, current_count) current_count = count current_word = word if current_word == word: '% s% s'% (current_word, current_count) nyomtatása

Fuss:

  1. Hozzon létre egy fájlt a következő tartalommal és nevezze el word.txt néven.

Macska egér oroszlán szarvas Tigris oroszlán Elefánt oroszlán szarvas

  1. Másolja a mapper.py és a reducer.py parancsfájlokat ugyanabba a mappába, ahol a fenti fájl létezik.

  1. Nyissa meg a terminált, és keresse meg a fájl könyvtárát. Parancs: ls: az összes fájl felsorolása a könyvtárban cd: könyvtár / mappa megváltoztatása

  1. Tekintse meg a fájl tartalmát.
    Parancs: macska fájl név

> a mapper.py tartalma

a munkagépek és a kiterjesztések közötti különbség

parancs: macska mapper.py

> A reducer.py tartalma

parancs: macska reduktor.py

Futtathatjuk a mappert és a reduktort a helyi fájlokon (pl: word.txt). A Map futtatásához és a Hadoop Distributed File System (HDFS) csökkentéséhez szükségünk van a Hadoop Streaming jar. Tehát mielőtt a parancsfájlokat HDFS-en futtatnánk, futtassuk őket helyben, hogy biztosan jól működjenek.

> Futtassa a térképkészítőt

parancs: macska szó.txt | python mapper.py

> Futtassa a reducer.py fájlt

parancs: macska szó.txt | python mapper.py | sort -k1,1 | python reducer.py

Láthatjuk, hogy a térképkészítő és a reduktor a várakozásoknak megfelelően működik, így további problémákkal nem kell szembenéznünk.

A Python kód a Hadoopon

Mielőtt futtatnánk a MapReduce feladatot a Hadoopon, másolja a helyi adatokat (word.txt) a HDFS-be

> példa: hdfs dfs -put forrás_könyvtár hadoop_cél_könyvtár

parancs: hdfs dfs -put /home/edureka/MapReduce/word.txt / user / edureka

Másolja a jar fájl elérési útját

A Hadoop Streaming jar elérési útja a jar verziója alapján:

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

Tehát keresse meg a terminálon a Hadoop Streaming edényt, és másolja az utat.

parancs:

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

Futtassa a MapReduce feladatot

parancs:

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

A Hadoop egy alapvető webes felületet biztosít a statisztikákhoz és információkhoz. Amikor a Hadoop-fürt fut, nyissa meg a http: // localhost: 50070 böngészőben. Itt található a Hadoop webes felület képernyőképe.

Most keresse meg a fájlrendszert, és keresse meg a létrehozott wordcount fájlt a kimenet megtekintéséhez. Az alábbiakban látható a képernyőkép.

Ezzel a paranccsal láthatjuk a kimenetet a terminálon

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

Most megtanulta, hogyan hajthat végre egy Pythonban írt MapReduce programot a Hadoop Streaming segítségével!

hogyan lehet dupla int-re dobni java-ban

Az Edurekának van egy élő és oktató által vezetett tanfolyama a Big Data & Hadoop-ról, amelyet iparági szakemberek hoztak létre.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és mi kapcsolatba lépünk Önnel.