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!
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:
- 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
- Másolja a mapper.py és a reducer.py parancsfájlokat ugyanabba a mappába, ahol a fenti fájl létezik.
- 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
- 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.