Hvad er MapReduce i Hadoop? ArchiTekstur og diagram

โšก Smart opsummering

MapReduce er Hadoop-programmeringsmodellen, der omdanner et stort datasรฆt til et lille resultat ved at kรธre en map-funktion over hver inputopdeling og derefter en reduce-funktion over de grupperede mellemvรฆrdier.

  • ๐Ÿ”˜ Fire faser: Hvert job kรธrer som opdeling, kortlรฆgningping, blandning og reduktion, med nรธgle-vรฆrdi-par, der flyder mellem hvert trin.
  • โ˜‘๏ธ Udarbejdet eksempel: Tre tekstlinjer bliver til syv ord, der viser prรฆcis, hvad hver fase bidrager med.
  • โœ… Opdelt stรธrrelse: ร‰n kortopgave kรธrer pr. inputopdeling, og opdelingsstรธrrelsen matcher normalt HDFS-blokstรธrrelsen.
  • ๐Ÿงช Mellemliggende data: Kortoutput skrives til en lokal disk i stedet for HDFS, fordi replikering af engangsdata er spild af data.
  • ๐Ÿ› ๏ธ Samordning: Et arbejdeTracker planlรฆgger arbejde og opgaverTracPatienter rapporterer fremskridt gennem periodiske hjerteslagssignaler.
  • โš ๏ธ Versionsnotat: YARN erstattede dette par med en ResourceManager, NodeManagers og en ApplicationMaster per job fra Hadoop 2.x.

MapReduce-arkitektur i Hadoop forklaret med et eksempel

Hvad er MapReduce i Hadoop?

MapReduce er et softwareframework og en programmeringsmodel, der bruges til at behandle enorme mรฆngder data. MapReduce-programmer fungerer i to faser, nemlig Map og Reduce. Map-opgaver omhandler opdeling og kortlรฆgning.ping af data, mens Reducer opgaver blandes og reducer dataene.

Hadoop er i stand til at kรธre MapReduce-programmer skrevet pรฅ forskellige sprog: Java, Rubin, Pythonog C++MapReduce-programmer er parallelle af natur, sรฅ de er meget nyttige til at udfรธre storstilet dataanalyse ved hjรฆlp af flere maskiner i klyngen.

Inputtet til hver fase er nรธgle-vรฆrdi-par. Derudover skal hver programmรธr specificere to funktioner: en map-funktion og en reduce-funktion.

KortReducer Architecture i Big Data forklaret med eksempel

Hele processen gennemgรฅr fire udfรธrelsesfaser, nemlig opdeling, kortlรฆgningping, blandning og reduktion.

I denne MapReduce-vejledning vil vi forstรฅ det med et MapReduce-eksempel.

Forestil dig at du har fรธlgende inputdata til din MapReduce i Big data program:

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

Diagrammet nedenfor tracfรธrer disse tre linjer gennem hver fase, fra inputopdelingerne til venstre til de endelige ordtรฆllinger til hรธjre.

MapReduce-arkitekturdiagram tractre inputlinjer gennem opdeling, kortlรฆgningping, blande og reducere

Det endelige output af MapReduce-opgaven er

dรฅrlig 1
Klasse 1
godt 1
Hadoop 3
is 2
til 1
Velkommen! 1

Dataene gennemgรฅr fรธlgende faser i MapReduce i Big Data.

Inputopdelinger

Input til et MapReduce-job i Big Data er opdelt i dele med fast stรธrrelse kaldet inputopdelinger. En inputopdeling er en del af inputtet, der forbruges af et enkelt kort.

Kortping

Dette er den allerfรธrste fase i udfรธrelsen af โ€‹โ€‹et MapReduce-program. I denne fase sendes data i hver opdeling til et kort.ping funktion til at producere outputvรฆrdier. I vores eksempel er opgaven med kortetping Fasen er at tรฆlle antallet af forekomster af hvert ord fra inputopdelingerne (flere detaljer om inputopdelinger findes nedenfor) og udarbejde en liste i form af .

shuffling

Denne fase forbruger outputtet fra kortetping fase. Dens opgave er at konsolidere de relevante poster fra kortetping faseoutput. I vores eksempel er de samme ord sat sammen sammen med deres respektive frekvens.

