Indholdsfortegnelse:
- Kortfunktionen til store data
- reducer
- Du ønsker ikke at ændre denne indtastningsliste, så du kan bruge den på forskellige måder med nye antagelser og nye data.
Video: Ledger Nano S Tutorial : Setup and Guide (Hardware wallet) 2024
MapReduce er en software ramme, der er ideel til store data, fordi det giver udviklere mulighed for at skrive programmer, der kan behandle massive mængder ustrukturerede data parallelt på tværs af en distribueret gruppe processorer.
Kortfunktionen til store data
Funktionen map har været en del af mange funktionelle programmeringssprog i årevis. Kort er blevet genoplivet som en kerneteknologi til behandling af lister over dataelementer.
Operatører på funktionelle sprog ændrer ikke datastrukturen; de opretter nye datastrukturer som deres output. De oprindelige data er også uændrede. Så du kan bruge kortfunktionen med straffrihed, fordi det ikke vil skade dine dyrebare lagrede data.
En anden fordel ved funktionel programmering behøver ikke udtrykkeligt at styre bevægelsen eller strømmen af dataene. Dette frigiver programmereren fra eksplicit at styre dataudgangen og placeringen. Endelig er ordren for operationerne på dataene ikke foreskrevet.
mylist = ("alle amter i os, der deltog i det seneste valgvalg") > Opret funktionen howManyPeople ved hjælp af kortfunktionen.
Dette vælger kun amterne med mere end 50.000 mennesker: map howManyPeople (mylist) = [howManyPeople "amt 1"; howManyPeople "county 2"; howManyPeople "county 3"; howManyPeople "county 4"; …] Fremstil nu en ny outputliste over alle amter med befolkninger større end 50, 000:
(nej, amt 1; ja, amt 2; nej, amt 3; ja, amt 4;?, Amt nnn)
Funktionen udføres uden at ændre på den oprindelige liste. Derudover kan du se, at hvert element i outputlisten kortlægger et tilsvarende element i inputlisten, med ja eller nej tilsluttet. Hvis amtet har opfyldt kravet på mere end 50.000 mennesker, identificerer kortfunktionen det med et ja. Hvis ikke, er et nej angivet.Tilføj reduceringsfunktionen til store data
Ligesom kortfunktionen,reducer
har været en funktion af funktionelle programmeringssprog i mange år. Reduktionsfunktionen tager udgangen af en kortfunktion og "reducerer" listen på den måde, programmereren ønsker. Det første skridt, som reduceringsfunktionen kræver, er at placere en værdi i noget kaldet en akkumulator, , som har en indledende værdi. Efter opbevaring af en startværdi i akkumulatoren behandler reduktionsfunktionen derefter hvert element i listen og udfører den operation, du har brug for på tværs af listen.
Efter at have kaldt howManyPeople-kortfunktionen, er du tilbage med følgende outputliste:
(nej, amt 1; ja, amt 2; nej, amt 3; ja, amt 4;, amt nnn)Dette er nu input til din reduktionsfunktion. Sådan ser det ud:
countylist = (nej, amt 1; ja, amt 2; nej, amt 3; ja, amt 4;? Amt nnn) reducere isDemocrat (countylist)
reducere funktionsprocesserne hvert element i listen og returnerer en liste over alle amter med en befolkning på over 50.000, hvor flertallet stemte demokratisk.
Sæt det store datakort og reducer sammen
Nogle gange er det kun nok at producere en outputliste. På samme måde er det nogle gange, der udfører operationer på hvert element i en liste. Ofte vil du gennemse store mængder inputdata, vælge bestemte elementer fra dataene og derefter beregne noget af værdi fra de relevante datablade.
Du ønsker ikke at ændre denne indtastningsliste, så du kan bruge den på forskellige måder med nye antagelser og nye data.
Softwareudviklere design applikationer baseret på algoritmer. En
algoritme
er intet mere end en række trin, der skal ske i service til et overordnet mål. Det kan se lidt ud her: Start med et stort antal eller data eller poster. Iterate over dataene.
-
Brug kortfunktionen til at udtrække noget af interesse og oprette en outputliste.
-
Organiser outputlisten for at optimere til videre behandling.
-
Brug reduktionsfunktionen til at beregne et sæt resultater.
-
Fremstil den endelige udgang.
-
Programmører kan implementere alle former for applikationer ved hjælp af denne tilgang, men eksemplerne til dette punkt har været meget enkle, så den reelle værdi af MapReduce er muligvis ikke åbenbar. Hvad sker der, når du har ekstremt store inputdata? Kan du bruge den samme algoritme på terabyte data? Den gode nyhed er ja.
-
Alle operationer virker uafhængige. Det er fordi de er. MapReduces virkelige kraft er evnen til at opdele og erobre. Tag et meget stort problem og knæk det i mindre, mere håndterbare klumper, betjen hver klump uafhængigt og træk det hele sammen i slutningen. Desuden er kortfunktionen kommutativ - med andre ord er ordren, at en funktion udføres, ikke noget.
Så MapReduce kan udføre sit arbejde på forskellige maskiner i et netværk. Det kan også trække fra flere datakilder, internt eller eksternt. MapReduce holder styr på sit arbejde ved at oprette en unik nøgle for at sikre, at al behandling er relateret til at løse det samme problem.Denne nøgle bruges også til at trække alle output sammen i slutningen af alle de distribuerede opgaver.