sql >> Database >  >> NoSQL >> HBase

Hadoop MapReduce-zelfstudie voor beginners

Als je alles wilt weten over Hadoop MapReduce, ben je op de juiste plek beland. Deze MapReduce-zelfstudie biedt u de complete gids over alles en nog wat in Hadoop MapReduce.

In deze MapReduce-introductie onderzoekt u wat Hadoop MapReduce is, hoe het MapReduce-framework werkt. Het artikel behandelt ook MapReduce DataFlow, verschillende fasen in MapReduce, Mapper, Reducer, Partitioner, Cominer, Shuffling, Sorting, Data Locality en nog veel meer.

We hebben ook gebruik gemaakt van de voordelen van het MapReduce-framework.

Laten we eerst onderzoeken waarom we Hadoop MapReduce nodig hebben.

Waarom MapReduce?

De bovenstaande afbeelding toont het schematische aanzicht van de traditionele bedrijfssystemen. De traditionele systemen hebben normaal gesproken een gecentraliseerde server voor het opslaan en verwerken van gegevens. Dit model is niet geschikt voor het verwerken van enorme hoeveelheden schaalbare gegevens.

Ook kon dit model niet worden geaccommodeerd door de standaard databaseservers. Bovendien creëert het gecentraliseerde systeem te veel knelpunten bij het gelijktijdig verwerken van meerdere bestanden.

Door het MapReduce-algoritme te gebruiken, loste Google dit knelpuntprobleem op. Het MapReduce-framework verdeelt de taak in kleine delen en wijst taken toe aan veel computers.

Later worden de resultaten verzameld op een gemeenplaats en vervolgens geïntegreerd om de resultaatdataset te vormen.

Inleiding tot MapReduce Framework

MapReduce is de verwerkingslaag in Hadoop. Het is een softwareframework dat is ontworpen voor het parallel verwerken van enorme hoeveelheden gegevens door de taak op te delen in een reeks onafhankelijke taken.

We hoeven alleen de bedrijfslogica in de manier waarop MapReduce werkt te plaatsen, en het raamwerk zorgt voor de rest. Het MapReduce-framework werkt door de taak op te delen in kleine taken en deze taken toe te wijzen aan de slaven.

De MapReduce-programma's zijn geschreven in een bepaalde stijl die wordt beïnvloed door de functionele programmeerconstructies, specifieke idiomen voor het verwerken van de lijsten met gegevens.

In MapReduce zijn de inputs in de vorm van een lijst en de output van het framework ook in de vorm van een lijst. MapReduce is het hart van Hadoop. De efficiëntie en kracht van Hadoop zijn te danken aan de parallelle verwerking van het MapReduce-framework.

Laten we nu onderzoeken hoe Hadoop MapReduce werkt.

Hoe werkt Hadoop MapReduce?

Het Hadoop MapReduce-framework werkt door een taak te verdelen in onafhankelijke taken en deze taken uit te voeren op slave-machines. De MapReduce-taak wordt uitgevoerd in twee fasen, namelijk de kaartfase en de reductiefase.

De invoer naar en uitvoer van beide fasen zijn sleutel-waardeparen. Het MapReduce-framework is gebaseerd op het gegevenslokaliteitsprincipe (later besproken), wat betekent dat het de berekening naar de knooppunten stuurt waar de gegevens zich bevinden.

  • Kaartfase − In de kaartfase verwerkt de door de gebruiker gedefinieerde kaartfunctie de invoergegevens. In de kaartfunctie plaatst de gebruiker de bedrijfslogica. De uitvoer van de kaartfase is de tussenliggende uitvoer en wordt opgeslagen op de lokale schijf.
  • Verminder fase – Deze fase is de combinatie van de shuffle-fase en de reduceerfase. In de verkleiningsfase wordt de uitvoer van de kaartfase doorgegeven aan de verkleiner waar ze worden geaggregeerd. De output van de reduceerfase is de uiteindelijke output. In de Reduce-fase verwerkt de door de gebruiker gedefinieerde reduce-functie de uitvoer van Mappers en genereert de uiteindelijke resultaten.

Tijdens de MapReduce-taak stuurt het Hadoop-framework de kaarttaken en de Reduce-taken naar de juiste machines in het cluster.

Het framework zelf beheert alle details van de gegevensoverdracht, zoals het uitgeven van taken, het verifiëren van de taakvoltooiing en het kopiëren van gegevens tussen de knooppunten rond het cluster. De taken vinden plaats op de knooppunten waar de gegevens zich bevinden om het netwerkverkeer te verminderen.

MapReduce-gegevensstroom

U wilt misschien allemaal weten hoe deze sleutelwaardeparen worden gegenereerd en hoe MapReduce de invoergegevens verwerkt. Dit gedeelte beantwoordt al deze vragen.

