Inhoudsopgave:
Video: TrendsVerwachting voor Big Data 2024
Om de mogelijkheden van Hadoop MapReduce volledig te begrijpen, is het belangrijk om onderscheid te maken tussen MapReduce (het algoritme) en een implementatie van MapReduce. Hadoop MapReduce is een implementatie van het algoritme dat is ontwikkeld en wordt onderhouden door het Apache Hadoop-project.
Het is handig om over deze implementatie na te denken als een MapReduce-engine, want dat is precies hoe het werkt. Je levert input (brandstof), de motor converteert de input snel en efficiënt naar output en je krijgt de antwoorden die je nodig hebt.
Hadoop MapReduce bevat verschillende fases, elk met een belangrijke reeks bewerkingen die helpen om je doel te bereiken om de antwoorden te krijgen die je nodig hebt van big data. Het proces begint met een gebruikersverzoek om een MapReduce-programma uit te voeren en gaat door totdat de resultaten worden teruggeschreven naar de HDFS.
HDFS en MapReduce voeren hun werk uit op knooppunten in een cluster dat wordt gehost op racks met basisservers. Om de discussie te vereenvoudigen, toont het diagram slechts twee knooppunten.
Maak de big data klaar
Wanneer een client vraagt om een MapReduce-programma uit te voeren, is de eerste stap het lokaliseren en lezen van het invoerbestand met de onbewerkte gegevens. Het bestandsformaat is volledig willekeurig, maar de gegevens moeten worden geconverteerd naar iets dat het programma kan verwerken. Dit is de functie van InputFormat en RecordReader. InputFormat bepaalt hoe het bestand in kleinere stukjes zal worden opgedeeld voor verwerking met behulp van de functie InputSplit.
Vervolgens wijst het een RecordReader toe om de onbewerkte gegevens voor verwerking op de kaart te transformeren. Verschillende soorten RecordReaders worden bij Hadoop geleverd en bieden een breed scala aan conversie-opties. Deze functie is een van de manieren waarop Hadoop de enorme verscheidenheid aan gegevenstypen beheert die worden gevonden in big data-problemen.
Laat de big data map beginnen
Je gegevens bevinden zich nu in een vorm die acceptabel is om in kaart te brengen. Voor elk invoerpaar wordt een apart exemplaar van de map geroepen om de gegevens te verwerken. Maar wat doet het met de verwerkte uitvoer en hoe kunt u ze bijhouden?
Map heeft twee extra mogelijkheden om de vragen te beantwoorden. Omdat kaart en minder nodig zijn om samen te werken om uw gegevens te verwerken, moet het programma de uitvoer van de onafhankelijke kaartenmakers verzamelen en doorgeven aan de reducers. Deze taak wordt uitgevoerd door een OutputCollector. Een Reporter-functie biedt ook informatie verzameld van kaarttaken, zodat u weet wanneer of de kaarttaken voltooid zijn.
Al dit werk wordt tegelijkertijd uitgevoerd op meerdere knooppunten in het Hadoop-cluster.Mogelijk hebt u gevallen waarin de uitvoer van bepaalde mappingprocessen moet worden verzameld voordat de reducers kunnen beginnen. Of, sommige van de tussenresultaten moeten mogelijk worden verwerkt voordat ze worden verkleind.
Bovendien kan een deel van deze uitvoer zich bevinden op een knooppunt dat verschilt van het knooppunt waar de verloopstukken voor die specifieke uitvoer worden uitgevoerd. Het verzamelen en schuiven van tussenresultaten wordt uitgevoerd door een partitioner en een soort. De toewijzingstaken leveren de resultaten op een specifieke partitie op als invoer voor het verminderen van taken.
Nadat alle kaarttaken zijn voltooid, worden de tussentijdse resultaten verzameld in de partitie en vindt er een herverdeling plaats, waarbij de uitvoer wordt gesorteerd voor optimale verwerking door reductie.
Verkleinen en combineren voor big data
Voor elk uitvoerpaar wordt reduc geroepen om zijn taak uit te voeren. Op vergelijkbare wijze als kaart, verzamelt reduceren zijn uitvoer terwijl alle taken worden verwerkt. Verkleinen kan niet beginnen voordat alle toewijzingen zijn voltooid. De uitvoer van verkleinen is ook een sleutel en een waarde. Hoewel dit noodzakelijk is om te reduceren om zijn werk te doen, is dit misschien niet het meest effectieve uitvoerformaat voor uw toepassing.
Hadoop biedt een OutputFormat-functie en deze lijkt erg veel op InputFormat. OutputFormat neemt het sleutel / waarde-paar en organiseert de uitvoer voor schrijven naar HDFS. De laatste taak is om de gegevens daadwerkelijk naar HDFS te schrijven. Dit wordt uitgevoerd door RecordWriter en het werkt op dezelfde manier als RecordReader behalve in omgekeerde volgorde. Het neemt de OutputFormat-gegevens en schrijft dit naar HDFS in de vorm die nodig is voor de vereisten van het programma.
De coördinatie van al deze activiteiten werd in eerdere versies van Hadoop beheerd door een taakplanner. Deze scheduler was rudimentair en naarmate de mix van banen veranderde en groeide, was het duidelijk dat een andere aanpak noodzakelijk was. De primaire tekortkoming in de oude planner was het gebrek aan middelenbeheer. De nieuwste versie van Hadoop heeft deze nieuwe mogelijkheid.
Hadoop MapReduce is het hart van het Hadoop-systeem. Het biedt alle mogelijkheden die u nodig hebt om grote gegevens in beheersbare brokken te splitsen, de gegevens parallel aan uw gedistribueerde cluster te verwerken en de gegevens vervolgens beschikbaar te maken voor gebruikersconsumptie of aanvullende verwerking. En het doet al dit werk op een zeer veerkrachtige, fouttolerante manier. Dit is nog maar het begin.