Wat is MapReduce in Hadoop? Archistructuur & diagram
โก Slimme samenvatting
MapReduce is het Hadoop-programmeermodel dat een grote dataset omzet in een klein resultaat door een map-functie uit te voeren op elke input split en vervolgens een reduce-functie op de gegroepeerde tussenliggende waarden.

Wat is MapReduce in Hadoop?
MapReduce is een softwareframework en programmeermodel dat wordt gebruikt voor het verwerken van enorme hoeveelheden data. MapReduce-programma's werken in twee fasen: Map en Reduce. Map-taken omvatten het opsplitsen van data en het terugzetten van de data.ping Tijdens de Reduce-taken worden de gegevens herschikt en gereduceerd.
Hadoop is in staat om MapReduce-programma's uit te voeren die in verschillende programmeertalen zijn geschreven: Java, Robijn, Pythonen C++MapReduce-programma's werken parallel, waardoor ze zeer geschikt zijn voor het uitvoeren van grootschalige data-analyses met behulp van meerdere machines in een cluster.
De invoer voor elke fase bestaat uit sleutel-waardeparen. Daarnaast moet elke programmeur twee functies specificeren: een map-functie en een reduce-functie.
KaartVerminderen Architectie in Big Data uitgelegd met voorbeeld
Het hele proces doorloopt vier uitvoeringsfasen, namelijk splitsen, in kaart brengen en toewijzen.ping, herschikken en reduceren.
In deze MapReduce-handleiding gaan we MapReduce nu begrijpen aan de hand van een voorbeeld.
Stel dat u de volgende invoergegevens voor uw MapReduce-proces hebt: Big data programma:
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Het onderstaande diagram tracDoorloop die drie lijnen in elke fase, van de invoersplitsingen aan de linkerkant tot de uiteindelijke woordtellingen aan de rechterkant.
De uiteindelijke uitvoer van de MapReduce-taak is
| douche | 1 |
| Klasse | 1 |
| goed | 1 |
| Hadoop | 3 |
| is | 2 |
| naar | 1 |
| Welkom | 1 |
De gegevens doorlopen de volgende fasen van MapReduce in Big Data.
Input splitsingen
De invoer voor een MapReduce-taak in Big Data wordt verdeeld in stukken van vaste grootte, input splits genaamd. Een input split is een deel van de invoer dat door รฉรฉn enkele map wordt verwerkt.
Wereldmapping
Dit is de allereerste fase in de uitvoering van een MapReduce-programma. In deze fase worden de gegevens in elke split doorgegeven aan een map.ping functie om uitvoerwaarden te produceren. In ons voorbeeld is de taak van de kaartping De volgende fase is het tellen van het aantal keren dat elk woord voorkomt in de invoerfragmenten (meer details over invoerfragmenten vindt u hieronder) en het opstellen van een lijst in de vorm van... .
Schuifelen
In deze fase wordt de uitvoer van de kaart verwerkt.ping fase. De taak ervan is om de relevante gegevens uit de kaart te consolideren.ping Fase-uitvoer. In ons voorbeeld worden dezelfde woorden samen met hun respectievelijke frequentie gegroepeerd.
Vermindering
In deze fase worden de uitvoerwaarden van de shufflingfase samengevoegd. Deze fase combineert de waarden uit de shufflingfase en levert รฉรฉn enkele uitvoerwaarde op. Kortom, deze fase vat de volledige dataset samen.
In ons voorbeeld worden in deze fase de waarden uit de shuffle-fase samengevoegd, oftewel het totale aantal keren dat elk woord voorkomt, wordt berekend.
KaartVerminderen Architectuur in detail uitgelegd
De onderstaande punten leggen uit hoe splitsingen, map-taken en reduce-taken daadwerkelijk worden geplaatst en opgeslagen in het cluster.
- Voor elke splitsing wordt een aparte map-taak aangemaakt, die vervolgens de map-functie uitvoert voor elk record in de splitsing.
- Het is altijd voordelig om meerdere delen te splitsen, omdat de verwerkingstijd van een deel kort is in vergelijking met de verwerkingstijd van de volledige invoer. Kleinere delen zorgen voor een betere taakverdeling, omdat de gegevens parallel worden verwerkt.
- Het is echter ook niet wenselijk om te kleine splitsingen te hebben. Wanneer de splitsingen te klein zijn, beginnen de overheadkosten voor het beheren van de splitsingen en het aanmaken van kaarttaken de totale uitvoeringstijd van de taak te domineren.
- Voor de meeste klussen is het beter om de splitsingsgrootte gelijk te maken aan de grootte van een HDFS blok, dat standaard 128 MB is vanaf Hadoop 2.x (het was 64 MB in Hadoop 1.x) en wordt beheerd door de
dfs.blocksizeeigendom. - Bij het uitvoeren van kaarttaken wordt de uitvoer naar een lokale schijf op het betreffende knooppunt geschreven, en niet naar HDFS.
- De reden om voor een lokale schijf in plaats van HDFS te kiezen, is om de replicatie te vermijden die plaatsvindt tijdens een HDFS-opslagbewerking.
- Kaartuitvoer is tussentijdse uitvoer die wordt verwerkt door taken te verminderen om de uiteindelijke uitvoer te produceren.
- Zodra de taak is voltooid, kan de kaartuitvoer worden weggegooid. Het opslaan ervan in HDFS met replicatie wordt dus overdreven.
- In het geval van een knooppuntstoring, voordat de kaartuitvoer wordt verbruikt door de reduce-taak, voert Hadoop de kaarttaak opnieuw uit op een ander knooppunt en wordt de kaartuitvoer opnieuw gemaakt.
- Reduce-taken werken niet volgens het principe van datalocaliteit. De uitvoer van elke map-taak wordt doorgegeven aan de reduce-taak. De uitvoer van de map-taak wordt overgebracht naar de machine waarop de reduce-taak draait.
- Op deze machine wordt de uitvoer samengevoegd en vervolgens doorgegeven aan de door de gebruiker gedefinieerde verkleiningsfunctie.
- In tegenstelling tot de map-output wordt de reduce-output opgeslagen in HDFS (de eerste replica wordt op het lokale knooppunt opgeslagen en de andere replica's op externe knooppunten). Het schrijven van de reduce-output verbruikt dus wel netwerkbandbreedte, maar niet meer dan een normale HDFS-schrijfpipeline.
Hoe werkt MapReduce?
In deze MapReduce-handleiding leren we hoe MapReduce werkt.
Hadoop verdeelt de taak in subtaken. Er zijn twee soorten subtaken:
- Kaarttaken (Splitsen & Kaart)ping)
- Taken verminderen (Herschikken, Verminderen)
Het volledige uitvoeringsproces, dat wil zeggen de uitvoering van zowel de Map- als de Reduce-taken, wordt aangestuurd door twee soorten entiteiten, namelijk:
- JobTracker: gedraagt โโzich als een meester en is verantwoordelijk voor de volledige uitvoering van een ingeleverde taak.
- Meerdere takenTrackers: gedragen zich als slaven, waarbij ieder een deel van het werk uitvoert.
Voor elke taak die in het systeem ter uitvoering wordt aangeboden, is er รฉรฉn taak.Tracker die zich op de NameNode bevindt, en er zijn meerdere takenTrackers die zich op de DataNodes bevinden.
Let op: de baanTracker en TaakTracHet ker-paar behoort tot MapReduce versie 1 (Hadoop 1.x). Vanaf Hadoop 2.x verdeelt YARN deze taken over een clusterbrede ResourceManager, een NodeManager op elke node en รฉรฉn ApplicationMaster per job, hoewel de map-, shuffle- en reduce-fasen zelf ongewijzigd blijven.
Het onderstaande diagram laat zien hoe een ingediende taak wordt opgedeeld in subtaken. tracked over de cluster.
- Een taak wordt opgedeeld in meerdere subtaken die vervolgens op meerdere dataknooppunten in een cluster worden uitgevoerd.
- Het is de verantwoordelijkheid van de functie. tracker om de activiteit te coรถrdineren door taken in te plannen die op verschillende dataknooppunten moeten worden uitgevoerd.
- De uitvoering van een individuele taak wordt vervolgens door de taakbeheerder afgehandeld. tracker, die aanwezig is op elk dataknooppunt dat een deel van de taak uitvoert.
- De taak tracDe verantwoordelijkheid van Ker is het versturen van het voortgangsrapport naar de medewerker. tracKer.
- Daarnaast is de taak tracKer stuurt periodiek een 'hartslag'-signaal naar Job.Tracker om het op de hoogte te stellen van de huidige status van het systeem.
- De baan dus tracker houdt track van de algehele voortgang van elke taak. In geval van taakfalen, wordt de taak tracker kan het opnieuw inplannen voor een andere taak. tracKer.


