Wat is MapReduce in Hadoop? Grote gegevens Architectuur
Wat is MapReduce in Hadoop?
KaartVerminderen is een softwareframework en programmeermodel dat wordt gebruikt voor het verwerken van grote hoeveelheden gegevens. KaartVerminderen programmawerk in twee fasen, namelijk Map en Reduce. Kaarttaken houden zich bezig met het splitsen en in kaart brengen van gegevens, terwijl Reduce-taken de gegevens in willekeurige volgorde verplaatsen en verminderen.
Hadoop kan MapReduce-programma's uitvoeren die in verschillende talen zijn geschreven: Java, Robijn, Python en C++De programma's van Map Reduce in cloud computing zijn parallel van aard en zijn daarom erg handig voor het uitvoeren van grootschalige data-analyses met behulp van meerdere machines in het cluster.
De invoer voor elke fase is sleutel waarde paren. Bovendien moet elke programmeur twee functies specificeren: kaart functie en functie verminderen.
KaartVerminderen Architectie in Big Data uitgelegd met voorbeeld
Het hele proces doorloopt vier uitvoeringsfasen, namelijk splitsen, in kaart brengen, schudden en verkleinen.
Laten we het in deze MapReduce-tutorial begrijpen met een MapReduce-voorbeeld–
Stel dat u de volgende invoergegevens voor uw MapReduce hebt in Big data-programma
Welcome to Hadoop Class Hadoop is good Hadoop is bad
De uiteindelijke uitvoer van de MapReduce-taak is
slecht | 1 |
Klasse | 1 |
goed | 1 |
Hadoop | 3 |
is | 2 |
naar | 1 |
Welkom | 1 |
De gegevens doorlopen de volgende fasen van MapReduce in Big Data
Invoersplitsingen:
Een invoer voor een MapReduce in Big Data-taak wordt verdeeld in stukken van vaste grootte, genaamd ingangssplitsingen Invoersplitsing is een deel van de invoer dat wordt verbruikt door een enkele kaart
Mapping
Dit is de allereerste fase in de uitvoering van het map-reduce-programma. In deze fase worden gegevens in elke splitsing doorgegeven aan een mappingfunctie om uitvoerwaarden te produceren. In ons voorbeeld is een taak van de mappingfase het tellen van het aantal keren dat elk woord voorkomt in invoersplitsingen (meer details over invoersplitsingen worden hieronder gegeven) en het voorbereiden van een lijst in de vorm van
Schuifelen
Deze fase verbruikt de uitvoer van de mappingfase. Zijn taak is het consolideren van de relevante records uit de uitvoer van de Mapping-fase. In ons voorbeeld worden dezelfde woorden samengevoegd, samen met hun respectievelijke frequentie.
Vermindering
In deze fase worden outputwaarden van de Shuffling-fase samengevoegd. Deze fase combineert waarden van de Shuffling-fase en retourneert één outputwaarde. Kortom, deze fase vat de volledige dataset samen.
In ons voorbeeld worden in deze fase de waarden uit de shuffling-fase samengevoegd, dat wil zeggen dat het totale aantal keren dat elk woord voorkomt wordt berekend.
KaartVerminderen Architectuur in detail uitgelegd
- Voor elke splitsing wordt één kaarttaak gemaakt, die vervolgens de kaartfunctie uitvoert voor elk record in de splitsing.
- Het is altijd voordelig om meerdere splitsingen te hebben, omdat de tijd die nodig is om een splitsing te verwerken klein is in vergelijking met de tijd die nodig is voor het verwerken van de gehele invoer. Wanneer de splitsingen kleiner zijn, is het beter om de verwerking in evenwicht te brengen, omdat we de splitsingen parallel verwerken.
- Het is echter ook niet wenselijk dat de splitsingen te klein zijn. Wanneer de splitsingen te klein zijn, begint de overbelasting van het beheren van de splitsingen en het maken van kaarttaken de totale taakuitvoeringstijd te domineren.
- Voor de meeste taken is het beter om een gesplitste grootte te maken die gelijk is aan de grootte van een HDFS-blok (standaard 64 MB).
- Het uitvoeren van kaarttaken resulteert in het schrijven van uitvoer naar een lokale schijf op het betreffende knooppunt en niet naar HDFS.
- De reden om te kiezen voor een lokale schijf in plaats van HDFS is om replicatie te voorkomen die plaatsvindt bij HDFS-opslagbewerkingen.
- 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.
- Taak verminderen werkt niet op het concept van datalocatie. Een uitvoer van elke kaarttaak wordt naar de verkleintaak gevoerd. De kaartuitvoer wordt overgebracht naar de machine waarop de reduceer-taak wordt uitgevoerd.
- Op deze machine wordt de uitvoer samengevoegd en vervolgens doorgegeven aan de door de gebruiker gedefinieerde verkleiningsfunctie.
- In tegenstelling tot de kaartuitvoer wordt de uitvoer verminderd opgeslagen HDFS (de eerste replica wordt opgeslagen op het lokale knooppunt en andere replica's worden opgeslagen op knooppunten buiten het rack). Dus het schrijven van de output vermindert
Hoe werkt MapReduce?
In deze MapReduce-tutorial zullen we nu leren hoe MapReduce werkt
Hadoop verdeelt de taak in taken. Er zijn twee soorten taken:
- Taken in kaart brengen (Splitsen en in kaart brengen)
- Verminder taken (Schudden, verkleinen)
Zoals hierboven vermeld.
Het volledige uitvoeringsproces (uitvoering van de Map- en Reduce-taken, beide) wordt bestuurd door twee soorten entiteiten, genaamd a
- Jobtracker: Gedraagt zich als een meester (verantwoordelijk voor de volledige uitvoering van de ingediende opdracht)
- Meerdere taaktrackers: Gedraagt zich als slaven, elk van hen voert de taak uit
Voor elke taak die in het systeem ter uitvoering wordt aangeboden, is er één Jobtracker die op woont Naamknooppunt en er zijn meerdere taaktrackers die op wonen datanode.
- Een taak wordt verdeeld in meerdere taken die vervolgens op meerdere datanodes in een cluster worden uitgevoerd.
- Het is de verantwoordelijkheid van de jobtracker om de activiteit te coördineren door taken te plannen die op verschillende dataknooppunten worden uitgevoerd.
- De uitvoering van individuele taken wordt vervolgens verzorgd door een taaktracker, die zich op elk gegevensknooppunt bevindt dat een deel van de taak uitvoert.
- De taaktracker is verantwoordelijk voor het verzenden van het voortgangsrapport naar de taaktracker.
- Bovendien verzendt Task Tracker periodiek 'hartslag' signaal naar de Jobtracker om hem op de hoogte te stellen van de huidige status van het systeem.
- Zo houdt Job Tracker de algehele voortgang van elke taak bij. In het geval dat een taak mislukt, kan de jobtracker deze opnieuw plannen op een andere taaktracker.