Laten we eens kijken hoe gegevens uit verschillende fasen in Hadoop MapReduce moeten stromen om aankomende gegevens op een parallelle en gedistribueerde manier te verwerken.

1. InputFiles

De invoergegevensset, die door het MapReduce-programma moet worden verwerkt, wordt opgeslagen in het InputFile. Het InputFile wordt opgeslagen in het Hadoop Distributed File System.

2. InputSplit

Het record in de InputFiles wordt opgesplitst in het logische model. De gesplitste grootte is over het algemeen gelijk aan de HDFS-blokgrootte. Elke splitsing wordt verwerkt door de individuele Mapper.

3. Invoerformaat

InputFormat specificeert de bestandsinvoerspecificatie. Het definieert de weg naar de RecordReader waarin het record uit het InputFile wordt omgezet in de sleutel-waardeparen.

4. RecordReader

RecordReader leest de gegevens van de InputSplit en converteert records naar de sleutel-, waardeparen en presenteert deze aan de Mappers.

5. Mappers

Mappers nemen sleutel-, waardeparen als invoer van de RecordReader en verwerken deze door een door de gebruiker gedefinieerde kaartfunctie te implementeren. In elke Mapper wordt tegelijk een enkele splitsing verwerkt.

De ontwikkelaar heeft de bedrijfslogica in de kaartfunctie gezet. De uitvoer van alle mappers is de tussenuitvoer, die ook de vorm heeft van een sleutel, waardeparen.

6. Shuffle en sorteer

De tussentijdse output die door Mappers wordt gegenereerd, wordt gesorteerd voordat deze naar de Reducer gaat om de netwerkcongestie te verminderen. De gesorteerde tussenuitgangen worden vervolgens via het netwerk geschud naar de Reducer.

7. Verloopstuk

Het Reducer-proces en aggregeert de Mapper-outputs door een door de gebruiker gedefinieerde reduceerfunctie te implementeren. De uitvoer van de Reducers is de uiteindelijke uitvoer en wordt opgeslagen in het Hadoop Distributed File System (HDFS).

Laten we nu enkele terminologieën en geavanceerde concepten van het Hadoop MapReduce-framework bestuderen.

Sleutel-waardeparen in MapReduce

Het MapReduce-framework werkt op de sleutel-waardeparen omdat het zich bezighoudt met het niet-statische schema. Het neemt gegevens in de vorm van een sleutel, waardepaar en gegenereerde output is ook in de vorm van een sleutel, waardeparen.

Het MapReduce-sleutelwaardepaar is een recordentiteit die door de MapReduce-taak wordt ontvangen voor de uitvoering. In een sleutel/waarde-paar:

  • Sleutel is de lijnverschuiving vanaf het begin van de lijn in het bestand.
  • Waarde is de regelinhoud, exclusief de regelafsluitingen.

MapReduce Partitioner

De Hadoop MapReduce Partitioner verdeelt de keyspace. Het partitioneren van keyspace in MapReduce geeft aan dat alle waarden van elke sleutel zijn gegroepeerd, en het zorgt ervoor dat alle waarden van de enkele sleutel naar dezelfde Reducer moeten gaan.

Deze partitionering maakt een gelijkmatige verdeling van de uitvoer van de mapper over Reducer mogelijk door ervoor te zorgen dat de juiste sleutel naar de juiste Reducer gaat.

De standaard MapReducer-partitioner is de Hash Partitioner, die de keyspaces partitioneert op basis van de hash-waarde.

MapReduce Combiner

De MapReduce Combiner is ook bekend als de "Semi-Reducer". Het speelt een belangrijke rol bij het verminderen van netwerkcongestie. Het MapReduce-framework biedt de functionaliteit om de Combiner te definiëren, die de tussentijdse uitvoer van Mappers combineert voordat ze aan Reducer worden doorgegeven.

De aggregatie van Mapper-outputs voordat ze worden doorgegeven aan Reducer, helpt het framework kleine hoeveelheden gegevens te schudden, wat leidt tot een lage netwerkcongestie.

De belangrijkste functie van de Combiner is om de output van de Mappers met dezelfde sleutel samen te vatten en door te geven aan de Reducer. De klasse Combiner wordt gebruikt tussen de klasse Mapper en de klasse Reducer.

Gegevenslocatie in MapReduce

Gegevenslocatie verwijst naar "Berekening dichter bij de gegevens brengen in plaats van gegevens naar de berekening te verplaatsen." Het is veel efficiënter als de door de toepassing gevraagde berekening wordt uitgevoerd op de machine waar de gevraagde gegevens zich bevinden.

