Wat is MapReduce in Hadoop? Architectuur - Voorbeeld

Wat is MapReduce in Hadoop?

MapReduce is een softwareframework en programmeermodel dat wordt gebruikt voor het verwerken van enorme hoeveelheden gegevens. Het MapReduce- programma werkt in twee fasen, namelijk MapReduce en Reduce. Kaarttaken hebben te maken met het splitsen en in kaart brengen van gegevens, terwijl het aantal taken in willekeurige volgorde wordt verminderd en de gegevens worden verkleind.

Hadoop kan MapReduce-programma's uitvoeren die in verschillende talen zijn geschreven: Java, Ruby, Python en C ++. De programma's van Map Reduce in cloud computing zijn parallel van aard en zijn dus erg handig voor het uitvoeren van grootschalige data-analyse met meerdere machines in het cluster.

De invoer voor elke fase zijn sleutel-waardeparen . Bovendien moet elke programmeur twee functies specificeren: kaartfunctie en verminderfunctie .

In deze Hadoop MapReduce-zelfstudie voor beginners leert u:

  • Wat is MapReduce in Hadoop?
  • MapReduce Architecture in Big Data wordt in detail uitgelegd
  • MapReduce Architecture in detail uitgelegd
  • Hoe de organisatie van MapReduce werkt?

MapReduce Architecture in Big Data wordt in detail uitgelegd

Het hele proces doorloopt vier uitvoeringsfasen, namelijk splitsen, in kaart brengen, schudden en verkleinen.

Laten we nu in deze MapReduce-zelfstudie het begrijpen met een MapReduce-voorbeeld-

Bedenk dat u de volgende invoergegevens heeft voor uw MapReduce in Big data-programma

Welcome to Hadoop ClassHadoop is goodHadoop is bad

MapReduce-architectuur

De uiteindelijke uitvoer van de MapReduce-taak is

slecht 1
Klasse 1
mooi zo 1
Hadoop 3
is 2
naar 1
Welkom 1

De data doorloopt de volgende fasen van MapReduce in Big Data

Invoersplitsing:

Een invoer voor een MapReduce in Big Data-taak wordt opgedeeld in stukken van een vaste grootte, genaamd invoersplitsingen. Invoersplitsing is een deel van de invoer die wordt verbruikt door een enkele kaart

In kaart brengen

Dit is de allereerste fase in de uitvoering van het programma voor het verkleinen van de kaart. In deze fase worden gegevens in elke splitsing doorgegeven aan een mappingfunctie om outputwaarden te produceren. In ons voorbeeld is het een taak van de mappingfase om een ​​aantal keren dat elk woord voorkomt uit invoersplitsingen te tellen (meer details over invoersplitsing worden hieronder gegeven) en een lijst samen te stellen in de vorm van

Schuifelen

Deze fase verbruikt de output van de Mapping-fase. Het is zijn taak om de relevante records uit de uitvoer van de Mapping-fase te consolideren. In ons voorbeeld worden dezelfde woorden samen met hun respectievelijke frequentie samengevoegd.

Reduceren

In deze fase worden de uitvoerwaarden van de Shuffling-fase geaggregeerd. Deze fase combineert waarden uit de Shuffling-fase en retourneert een enkele uitvoerwaarde. Kortom, deze fase vat de volledige dataset samen.

In ons voorbeeld aggregeert deze fase de waarden van de Shuffling-fase, dwz het berekent het totale aantal keren dat elk woord voorkomt.

MapReduce Architecture in detail uitgelegd

  • Er wordt één kaarttaak gemaakt voor elke splitsing, die vervolgens de kaartfunctie uitvoert voor elk record in de splitsing.
  • Het is altijd gunstig 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 om de hele invoer te verwerken. Wanneer de splitsingen kleiner zijn, is het beter om de verwerking gebalanceerd te laden, aangezien we de splitsingen parallel verwerken.
  • Het is echter ook niet wenselijk om spleten te hebben die 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 ​​splitsingsgrootte te maken die gelijk is aan de grootte van een HDFS-blok (dat standaard 64 MB is).
  • Het uitvoeren van kaarttaken resulteert in het schrijven van uitvoer naar een lokale schijf op het respectieve knooppunt en niet naar HDFS.
  • Reden voor het kiezen van een lokale schijf in plaats van HDFS is om replicatie te vermijden die plaatsvindt in het geval van HDFS-opslag.
  • Kaartuitvoer is tussenuitvoer die wordt verwerkt door taken te verminderen om de uiteindelijke uitvoer te produceren.
  • Zodra de taak is voltooid, kan de kaartuitvoer worden weggegooid. Dus het opslaan in HDFS met replicatie wordt overdreven.
  • In het geval van een knooppuntstoring, voert Hadoop de kaarttaak opnieuw uit op een ander knooppunt en wordt de kaartuitvoer opnieuw gemaakt voordat de kaartuitvoer wordt verbruikt door de taak reduceren.
  • Taak verminderen werkt niet op het concept van datalocatie. Een output van elke kaarttaak wordt naar de reduceertaak gestuurd. De kaartuitvoer wordt overgebracht naar de machine waar de taak voor verminderen wordt uitgevoerd.
  • Op deze machine wordt de uitvoer samengevoegd en vervolgens doorgegeven aan de door de gebruiker gedefinieerde reduceerfunctie.
  • In tegenstelling tot de kaartuitvoer, wordt de gereduceerde uitvoer opgeslagen in HDFS (de eerste replica wordt opgeslagen op het lokale knooppunt en andere replica's worden opgeslagen op externe knooppunten). Dus, het schrijven van de output verminderen

Hoe de organisatie van MapReduce werkt?

In deze MapReduce-zelfstudie leren we nu hoe MapReduce werkt

Hadoop verdeelt de taak in taken. Er zijn twee soorten taken:

  1. Kaarttaken (splitsingen en kaarten )
  2. Taken verminderen (schuifelen, verkleinen )

Zoals hierboven vermeld.

Het volledige uitvoeringsproces (uitvoering van Map- en Reduce-taken, beide) wordt bestuurd door twee soorten entiteiten, een

  1. Jobtracker : gedraagt ​​zich als een meester (verantwoordelijk voor de volledige uitvoering van de ingediende taak)
  2. Meerdere taakvolgers : gedraagt ​​zich als slaven, die allemaal de taak uitvoeren

Voor elke taak die wordt aangeboden voor uitvoering in het systeem, is er één Jobtracker die zich op Namenode bevindt en zijn er meerdere tasktrackers die op Datanode staan .

Hoe Hadoop MapReduce werkt
  • Een taak wordt opgedeeld in meerdere taken die vervolgens op meerdere gegevensknooppunten in een cluster worden uitgevoerd.
  • Het is de verantwoordelijkheid van Job Tracker om de activiteit te coördineren door taken te plannen die op verschillende gegevensknooppunten worden uitgevoerd.
  • De uitvoering van een individuele taak wordt dan verzorgd door de taakvolger, die zich op elk gegevensknooppunt bevindt dat een deel van de taak uitvoert.
  • De taak van de taakvolger is om het voortgangsrapport naar de taakvolger te sturen.
  • Bovendien zendt de taakvolger periodiek een 'hartslag'- signaal naar de Jobtracker om hem op de hoogte te stellen van de huidige toestand van het systeem.
  • Zo houdt Job Tracker de algehele voortgang van elke taak bij. In het geval dat een taak mislukt, kan de taakvolger deze opnieuw plannen op een andere taakvolger.

Interessante artikelen...