Reduktion

I denne fase aggregeres outputvรฆrdier fra blandefasen. Denne fase kombinerer vรฆrdier fra blandefasen og returnerer en enkelt outputvรฆrdi. Kort sagt opsummerer denne fase det komplette datasรฆt.

I vores eksempel aggregerer denne fase vรฆrdierne fra blandefasen, dvs. den beregner det samlede antal forekomster af hvert ord.

KortReducer Architecture forklaret i detaljer

Punkterne nedenfor forklarer, hvordan opdelinger, kortlรฆgningsopgaver og reduktionsopgaver rent faktisk placeres og gemmes pรฅ tvรฆrs af klyngen.

  • Der oprettes รฉn kortopgave for hver opdeling, som derefter udfรธrer kortfunktionen for hver post i opdelingen.
  • Det er altid fordelagtigt at have flere opdelinger, fordi den tid, det tager at behandle en opdeling, er kort sammenlignet med den tid, det tager at behandle hele inputtet. Nรฅr opdelingerne er mindre, er behandlingen bedre belastningsafbalanceret, da opdelingerne behandles parallelt.
  • Det er dog heller ikke รธnskeligt at have for smรฅ opdelinger. Nรฅr opdelingerne er for smรฅ, begynder overheaden ved at administrere opdelingerne og oprette kortopgaver at dominere den samlede jobudfรธrelsestid.
  • For de fleste job er det bedre at gรธre splittens stรธrrelse lig med stรธrrelsen af โ€‹โ€‹en HDFS blok, som som standard er 128 MB fra Hadoop 2.x og fremefter (den var 64 MB i Hadoop 1.x) og styres af dfs.blocksize ejendom.
  • Udfรธrelse af kortopgaver resulterer i at output skrives til en lokal disk pรฅ den respektive node og ikke til HDFS.
  • Grunden til at vรฆlge lokal disk frem for HDFS er at undgรฅ den replikering, der finder sted under en HDFS-lagringsoperation.
  • Kortoutput er mellemoutput, som behandles ved at reducere opgaver for at producere det endelige output.
  • Nรฅr jobbet er fรฆrdigt, kan kortoutputtet smides vรฆk. Sรฅ at gemme det i HDFS med replikering bliver overkill.
  • I tilfรฆlde af knudefejl, fรธr kortoutputtet forbruges af reduktionsopgaven, kรธrer Hadoop kortopgaven igen pรฅ en anden node og genskaber kortoutputtet.
  • Reduce-opgaver fungerer ikke ud fra konceptet om datalokalitet. Output fra hver kortopgave sendes til reduce-opgaven. Kortoutput overfรธres til den maskine, hvor reduce-opgaven kรธrer.
  • Pรฅ denne maskine flettes outputtet og sendes derefter til den brugerdefinerede reduktionsfunktion.
  • I modsรฆtning til map-outputtet gemmes reduce-outputtet i HDFS (den fรธrste replika gemmes pรฅ den lokale node, og andre replikaer gemmes pรฅ off-rack-noder). Sรฅ skrivning af reduce-outputtet forbruger netvรฆrksbรฅndbredde, men kun sรฅ meget som en normal HDFS-skrivepipeline bruger.

Hvordan fungerer MapReduce Organizes?

I denne MapReduce-vejledning vil vi lรฆre, hvordan MapReduce fungerer.

Hadoop opdeler jobbet i opgaver. Der er to typer opgaver:

  1. Kortopgaver (Opdelinger og kort)ping)
  2. Reducer opgaver (omrokering, reduktion)

Den komplette udfรธrelsesproces, dvs. udfรธrelsen af โ€‹โ€‹bรฅde Kort- og Reducรฉr-opgaverne, styres af to typer enheder kaldet:

  1. JobTracker: fungerer som en mester og er ansvarlig for den komplette udfรธrelse af et indsendt job.
  2. Flere opgaverTrackers: opfรธrer sig som slaver, hvor hver af dem udfรธrer en del af jobbet.

For hvert job, der indsendes til udfรธrelse i systemet, er der รฉt jobTracker, der ligger pรฅ NameNode, og der er flere opgaverTrackers, der ligger pรฅ DataNodes.

