mapreduceKomma igång med mapreduce


Anmärkningar

Det här avsnittet ger en översikt över vad mapreduce är och varför en utvecklare kanske vill använda den.

Det bör också nämna alla stora ämnen inom mapreduce och länka till relaterade ämnen. Eftersom dokumentationen för mapreduce är ny kan du behöva skapa initialversioner av relaterade ämnen.

Installation eller installation

Mapreduce är en del av Hadoop. Så när Apache Hadoop (eller någon distribution av Hadoop är installerad) installeras MR automatiskt.

MapReduce är databehandlingsramen över HDFS (Hadoop distribuerade filsystem). MR-jobb kanske skrivna med Java, python, Scala, R, etc.

Vad gör mapreduce och hur?

Mapreduce är en programmeringsmodell för behandling av (mycket) stora mängder data.

Traditionell 'HPC' (High Performance Computing) påskyndar stora beräkningar på relativt stora datamängder genom att skapa en uppsättning mycket anslutna datorer (med saker som extremt snabbt nätverk och snabb åtkomst till delad lagring, delat minne) för att hantera datorproblem som kräver vanligtvis beräkningar för att ha tillgång till varandras data. Ett klassiskt exempel är väderprognoser.

Mapreduce å andra sidan utmärker sig vid hantering av relativt små, oberoende beräkningar av enorma datamängder. För att göra detta möjligt sprids data över många datorer (på grund av datamängden), och den önskade beräkningen delas upp i en fas som kan göras på varje bit av data oberoende (kartfasen). Resultaten av dessa oberoende beräkningar samlas sedan och en andra del av beräkningarna görs för att kombinera alla dessa enskilda resultat i slutresultatet ("minska" -fasen).


Exempel: Räkna röster

Föreställ dig att du har en mycket stor mängd röster att räkna, och det finns lite arbete att räkna varje röst (t.ex. ta reda på den skannade bilden vilken ruta som har markerats).

I det här fallet skulle en mapreduce-implementering:

Steg 1: "Spread"

Sprid bilderna för att bearbeta över tillgängliga datorer.

Steg 2: "Karta"

På varje dator, för varje bild:

  • ta in 1 av de bilder som kopierats till den här datorn som ingång
  • ta reda på vilken ruta som är markerad
  • mata ut numret (eller koden eller namnet) på det röstade objektet

Observera att arbetet kan börja så snart en dator får en bild att arbeta med. Det finns inget behov av att alla dessa datorer ska interagera för att utföra sitt arbete, så det finns inget behov av att de snabbt ska kopplas samman, ha delat minne eller delat disksytan.

Steg 3: "Samla"

Samla alla dessa utgångar på en dator.

Steg 4: "Minska"

Räkna hur många röster för varje nummer (eller kod eller namn) det finns.

Detta mycket grundläggande exempel belyser också hur ytterligare optimeringar ofta är möjliga. I detta fall kan själva reduktionssteget klart göras delvis på varje dator, och sedan kan en slutlig minskning göras på en central dator. Detta kommer både att minska mängden arbete på en dator som kör reduceringssteget och begränsa mängden data som behöver transporteras över nätverket.


Exempel: Räkna röster - optimerad (med kombinerare)

Steg 1: "Spread"

Samma som tidigare: Sprid bilderna för att bearbeta över tillgängliga datorer.

Steg 2: "Karta"

Samma som tidigare: På varje dator, för varje bild:

  • ta in 1 av de bilder som kopierats till den här datorn som ingång
  • ta reda på vilken ruta som är markerad
  • mata ut numret (eller koden eller namnet) på det objekt som röstats för

Steg 3: "Samla" lokalt

Samla alla utgångar från en dator på själva datorn.

Steg 4: 'Minska' lokalt

Räkna hur många röster för varje nummer (eller kod eller namn) som finns i de lokala resultaten och mata ut dessa räkningar.

Steg 5: "Samla" globalt

Samla alla utgångar från den lokala minskningen på en dator.

Steg 6: 'Minska' globalt

Sammanfatta de lokalt gjorda rösterna för varje nummer (eller kod eller namn).


Observera att i steg 3 är det inte nödvändigt att vänta på alla resultat i något av nedanstående fall:

  • om detta blir för mycket för datorerna lokala resurser som lagring / minne
  • om kostnaden för det arbete som ska göras om när en dator går sönder anses vara stort för att vänta på alla lokala resultat
  • om nätverket nu är fritt att transportera mellanresultat

den lokala samlingen och lokal minskning kan göras på de resultat som hittills producerats på den lokala datorn, och detta kan göras när som helst.

Det lokala reduceringssteget kallas kombineringssteget. Detta är ett valfritt steg som används för att förbättra prestandan.