MapReduce ontwerp patrone - 'n Kort inleiding

featured_img

MapReduce ontwerpspatrone

Oorsig: Ontwerp patroon is nou 'n algemene term wat gebruik word in feitlik alle gebiede van die ontwikkeling van sagteware. Patrone is niks anders as 'n bewys en getoets ontwerp tegnieke wat gebruik word om sake op te los. MapReduce is 'n nuwe tegnologie domein en dit het ook sy eie ontwerp patrone om data berekening kwessies op te los.

In this article, Ek sal praat oor verskillende ontwerp patrone wat in MapReduce raamwerk.

Inleiding: Kaart te verminder, is gebruik om data wat woonagtig is op 'n aantal rekenaars verwerk. Dit bied duidelike en eiesoortige grense tussen wat ons kan en wat ons kan nie. Dit maak die aantal opsies wat ons nodig het om te oorweeg, mindere. At the same time, ons kan uitvind hoe om 'n probleem met beperkings op te los. Ontwerp patrone is getoets vir baie probleme van tyd tot tyd en die regte vlak van abstraksie het getoon.

MapReduce ontwerp patrone beset dieselfde rol in 'n kleiner ruimte van probleme en oplossings. Hulle bied 'n algemene raamwerk vir ons data berekening kwessies op te los, sonder konsentreer op die probleem domein. MapReduce ontwerp patrone bied ook 'n gemeenskaplike taal vir spanne saam te werk op MapReduce aansoeke.

MapReduce ontwerp patroon: Laat ons nou verskillende ontwerp bespreek benaderings een vir een in die volgende afdeling.

berekening:

Probleemstelling - Kom ons kyk na wat ons het 'n stapel dokumente waar elke dokument bevat 'n versameling van terme. Nou het ons 'n vereiste om die aantal voorkomste van elke kwartaal te bereken in die dokument.

oplossing - In die volgende kode uit het ons 'n Mapper wat eenvoudig rekords '1' vir elke kwartaal dit ontmoetings. Die reducer hier deurkruis die hele lys van sulke kinders, som dit op en produseer die gevolg.

Listing 1: Berekening van Kode - 1

[Code]

klas Mapper

metode Kaart(DocId ID, d doc)

vir al termyn t in Dok D doen

Uitstraal(termyn t, reken 1)

klas Reducer

metode Verminder(termyn t, tel [C1, C2,…])

tel = 0

vir alle Telling c in [C1, C2,…] doen

tel = tel + c

Uitstraal(termyn t, tel tel)

[/Code]

hoewel eenvoudig, maar die bogenoemde kode het 'n duidelike nadeel dat 'n hoë bedrag van dummy tellers uitgestraal word deur die Mapper. Nou kan ons hierdie verminder deur die WHALM tellers vir elke dokument.

Listing 2: Berekening van Kode - 2

[Code]

klas Mapper

metode Kaart(DocId ID, d doc)

HArray = nuwe AssociativeArray

vir al termyn t in Dok D doen

HArray{t} = HArray{t} + 1

vir al termyn t in HArray doen

Uitstraal(termyn t, tel HArray{t})

[/Code]

Now, ten einde die tellers vir al die dokumente laat die combiners versamel -

Listing 3: Berekening van Kode - 3

[Code]

klas Mapper

metode Kaart(DocId ID, d doc)

vir al termyn ter in Dok D doen

Uitstraal(termyn ter, reken 1)

klas combiner

metode Kombineer(termyn ter, [C1, C2,…])

som = 0

vir alle telling tel in [C1, C2,…] doen

som = som + tel

Uitstraal(termyn t, reken som)

klas Reducer

metode Verminder(termyn t, tel [C1, C2,…])

totalCnt = 0

vir alle telling tel in [C1, C2,…] doen

totalCnt = totalCnt + tel

Uitstraal(termyn t, tel totalCnt)

[/Code]

versamel:

Probleemstelling -

Ons het 'n stel van items en 'n paar funksie van 'n paar items. Dit is nou nodig om al die items wat dieselfde waarde van funksie te red of te verrig 'n ander berekening wat al sulke items vereis in 'n groep te verwerk.

oplossing -

Ons het die oplossing waar die kartograaf bere die gegewe funksie vir elke item en gee terug Die waarde van die funksie as 'n belangrike en die item as die waarde daarvan. Die rol van die reducer is om al die gegroepeer items haal en dit te verwerk of stoor dit.

Filtering (grep), Ontleding en Validation:

Probleemstelling -

Kom ons kyk na wat ons het 'n stel van rekords en die vereiste is om al die rekords wat aan 'n voorwaarde in te samel of hierdie rekords te omskep in 'n ander voorstelling formate. Die tweede deel van die probleem sluit take soos - teks ontleding en ontginning van die waardes.