Bemรฆrk: jobbetTracker og opgaveTracker-parret tilhรธrer MapReduce version 1 (Hadoop 1.x). Fra Hadoop 2.x og fremefter opdeler YARN disse opgaver mellem en klyngeomfattende ResourceManager, en NodeManager pรฅ hver node og รฉn ApplicationMaster pr. job, selvom selve map-, shuffle- og reduce-faserne er uรฆndrede.

Diagrammet nedenfor viser, hvordan et indsendt job er opdelt i opgaver og tracked pรฅ tvรฆrs af klyngen.

Diagram, der viser et job opdelt i kort og reduceret opgaver tracked af JobbetTracker og opgaveTrackirsebรฆr

  • Et job er opdelt i flere opgaver, som derefter kรธres pรฅ flere dataknuder i en klynge.
  • Det er jobbets ansvar tracker til at koordinere aktiviteten ved at planlรฆgge opgaver til at kรธre pรฅ forskellige dataknuder.
  • Udfรธrelsen af โ€‹โ€‹en individuel opgave varetages derefter af opgaven tracker, som findes pรฅ hver datanude, der udfรธrer en del af jobbet.
  • Opgaven tracarbejdsgiverens ansvar er at sende statusrapporten til arbejdsgiveren tracker.
  • Derudover er opgaven tracker sender periodisk et 'hjerteslag'-signal til JobTracfor at underrette den om systemets aktuelle tilstand.
  • Sรฅledes jobbet tracker holder track af den samlede status for hvert job. I tilfรฆlde af opgavefejl, jobbet tracker kan omplanlรฆgge den til en anden opgave tracker.

Ofte Stillede Spรธrgsmรฅl

YARN gjorde det, fra Hadoop 2.x og fremefter. En klyngeomfattende ResourceManager hรฅndterer planlรฆgning, en NodeManager kรธrer pรฅ hver node, og รฉn ApplicationMaster pr. job. tracudfรธrer sine opgaver. Kortlรฆgnings- og reduktionsfaserne er uรฆndrede.

Modeller, der er trรฆnet pรฅ tidligere jobhistorik, forudsiger kรธrselstid, anbefaler opdelte stรธrrelser og reduceringsantal og registrerer skรฆvhed tidligt. De overvรฅger ogsรฅ tรฆllervรฆrdier og markerer usรฆdvanligt langsomme eller fejlende job, fรธr en kรธrsel afsluttes.

Copilot hรฅndterer scaffoldingen godt: mapper- og reducer-signaturer, generiske applikationer, import og driverkonfigurationskald. Skemabeslutninger, sรฅsom hvilket felt der er gruppenping nรธgle, har stadig brug for en udvikler, der kender dataene.

Et almindeligt udgangspunkt er en smule under antallet af tilgรฆngelige reduce-slots, sรฅ hver reducer kรธrer i รฉn bรธlge. For fรฅ skaber lange haler; for mange producerer mange smรฅ outputfiler.

En combiner er en valgfri mini-reducer, der kรธrer pรฅ kortoutput, fรธr den krydser netvรฆrket. Den reducerer shuffle-trafik kraftigt, men den mรฅ kun bruges, nรฅr reduce-operationen er bรฅde associativ og kommutativ.

Spark gemmer mellemresultater i hukommelsen og udtrykker et job som en รฉnrettet graf af stadier, hvorimod MapReduce skriver mellemliggende output til disk mellem faser. Spark er derfor langt hurtigere til iterativt arbejde.

Partitioneringsvรฆrktรธjet bestemmer, hvilken reducer der modtager hver mellemliggende nรธgle, og hasher som standard nรธglen modulo efter reducerantallet. En brugerdefineret hash skrives, nรฅr den hash efterlader en enkelt reducer overbelastet.

Hadoop opretter รฉn kortopgave pr. inputopdeling, og en opdeling er et byteinterval snarere end en hel fil. ร‰n stor fil giver mange opdelinger; mange smรฅ filer giver bittesmรฅ, ineffektive kortopgaver.

Opsummer dette indlรฆg med: