In deze Hadoop blog, gaan we u een end-to-end MapReduce-taakuitvoeringsstroom bieden. Hier zullen we elk onderdeel beschrijven dat het deel is van MapReduce dat in detail werkt.
Deze blog helpt je om te beantwoorden hoe Hadoop MapReduce werkt, hoe gegevensstromen in MapReduce, hoe Mapreduce-taken worden uitgevoerd in Hadoop?
Wat is MapReduce?
Hadoop MapReduce is de gegevensverwerkingslaag. Het verwerkt de enorme hoeveelheid gestructureerde en ongestructureerde gegevens die zijn opgeslagen in HDFS. MapReduce verwerkt gegevens parallel door de taak op te delen in de reeks onafhankelijke taken. Parallelle verwerking verbetert dus de snelheid en betrouwbaarheid.
Hadoop MapReduce-gegevensverwerking vindt plaats in 2 fasen:Map en Reduce-fase.
- Kaartfase- Het is de eerste fase van gegevensverwerking. In deze fase specificeren we alle complexe logica/bedrijfsregels/kostbare code.
- Verminder fase- Het is de tweede fase van verwerking. In deze fase specificeren we lichtgewicht verwerking zoals aggregatie/sommatie.
Stappen van MapReduce Job Execution-stroom
MapReduce verwerkt de gegevens in verschillende fasen met behulp van verschillende componenten. Laten we de stappen van taakuitvoering in Hadoop bespreken.
1. Invoerbestanden
In invoerbestanden worden gegevens voor de MapReduce-taak opgeslagen. InHDFS , invoerbestanden bevinden zich. Het formaat van de invoerbestanden is willekeurig. Op regels gebaseerde logbestanden en binaire indeling kunnen ook worden gebruikt.
2. Invoerformaat
Daarna definieert InputFormat hoe deze invoerbestanden moeten worden gesplitst en gelezen. Het selecteert de bestanden of andere objecten voor invoer. InputFormat creëert InputSplit.
3. InputSplits
Het vertegenwoordigt de gegevens die worden verwerkt door een individuele Mapper . Voor elke splitsing wordt één kaarttaak gemaakt. Het aantal kaarttaken is dus gelijk aan het aantal InputSplits. Kader verdelen opgesplitst in records, die mapper proces.
4. RecordReader
Het communiceert met de inputSplit. En zet de gegevens vervolgens om in sleutel-waarde-paren geschikt om door de Mapper te worden gelezen. RecordReader gebruikt standaard TextInputFormat om gegevens om te zetten in een sleutel-waardepaar.
Het communiceert met de InputSplit totdat het lezen van het bestand is voltooid. Het wijst byte-offset toe aan elke regel in het bestand. Vervolgens worden deze sleutel-waardeparen verder naar de mapper gestuurd voor verdere verwerking.
5. Mapper
Het verwerkt invoerrecord geproduceerd door de RecordReader en genereert tussenliggende sleutel-waardeparen. De tussenuitgang is compleet anders dan het ingangspaar. De uitvoer van de mapper is de volledige verzameling sleutel-waardeparen.
Hadoop-framework slaat de uitvoer van mapper niet op HDFS op. Het slaat niet op, omdat gegevens tijdelijk zijn en schrijven op HDFS onnodig meerdere kopieën zal maken. Vervolgens geeft Mapper de uitvoer door aan de combiner voor verdere verwerking.
4. Combineer
Combiner is een mini-reducer die lokale aggregatie uitvoert op de uitvoer van de mapper. Het minimaliseert de gegevensoverdracht tussen mapper en reducer. Dus wanneer de functionaliteit van de combiner is voltooid, geeft het framework de uitvoer door aan de partitioner voor verdere verwerking.
5. Partitioner
Partitioner ontstaat als we met meer dan één verloopstuk werken. Het neemt de uitvoer van de combiner en voert partitionering uit.
Het partitioneren van output vindt plaats op basis van de sleutel in MapReduce. Door hash-functie leidt de sleutel (of een subset van de sleutel) de partitie af.
Op basis van de sleutelwaarde in MapReduce vindt partitionering van elke uitvoer van de combiner plaats. En dan gaat het record met dezelfde sleutelwaarde naar dezelfde partitie. Daarna wordt elke partitie naar een reducer gestuurd.
Partitionering in MapReduce-uitvoering maakt een gelijkmatige verdeling van de kaartuitvoer over het verloopstuk mogelijk.
6. Schudden en sorteren
Na partitionering wordt de uitvoer geschud naar het reduceerknooppunt. Het shuffelen is de fysieke verplaatsing van de gegevens die via het netwerk wordt gedaan. Als alle mappers klaar zijn en de uitvoer op de reducer-knooppunten in willekeurige volgorde afspelen.
Vervolgens voegt framework deze tussenoutput en sortering samen. Dit wordt dan geleverd als input om de fase te verminderen.
7. Verloopstuk
Reducer neemt dan een reeks tussenliggende sleutel-waardeparen geproduceerd door de mappers als invoer. Daarna wordt op elk van hen een verloopfunctie uitgevoerd om de uitvoer te genereren.
De output van het verloopstuk is de uiteindelijke output. Vervolgens slaat framework de uitvoer op HDFS op.
8. RecordWriter
Het schrijft dit uitvoersleutel-waardepaar van de Reducer-fase naar de uitvoerbestanden.
9. Uitvoerformaat
OutputFormat definieert de manier waarop RecordReader deze uitvoersleutel-waardeparen in uitvoerbestanden schrijft. Dus de instanties die door de Hadoop worden geleverd, schrijven bestanden in HDFS. Dus OutputFormat-instanties schrijven de uiteindelijke uitvoer van reducer op HDFS.
Conclusie
We hebben stap voor stap de MapReduce-taakuitvoeringsstroom geleerd. Ik hoop dat deze blog je veel helpt om de werking van MapReduce te begrijpen.
Als u nog steeds een vraag heeft met betrekking tot de MapReduce-taakuitvoeringsstroom, kunt u deze met ons delen in het onderstaande commentaargedeelte. We zullen ons best doen om ze op te lossen.