oplossing -

Oplossing vir hierdie probleem is baie reguit vorentoe - ons het 'n kartograaf wat een rekord neem op 'n tyd en gee die items wat aan die kriteria voldoen.

Versprei taakuitvoering:

Probleemstelling -

Kom ons kyk na wat ons het 'n groot computational probleem wat kan verdeel word in verskeie dele en resultate van al hierdie dele moet gekombineer word ten einde die finale uitslag te verkry.

oplossing -

Oplossing vir hierdie probleem is om die spesifikasies te verdeel in 'n stel van spesifikasies wat as insette data vir die mappers gestoor. Elkeen van hierdie mappers neem een ​​spesifikasie op 'n tyd as invoer data en prosesse hulle en produseer die resultate. Die werk van die reducer is om al hierdie resultate kombineer en produseer die finale uitslag.

Iteratiewe Boodskap Slaag:

Probleemstelling -

Kom ons kyk na wat ons het 'n netwerk van entiteite en daar bestaan ​​'n verhouding tussen hulle. Ons is verplig om die toestand van elke entiteit wat gebaseer is op die eiendom van ander entiteit in die buurt te bereken. Hierdie toedrag kan gebruik word om 'n afstand na ander nodes wat 'n aanduiding is dat daar 'n buurman met sekere eienskappe en kenmerke verteenwoordig.

oplossing -

Ons het 'n netwerk wat 'n stel van knope slaan en elke node bevat die inligting van 'n lys van aangrensende node ID's. konseptueel, die MapReduce werk verrig in iteratiewe wyse en op elke iterasie die knoop stuur boodskappe na sy bure. En dan elke buurman werk sy toestand op grond van die boodskap wat ontvang word. Hierdie iterasies beëindig deur 'n paar toestand Bv. vaste maksimale aantal iterasies. From the technical point of view, die Mapper gee die boodskappe vir elke node met behulp van die ID van die aangrensende node as 'n belangrike. As a result, al hierdie boodskappe is gegroepeer deur die inkomende knoop en vandaar die reducer in staat is om die staat te herbereken en herskryf die knoop met die nuwe staat.

Listing 4: Iteratiewe boodskappe verbygaande

[Code]

klas Mapper

metode Kaart(ID nes, beswaar NObj)

Uitstraal(ID nes, beswaar NObj)

vir al ID middel in NObj.OutgoingRelations doen

Uitstraal(id middel, boodskap getMessage(NObj))

klas Reducer

metode Verminder(id m, [s1, S2,…])

M = null

boodskappe = []

vir alle s in [s1, S2,…] doen

As IsObject(s) dan

M = s

else // s is 'n boodskap

messages.add(s)

M.State = calculateState(boodskappe)

Uitstraal(id m, item M)

[/Code]

Breedte Eerste Soek (Dit is 'n gevallestudie):

Probleemstelling -

Kom ons kyk na ons 'n grafiek en dit is wat nodig is om die afstand van een bron node bereken vir alle ander teenwoordig is in die grafiek knope. Dit staan ​​ook bekend as die aantal hoep.

oplossing -

Die oplossing kan wees, eerste die bron node straal 0 om al sy bure. Toe die bure propageer hierdie toonbank na die verhoog deur 1 vir elke hop.

kenmerkende Waardes:

Probleemstelling -

Kom ons kyk na wat ons het 'n stel van rekords wat velde M en N bevat. Die vereiste is om die totale aantal unieke waardes van die veld M tel vir elke onderafdeling van dieselfde Groep N.

oplossing -

Die oplossing vir hierdie probleem kan in twee fases word. In die eerste fase, die kartograaf produseer dummy tellers vir elke paar M en N. Dan tel die reducer die totale aantal kere dat elke paar. Die doel van hierdie fase is om uniekheid van M waardes te handhaaf. In die tweede fase, pare gegroepeer deur N en die totale aantal items word bereken vir elke groep.

Summary: In hierdie artikel het ons bespreek verskillende ontwerp benaderings wat algemeen gebruik word om data berekening kwessies op te los. MapReduce ontwerp patrone word voortdurend veranderende, so ons sal sien meer ontwerp benaderings in die nabye toekoms. Kom ons som ons bespreking in volgende 'bullets' –

  • Kaart te verminder, is gebruik om data wat woonagtig is op 'n gasheer van rekenaars verwerk.
  • Ontwerp patrone word gebruik om probleme op te los.
  • Sommige algemeen gebruik MapReduce ontwerp patrone gelys onder -
    • Berekening - tel en optel
    • versamel
    • Filter Parsing en Validation
    • Versprei taakuitvoering
    • Iteratiewe boodskap verbygaan
    • Breedte Eerste Soek
    • kenmerkende Soek

 

 

 

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share