Dit is zeer waar in het geval dat de gegevensomvang enorm is. Het is omdat het de netwerkcongestie minimaliseert en de algehele doorvoer van het systeem verhoogt.

De enige veronderstelling hierachter is dat het beter is om de berekening dichter bij de machine te plaatsen waar gegevens aanwezig zijn in plaats van gegevens te verplaatsen naar de machine waarop de applicatie draait.

Apache Hadoop werkt met een enorme hoeveelheid gegevens, dus het is niet efficiënt om zulke enorme gegevens over het netwerk te verplaatsen. Daarom kwam het raamwerk met het meest innovatieve principe, namelijk gegevenslokaliteit, die de berekeningslogica naar gegevens verplaatst in plaats van gegevens naar berekeningsalgoritmen te verplaatsen. Dit wordt datalocatie genoemd.

Voordelen van MapReduce

1. Schaalbaarheid: Het MapReduce-framework is zeer schaalbaar. Het stelt organisaties in staat om applicaties uit te voeren vanaf grote sets machines, waarvoor duizenden terabytes aan gegevens nodig zijn.

2. Flexibiliteit: Het MapReduce-framework biedt de organisatie flexibiliteit om gegevens van elke grootte en elk formaat te verwerken, gestructureerd, semi-gestructureerd of ongestructureerd.

3. Beveiliging en authenticatie: Het MapReduce-programmeermodel biedt een hoge beveiliging. Het beschermt elke ongeoorloofde toegang tot de gegevens en verbetert de clusterbeveiliging.

4. Kosteneffectief: Het framework verwerkt gegevens over het cluster van basishardware, die goedkope machines zijn. Het is dus zeer kosteneffectief.

5. Snel: MapReduce verwerkt data parallel waardoor het erg snel is. Het duurt slechts enkele minuten om terabytes aan gegevens te verwerken.

6. Een eenvoudig model voor programmeren: De MapReduce-programma's kunnen in elke taal worden geschreven, zoals Java, Python, Perl, R, enz. Iedereen kan dus gemakkelijk MapReduce-programma's leren en schrijven en aan hun behoeften op het gebied van gegevensverwerking voldoen.

Gebruik van MapReduce

1. Loganalyse: MapReduce wordt voornamelijk gebruikt voor het analyseren van logbestanden. Het framework splitst de grote logbestanden op in een splitsing en een mapper-zoekopdracht voor de verschillende webpagina's die zijn geopend.

Telkens wanneer een webpagina in het logboek wordt gevonden, wordt een sleutel, een waardepaar doorgegeven aan de verkleiner waar de sleutel de webpagina is en de waarde "1" is. Na het verzenden van een sleutel, waardepaar naar Reducer, aggregeren de Reducers het aantal voor bepaalde webpagina's.

Het uiteindelijke resultaat is het totale aantal hits voor elke webpagina.

2. Indexering van volledige tekst: MapReduce wordt ook gebruikt voor het indexeren van volledige tekst. De mapper in MapReduce wijst elke zin of elk woord in één document toe aan het document. De Reducer schrijft deze mappings naar een index.

3. Google gebruikt MapReduce voor het berekenen van hun Pagerank.

4. Omgekeerde weblinkgrafiek: MapReduce wordt ook gebruikt in Reverse Web-Link GRaph. De kaartfunctie voert het URL-doel en de bron uit, waarbij de invoer van de webpagina (bron) wordt overgenomen.

De functie reduceert vervolgens de lijst van alle bron-URL's die zijn gekoppeld aan de opgegeven doel-URL en retourneert het doel en de lijst met bronnen.

5. Aantal woorden in een document: MapReduce-framework kan worden gebruikt voor het tellen van het aantal keren dat het woord in een document voorkomt.

Samenvatting

Dit gaat allemaal over de Hadoop MapReduce-zelfstudie. Het framework verwerkt enorme hoeveelheden gegevens parallel over het cluster van basishardware. Het verdeelt de taak in onafhankelijke taken en voert deze parallel uit op verschillende knooppunten in het cluster.

MapReduce overwint het knelpunt van het traditionele bedrijfssysteem. Het raamwerk werkt op de sleutel-waardeparen. De gebruiker definieert de twee functies die de kaartfunctie en de reductiefunctie zijn.

De bedrijfslogica wordt in de kaartfunctie gezet. In het artikel waren verschillende geavanceerde concepten van het MapReduce-framework uitgelegd.


  1. Stream van een mongodb-cursor naar Express-reactie in node.js

  2. DeprecationWarning:collection.findAndModify is verouderd. Gebruik in plaats daarvan findOneAndUpdate, findOneAndReplace of findOneAndDelete?

  3. Redis Database TTL

  4. Hoe de uitvoer van een redis-abonnement om te leiden?