Innehållsförteckning:
- Kortfunktionen för stora data
- Liksom kartfunktionen,
- Ibland producerar en utmatningslista bara tillräckligt. På samma sätt är det ibland tillräckligt med operationer på varje element i en lista. Ofta vill du titta igenom stora mängder inmatningsdata, välja vissa element från data och sedan beräkna något av värde från relevanta data.
Video: Kenneth Cukier: Big data is better data 2025
MapReduce är en programvara ram som är idealisk för stora data eftersom det gör det möjligt för utvecklare att skriva program som kan bearbeta massiva mängder ostrukturerad data parallellt över en distribuerad grupp processorer.
Kortfunktionen för stora data
Funktionen map har varit en del av många funktionella programmeringsspråk i flera år. Kartan har nyinvesterats som en kärnteknik för behandling av listor med dataelement.
Operatörer på funktionella språk ändrar inte datastrukturen; de skapar nya datastrukturer som deras produktion. De ursprungliga uppgifterna är också omodifierade. Så du kan använda kartfunktionen med straffrihet eftersom det inte kommer att skada din värdefulla lagrade data.
En annan fördel med funktionell programmering behöver inte uttryckligen hantera dataens rörelse eller flöde. Detta frigör programmeraren från att explicit hantera datautgången och placeringen. Slutligen är ordningen för operationerna på data inte föreskriven.
Ett sätt att uppnå lösningen är att identifiera ingångsdata och skapa en lista:
mylist = ("alla län i oss som deltog i det senaste allmänna valet") > Skapa funktionen hurManyPeople använder kartfunktionen
. Detta väljer endast län med mer än 50 000 personer: karta howManyPeople (mylist) = [howManyPeople "county 1"; howManyPeople "county 2"; howManyPeople "county 3"; howManyPeople "county 4"; …]
Skapa nu en ny produktionslista över alla län med befolkningar över 50 000:
Funktionen exekveras utan att göra några ändringar i den ursprungliga listan. Dessutom kan du se att varje element i utmatningslistan kartlägger ett motsvarande element i inmatningslistan, med ja eller nej bifogad. Om länet har uppfyllt kravet på mer än 50 000 personer identifierar kartfunktionen det med ett ja. Om inte, anges nej.
Liksom kartfunktionen,
minska har funnits funktionella programmeringsspråk i många år. Reduktionsfunktionen tar utgången från en kartfunktion och "reducerar" listan på vilket sätt programmeraren önskar. Det första steget som reduceringsfunktionen kräver är att placera ett värde i något som kallas en
ackumulator , som har ett initialvärde. Efter lagring av ett startvärde i ackumulatorn bearbetar reduceringsfunktionen varje element i listan och utför den operation du behöver över listan.
Antag att du måste identifiera länen där majoriteten av rösterna var för den demokratiska kandidaten. Kom ihåg att din howManyPeople-kartfunktion tittade på varje element i inmatningslistan och skapade en uttagslista över länen med mer än 50 000 personer (ja) och länen med mindre än 50 000 personer (nej).
(nej, län 1; ja, län 2; nej, län 3; ja, län 4;, län nnn)
Detta är nu ingången för din reduceringsfunktion. Här ser du hur det ser ut:
countylist = (nej, län 1, ja, län 2, nej, län 3; ja, län 4;?, Län nnn) minska isDemocrat (countylist)
Minska funktionsprocesserna varje element i listan och returnerar en lista över alla län med en befolkning över 50 000, där majoriteten röstade demokratiska.
Sätta den stora datakartan och minska tillsammans
Ibland producerar en utmatningslista bara tillräckligt. På samma sätt är det ibland tillräckligt med operationer på varje element i en lista. Ofta vill du titta igenom stora mängder inmatningsdata, välja vissa element från data och sedan beräkna något av värde från relevanta data.
Du vill inte ändra den ingående listan så att du kan använda den på olika sätt med nya antaganden och nya data.
Programutvecklare utformar applikationer baserade på algoritmer. En
-algoritm är inget annat än en rad steg som måste uppstå i tjänsten till ett övergripande mål. Det kan se lite ut så här: Börja med ett stort antal eller data eller poster.
-
Iterera över data.
-
Använd kartfunktionen för att extrahera något av intresse och skapa en utdatarlista.
-
Ordna utmatningslistan för att optimera för vidare bearbetning.
-
Använd reduceringsfunktionen för att beräkna en uppsättning resultat.
-
Producera slutprodukten.
-
Programmerare kan implementera alla typer av applikationer med hjälp av detta tillvägagångssätt, men exemplen till denna punkt har varit mycket enkla, så det verkliga värdet av MapReduce kanske inte är uppenbart. Vad händer när du har extremt stora inmatningsdata? Kan du använda samma algoritm på data terabytes? Den goda nyheten är ja.
Alla verksamheter verkar oberoende. Det är för att de är. MapReduces verkliga kraft är förmågan att dela och erövra. Ta ett mycket stort problem och bryta det i mindre, mer hanterbara bitar, arbeta på varje bit självständigt och dra sedan allt ihop i slutet. Dessutom är kartfunktionen kommutativ - med andra ord, den ordning som en funktion utförs inte spelar någon roll.
Så MapReduce kan utföra sitt arbete på olika maskiner i ett nätverk. Det kan också dra från flera datakällor, internt eller externt. MapReduce håller reda på sitt arbete genom att skapa en unik nyckel för att säkerställa att all behandling är relaterad till att lösa samma problem.Denna nyckel används också för att dra all utdata tillsammans i slutet av alla distribuerade uppgifter.
