Innholdsfortegnelse:
- Kortfunksjonen for store data
- Som kartfunksjonen,
- Noen ganger produserer en utgangsliste bare nok. På samme måte er det noen ganger nok å utføre operasjoner på hvert element i en liste. Ofte vil du se gjennom store mengder inngangsdata, velge visse elementer fra dataene, og deretter beregne noe av verdi fra de relevante dataene.
Video: Elite Dangerous Finding Stellar Phenomena 2025
MapReduce er en programvare ramme som er ideell for store data fordi det gjør det mulig for utviklere å skrive programmer som kan behandle massive mengder ustrukturert data parallelt over en distribuert gruppe prosessorer.
Kortfunksjonen for store data
Funksjonen map har vært en del av mange funksjonelle programmeringsspråk i mange år. Kartet er gjenopplivet som en kjerneteknologi for behandling av lister over dataelementer.
Operatører på funksjonelle språk endrer ikke strukturen til dataene; de lager nye datastrukturer som deres produksjon. De opprinnelige dataene er uendret også. Så du kan bruke kartfunksjonen med straffrihet fordi det ikke vil skade dine dyrebare lagrede data.
En annen fordel for funksjonell programmering er ikke å måtte eksplisitt styre bevegelsen eller strømmen av dataene. Dette frigjør programmereren fra eksplisitt å administrere datautgang og plassering. Endelig er rekkefølgen av operasjonene på dataene ikke foreskrevet.
En måte å oppnå løsningen på er å identifisere inntastingsdataene og lage en liste:
mylist = ("alle fylker i oss som deltok i det siste generalvalg") > Lag funksjonen howManyPeople ved hjelp av kartfunksjonen
. Dette velger bare fylkene med mer enn 50 000 personer: kart howManyPeople (mylist) = [howManyPeople "fylke 1"; howManyPeople "fylke 2"; howManyPeople "fylke 3"; howManyPeople "fylke 4"; …]
Lag nå en ny utgangsliste over alle fylkene med populasjoner over 50 000:
Funksjonen utføres uten å gjøre noen endringer i den opprinnelige listen. I tillegg kan du se at hvert element i utgangslisten kartlegger et tilsvarende element i inntastingslisten, med ja eller nei vedlagt. Hvis fylket har møtt kravet til mer enn 50 000 personer, identifiserer kartfunksjonen det med ja. Hvis ikke, er et nei angitt.
Som kartfunksjonen,
redusere har det vært mange funksjoner i funksjonelle programmeringsspråk i mange år. Reduksjonsfunksjonen tar utgangen av en kartfunksjon og "reduserer" listen på hvilken måte programmereren ønsker. Det første trinnet som reduksjonsfunksjonen krever, er å plassere en verdi i noe som kalles en
akkumulator , som har en innledende verdi. Etter lagring av en startverdi i akkumulatoren behandler reduksjonsfunksjonen hvert element i listen og utfører operasjonen du trenger over listen.
Anta at du må identifisere fylkene hvor flertallet av stemmerne var for den demokratiske kandidaten. Husk at your howManyPeople-kartfunksjonen så på hvert element i inntastingslisten og opprettet en utføringsliste over fylkene med mer enn 50 000 mennesker (ja) og fylkene med mindre enn 50 000 personer (nei).
(nei, fylke 1; ja, fylke 2; nei, fylke 3; ja, fylke 4;, fylke nnn)
Dette er nå inngangen for reduseringsfunksjonen. Her ser det ut som:
countylist = (nei, fylke 1; ja, fylke 2; nei, fylke 3; ja, fylke 4;?, Fylke nnn) redusere isDemocrat (countylist)
Redusere funksjonsprosessene hvert element i listen og returnerer en liste over alle fylker med en befolkning på over 50 000, hvor flertallet stemte demokratisk.
Sette det store datakartet og redusere sammen
Noen ganger produserer en utgangsliste bare nok. På samme måte er det noen ganger nok å utføre operasjoner på hvert element i en liste. Ofte vil du se gjennom store mengder inngangsdata, velge visse elementer fra dataene, og deretter beregne noe av verdi fra de relevante dataene.
Du vil ikke endre denne inntastingslisten, slik at du kan bruke den på forskjellige måter med nye forutsetninger og nye data.
Programvareutviklere designer applikasjoner basert på algoritmer. En
algoritme er ikke noe mer enn en rekke trinn som må skje i tjeneste til et overordnet mål. Det kan se litt ut som dette: Start med et stort antall eller data eller poster.
-
Iterate over dataene.
-
Bruk kartfunksjonen til å trekke ut noe av interesse og opprette en utgangsliste.
-
Organiser outputlisten for å optimalisere for videre behandling.
-
Bruk reduseringsfunksjonen til å beregne et sett med resultater.
-
Lag den endelige utgangen.
-
Programmører kan implementere alle typer applikasjoner ved hjelp av denne tilnærmingen, men eksemplene til dette punktet har vært veldig enkle, så den virkelige verdien av MapReduce er kanskje ikke tydelig. Hva skjer når du har ekstremt store inngangsdata? Kan du bruke samme algoritme på data terabytes? Den gode nyheten er ja.
Alle operasjonene virker uavhengige. Det er fordi de er. MapReduces virkelige kraft er evnen til å dele og erobre. Ta et veldig stort problem og bryte det inn i mindre, mer håndterbare biter, operer på hver bit uavhengig av hverandre, og trekk alt sammen på slutten. Videre er kartfunksjonen kommutativ - med andre ord, ordren som en funksjon utføres, spiller ingen rolle.
Så MapReduce kan utføre sitt arbeid på forskjellige maskiner i et nettverk. Det kan også trekke fra flere datakilder, internt eller eksternt. MapReduce holder oversikt over sitt arbeid ved å skape en unik nøkkel for å sikre at all behandling er relatert til å løse det samme problemet.Denne nøkkelen brukes også til å trekke alle utgangene sammen på slutten av alle distribuerte oppgaver.
