Hadoop straumēšana: Hadoop MapReduce programmas rakstīšana Python



Šis emuāra ziņojums par Hadoop straumēšanu ir soli pa solim, lai iemācītos rakstīt Hadoop MapReduce programmu Python, lai apstrādātu milzīgu daudzumu lielu datu.

Katru dienu ģenerēto digitālo datu daudzums eksponenciāli pieaug, parādoties digitālajiem plašsaziņas līdzekļiem, lietu internetam un citiem notikumiem. Šis scenārijs ir radījis izaicinājumus, veidojot nākamās paaudzes rīkus un tehnoloģijas šo datu glabāšanai un manipulēšanai. Šeit ienāk Hadoop Streaming! Zemāk redzams grafiks, kas attēlo ik gadu ģenerēto datu pieaugumu pasaulē no 2013. gada. IDC lēš, ka gadā izveidoto datu apjoms 2025. gadā sasniegs 180 Zetabaitus!

data-by-2025-hadoop-streaming





Avots: IDC

IBM norāda, ka katru dienu tiek radīti gandrīz 2,5 kvintiljoni baitu datu, 90% pasaules datu ir izveidoti pēdējos divos gados! Saglabāt tik plašu datu apjomu ir sarežģīts uzdevums. Hadoop var efektīvāk apstrādāt lielu daudzumu strukturētu un nestrukturētu datu nekā tradicionālā uzņēmuma datu noliktava. Tas glabā šīs milzīgās datu kopas izplatītajos datoru kopos. Hadoop Streaming izmanto MapReduce sistēmu, kuru var izmantot, lai rakstītu lietojumprogrammas, lai apstrādātu milzīgu datu daudzumu.



Tā kā MapReduce ietvara pamatā ir Java, jūs varētu domāt, kā izstrādātājs var strādāt ar to, ja viņam / viņai nav pieredzes Java. Izstrādātāji var rakstīt mapper / Reducer lietojumprogrammu, izmantojot vēlamo valodu un bez daudz zināšanu par Java Hadoop straumēšana nevis pāriet uz jauniem rīkiem vai tehnoloģijām, piemēram, Pig and Hive.

Kas ir Hadoop straumēšana?

Hadoop Streaming ir utilīta, kas nāk ar Hadoop izplatīšanu. To var izmantot, lai izpildītu programmas lielo datu analīzei. Hadoop straumēšanu var veikt, izmantojot tādas valodas kā Python, Java, PHP, Scala, Perl, UNIX un daudzas citas. Lietderība ļauj mums izveidot un palaist Map / Reduce darba vietas, izmantojot jebkuru izpildāmo failu vai skriptu kā kartētāju un / vai reduktoru. Piemēram:

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



-ievadiet myInputDirs

-output myOutputDir

-mape / tvertne / kaķis

-reduktors / bin / wc

Parametru apraksts:

Python MapReduce kods:

mapper.py #! / usr / bin / python import sys #Word Count Piemērs # ievade nāk no standarta ievades STDIN līnijai sys.stdin: line = line.strip () #noņemt aiz un aiz atstarpes atstarpes words = line.split ( ) # sadalīt rindu vārdos un atgriezties kā vārdu vārdu vārdiem: # ierakstiet rezultātus standarta izvadā STDOUT drukāt '% s% s'% (vārds, 1) #Emit vārdu

reducer.py

#! / usr / bin / python importē sys no operatora importēt itemgetter #, izmantojot vārdnīcu, lai attēlotu vārdus viņu skaitam current_word = Nav current_count = 0 word = Neviens # ievade nāk no STDIN rindai sys.stdin: line = line.strip () vārds, skaits = līnija.split ('', 1) mēģiniet: skaits = int (skaits), izņemot ValueError: turpiniet, ja pašreizējais_vārds == vārds: pašreizējais_skaitījums + = skaits cits: ja pašreizējais_vārds: drukāt '% s% s'% (pašreizējais_vārds, pašreizējais_skaitlis) pašreizējais_skaitījums = skaits pašreizējais_vārds = vārds, ja pašreizējais_vārds == vārds: drukāt '% s% s'% (pašreizējais_vārds, pašreizējais_skaitlis)

Palaist:

  1. Izveidojiet failu ar šādu saturu un nosauciet to word.txt.

Kaķu peles lauvas briedis Tīģera lauva Ziloņu lauvas briedis

  1. Nokopējiet mapper.py un reducer.py skriptus tajā pašā mapē, kur atrodas iepriekš minētais fails.

  1. Atveriet termināli un atrodiet faila direktoriju. Komanda: ls: visu direktorijā esošo failu uzskaitīšana cd: lai mainītu direktoriju / mapi

  1. Skatiet faila saturu.
    Komanda: kaķis faila nosaukums

> mapper.py saturs

komanda: cat mapper.py

> Reducer.py saturs

komanda: kaķis reducer.py

Vietējos failos (piemēram: word.txt) mēs varam palaist kartētāju un reduktoru. Lai palaistu karti un samazinātu Hadoop izplatīto failu sistēmu (HDFS), mums ir nepieciešams Hadoop straumēšanas burka. Tāpēc, pirms skriptus palaidām HDFS, palaidīsim tos lokāli, lai nodrošinātu, ka tie darbojas labi.

> Palaidiet kartētāju

komanda: kaķu vārds.txt | python mapper.py

> Palaist reducer.py

komanda: kaķu vārds.txt | python mapper.py | kārtot -k1,1 | python reducer.py

Mēs varam redzēt, ka kartētājs un reduktors darbojas, kā paredzēts, tāpēc mēs nesaskarsimies ar citām problēmām.

Darbojas Python kods uz Hadoop

Pirms palaidām MapReduce uzdevumu Hadoop, kopējiet vietējos datus (word.txt) uz HDFS

> piemērs: hdfs dfs -put source_directory hadoop_destination_directory

komanda: hdfs dfs -put /home/edureka/MapReduce/word.txt / lietotājs / edureka

Kopējiet burka faila ceļu

Hadoop Streaming jar ceļš, pamatojoties uz burkas versiju, ir:

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

Tātad atrodiet Hadoop Streaming jar savā terminālā un kopējiet ceļu.

komanda:

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

Palaidiet MapReduce darbu

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

Hadoop nodrošina pamata tīmekļa saskarni statistikai un informācijai. Kad Hadoop kopa darbojas, pārlūkprogrammā atveriet vietni http: // localhost: 50070. Šeit ir Hadoop tīmekļa saskarnes ekrānuzņēmums.

Tagad pārlūkojiet failu sistēmu un atrodiet ģenerēto vārdu skaita failu, lai redzētu izvadi. Zemāk ir ekrānuzņēmums.

kas ir java java

Izmantojot šo komandu, mēs varam redzēt termināla izvadi

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

Tagad jūs esat iemācījies izpildīt programmu PyRthon rakstītu MapReduce programmu, izmantojot Hadoop Streaming!

Edurekā ir tiešraides un instruktoru vadīti kursi par Big Data & Hadoop, kurus kopīgi izveidojuši nozares praktiķi.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies.