hadoop mapreduce tutorial with examples what is mapreduce
In deze zelfstudie zullen we begrijpen wat MapReduce is, wat de voordelen zijn en hoe Hadoop Map Reduce werkt met voorbeelden:
In de vorige tutorial hebben we geleerd over Hadoop HDFS en de lees- en schrijfmechanismen. Laten we nu een andere Hadoop-component verkennen, namelijk MapReduce.
Laten we het volgende in detail bekijken:
- Wat is MapReduce?
- Zijn voordelen
- Wat is de exacte aanpak van MapReduce?
Bezoek hier voor de exclusieve BigData Training Tutorial Series.
Wat je leert:
Wat is MapReduce?
Laten we verder gaan en beginnen met Hadoop-componenten. Zoals eerder uitgelegd, zijn er twee hoofdcomponenten van Hadoop, namelijk Hadoop HDFS en Hadoop Map Reduce.
De Hadoop HDFS is een bestandsdistributiesysteem dat wordt gebruikt voor het opslaan van een enorme hoeveelheid gegevens in meerdere racks.
Hier zullen we de verwerkingseenheid van Hadoop, d.w.z. MapReduce, bespreken.
De volgende vraag die opkomt is 'wat is Map Reduce en waarom is het vereist?'
Hadoop MapReduce is het 'Verwerkingseenheid' en met behulp van deze component kunnen we de Big Data die is opgeslagen op Hadoop HDFS verwerken.
Maar wat is de exacte vereiste? Waarom hebben we dit onderdeel van Hadoop nodig?
Big Data die is opgeslagen op Hadoop HDFS, wordt niet traditioneel opgeslagen. De gegevens worden verdeeld in stukjes gegevens die zijn opgeslagen in de respectievelijke DataNodes. De volledige gegevens worden dus niet op één centrale locatie opgeslagen.
Daarom kan een native clienttoepassing zoals Java of een dergelijke toepassing de gegevens niet in het huidige formaat verwerken en hebben we een speciaal raamwerk nodig dat de gefragmenteerde gegevensblokken kan verwerken die zijn opgeslagen in de respectievelijke DataNodes.
De verwerking wordt gedaan met behulp van Hadoop MapReduce-verwerking.
Kaart verminderen in een notendop
Het bovenstaande diagram geeft een overzicht van Map Reduce, de functies en toepassingen.
Laten we beginnen met de toepassingen van MapReduce en waar het wordt gebruikt. Bijvoorbeeld, je gebruikt het voor Classificaties, indexering en zoeken , en het creëren van Aanbevelingsmotoren op e-commerce sites (Flipkart, Amazon, etc.) Het wordt ook gebruikt als Analytics door verschillende bedrijven.
Als we kijken vanuit het perspectief van de kenmerken, is het een Programmeermodel en kan worden gebruikt voor Grootschalige gedistribueerd Model zoals Hadoop HDFS en heeft de mogelijkheid van Parallel Programming, wat het erg handig maakt.
Wanneer we de functies in Map Reduce zien, worden twee functies uitgevoerd, namelijk Map Function en Reduce.
Deze technologie is geïmplementeerd door grote organisaties zoals Google, Yahoo, Facebook en ook overgenomen door Apache Hadoop zoals HDFS, PIG, HIVE en voor het opslaan van gegevens of het uitvoeren en verwerken van Big Data met HBase, ook bekend als No-SQL.
Voordelen van Map-Reduce
Deze technologie heeft twee voordelen.
# 1) Parallelle verwerking
Het allereerste voordeel is de parallelle verwerking. Met behulp van Map Reduce kunnen we de gegevens altijd parallel verwerken.
Volgens het bovenstaande diagram zijn er vijf slavemachines en sommige gegevens bevinden zich op deze machines. Hier worden de gegevens parallel verwerkt met Hadoop Map Reduce en wordt de verwerking dus snel.
Wat hier eigenlijk gebeurt, is dat het hele stuk gegevens door Hadoop HDFS wordt verdeeld in HDFS Block en de Map-Reduce verwerkt deze stukken gegevens en dus wordt de verwerking snel.
# 2) Gegevenslocatie
Dit is een veelzijdig ding dat wordt gegeven door Hadoop MapReduce, dat wil zeggen dat we de gegevens kunnen verwerken waar deze zich bevinden.
Wat betekent het?
In de vorige HDFS-zelfstudie begrepen we dat de gegevens die we naar Hadoop Cluster hebben verplaatst, worden verdeeld in HDFS-blokken en deze blokken worden opgeslagen in SlaveMachines of DataNodes. De Map-Reduce detecteert de verwerking en logica naar de respectievelijke Slave Nodes of DataNodes waar de data zich bevindt als HDFS Blocks.
De verwerking wordt uitgevoerd op een kleinere hoeveelheid gegevens op meerdere locaties parallel. Dit bespaart zowel veel tijd als netwerkbandbreedte die nodig is om Big Data van de ene locatie naar de andere te verplaatsen.
Onthoud gewoon dat de gegevens die we verwerken Big Data zijn, opgesplitst in stukjes, en als we beginnen met het verplaatsen van de Big Data rechtstreeks via de toegewezen netwerkkanalen naar een gecentraliseerde machine en deze verwerken, dan zal het ons geen voordeel opleveren omdat we gaan consumeren de volledige bandbreedte bij het verplaatsen van de gegevens naar een gecentraliseerde server.
Voordelen:
wat moet u gebruiken bij het oplossen van problemen met een actieve netwerkkabel
Dus met Hadoop MapReduce doen we niet alleen 'Parallelle verwerking' , verwerken we de gegevens ook naar de respectievelijke Slave Nodes of DataNodes waar de brokken gegevens aanwezig zijn en daarom zijn we ook 'Veel netwerkbandbreedte besparen' wat erg voordelig is.
Ten slotte zijn de SlaveMachines klaar met de verwerking van gegevens die zijn opgeslagen bij SlaveMachines en sturen ze de resultaten terug naar de Master Machine omdat de resultaten niet zo groot zijn als de blokken die op de SlaveMachines waren opgeslagen. Daarom zal het niet veel bandbreedte gebruiken.
De Slave Machines sturen het resultaat terug naar de Master Machine, deze resultaten worden samengevoegd en het uiteindelijke resultaat wordt teruggestuurd naar de Client Machine die de job heeft aangeleverd.
Hier rijst een vraag: wie beslist welke gegevens op welke DataNode moeten worden verwerkt?
De klant dient de job in bij de resource manager en de resource manager is degene die de richting geeft om de job uit te voeren op de respectievelijke DataNodes waar de data zich bevindt, hij beslist op basis van de dichtstbijzijnde DataNode die beschikbaar is, zodat veel netwerk Bandbreedte wordt niet gebruikt.
Traditionele Vs. MapReduce Way
Om dit uit te leggen, zullen we een realistische analogie nemen van het aantal aanvragen voor polishouders van de verzekeringsmaatschappij, iedereen zou op de hoogte zijn van de polissen van verzekeringsmaatschappijen, aangezien de meeste grote verzekeringsmaatschappijen hun vestigingen in verschillende steden hebben.
In die filialen zijn er 'n' aantallen mensen die levensverzekeringspolissen hebben aangevraagd.
Laten we een scenario nemen waarin we vijf vestigingen van verzekeringsmaatschappijen hebben waar mensen levensverzekeringspolissen komen aanvragen. Nu hebben we ook één hoofdkantoor van die verzekeringsmaatschappij die alle informatie heeft over de filialen die beschikbaar en gevestigd zijn.
Wanneer mensen echter een levensverzekeringspolis komen aanvragen op de respectievelijke filialen A, B, C, D, E, worden de polisaanvragen bewaard op de respectievelijke filialen zelf en wordt die informatie niet gedeeld met het hoofdkantoor van de verzekeringsmaatschappij.
Traditionele manier:
Laten we eens kijken hoe mensen traditioneel het beleid aanvragen. Om dit probleem traditioneel op te lossen, worden alle aanvragen naar het hoofdkantoor van de verzekeringsmaatschappij verplaatst en begint het aanvraagproces.
In dit geval moeten we alle aanvragen naar het hoofdkantoor van de verzekeringsmaatschappij verplaatsen, wat een kostbare aangelegenheid is, d.w.z. we moeten alle aanvragen van de takken van de verzekeringsmaatschappij verzamelen en deze naar het hoofdkantoor van de verzekeringsmaatschappij brengen.
Dit is hoe de kosten zijn gemoeid, samen met de enorme inspanningen om deze activiteit uit te voeren.
Een ander aspect hiervan is het overbelaste hoofdkantoor van de verzekeringsmaatschappij, omdat het alle aanvragen moet verwerken die door de mensen zijn aangevraagd voor polissen in de respectieve branches.
Aangezien de verzekeringsmaatschappij de aanvragen verwerkt die in alle vestigingen zijn ingediend, zal het lang duren. Uiteindelijk werkt dit proces niet erg goed.
MapReduce Way
Laten we eens kijken hoe Map-Reduce dit probleem oplost.
MapReduce volgt Data Locality, d.w.z. het zal niet alle aanvragen naar het hoofdkantoor van de verzekeringsmaatschappij brengen, maar de verwerking van de aanvragen in de respectievelijke vestigingen zelf parallel uitvoeren.
Nadat de aanvragen die bij elk filiaal waren ingediend, waren verwerkt, sturen ze de verwerkte gegevens terug naar het hoofdkantoor van de verzekeringsmaatschappij.
Nu hoeft het hoofdkantoor van de verzekeringsmaatschappij alleen het aantal verwerkte aanvragen dat vanuit de respectievelijke filialen is verzonden, te verzamelen en de details in hun respectievelijke database of opslagcentrum te bewaren.
Op deze manier wordt de verwerking zeer gemakkelijk en snel en krijgen de polishouders de voordelen binnen de kortste keren.
Kaart verkleinen in detail
In ons vorige voorbeeld hadden we een invoer (applicaties) die over verschillende takken werden verdeeld en elke invoer werd verwerkt door de respectieve kaartfunctie.
We weten dat MapReduce twee functies heeft, namelijk Map Function en Reduce Function.
Het verwerkingsgedeelte dat op de respectievelijke takken werd gedaan, werd gedaan door de kaartfunctie. Dus elke invoer (aanvraag) in elk filiaal werd verwerkt met behulp van de kaartfunctie, daarna werden de verwerkte gegevens naar het hoofdkantoor van de verzekeringsmaatschappij gestuurd en wordt het aggregatiedeel gedaan door de functie Reduce.
De geaggregeerde verwerkte applicatiedetails worden gegeven als de output.
Dit is wat er gebeurde in ons vorige voorbeeld. Het hele proces was onderverdeeld in de kaarttaak en de taak verminderen.
Kaarttaak krijgt een invoer en de uitvoer van de kaarttaak wordt als invoer aan de verkleintaak gegeven en deze verkleiningsopdracht geeft de uitvoer uiteindelijk aan de klant.
Laten we de anatomie van MapReduce eens doornemen om het op een betere manier te begrijpen.
Een MapReduce-taak werkt op een sleutel-waarde-paar, dus als we het hebben over een kaart, neemt de kaart de invoer als sleutel-waarde en geeft de uitvoer als een lijst met sleutel-waarde. Deze lijst met Key-Value doorloopt een shuffle-fase en de invoer van Key en een lijst met waarden ging naar de Reducer.
Ten slotte geeft de Reducer ons een lijst met de sleutel-waarde-paren.
MapReduce-voorbeeld - proces voor het tellen van woorden
Laten we nog een voorbeeld nemen, namelijk het aantal woorden verwerken op de MapReduce-manier. Dit voorbeeld is hetzelfde als het inleidende voorbeeld van Java-programmering, dat wil zeggen 'Hallo wereld'.
Volgens het diagram hadden we een invoer en deze invoer wordt verdeeld of wordt opgesplitst in verschillende ingangen. Dus dit proces wordt Input Splitting genoemd en de volledige Input wordt verdeeld in gegevenssplitsingen op basis van het nieuwe lijnteken.
De allereerste regel is de eerste invoer, d.w.z. Bigdata Hadoop MapReduce , de tweede regel is de tweede invoer, d.w.z. MapReduce Hive Bigdata Evenzo is het voor de derde invoer Hive Hadoop Hive MapReduce
Laten we naar de volgende fase gaan, namelijk de mappingfase. Nu, in de mappingfase, maken we een lijst met sleutel-waardeparen. Dus de invoer is Sleutel en Waarde, hier is Sleutel niets anders dan de offset van het regelnummer. Het regelnummer is de sleutel en de hele regel is de waarde.
Dus voor regel 1 is de offset de sleutel en de waarde Bigdata Hadoop MapReduce In het echte leven is het regelnummer of de offset een hexadecimaal getal, maar om het gemakkelijk te maken beschouwen we het alleen als nummer 1 of 2.
Dus regel 1 is de sleutel en de hele regel is de waarde. Wanneer het door de toewijzingsfunctie gaat, zal de toewijzing doen, het zal de lijst met sleutel-waardeparen maken. Bijvoorbeeld, Bigdata , dus wat de functie zal doen, is dat het elk woord van de regel leest en een (1) na de komma markeert.
Het markeert één (1) als een waarde; Leuk vinden Bigdata, 1 Hadoop, 1 en MapReduce, 1 Hier is de vraag waarom we één (1) na elk woord plaatsen?
Het is omdat Bigdata is een telling dus Bigdata, 1 Evenzo Hadoop, 1 en MapReduce, 1 hebben zelf één telling, daarom markeren we één (1) als een waarde. Op dezelfde manier hebben we voor tweedelijn of zeg lijn 2, MapReduce Hive Bigdata
Dus op dezelfde manier maakt de toewijzingsfunctie opnieuw de lijst met sleutel-waardeparen ervoor en dus volgens de telling zal de lijst met sleutel-waardeparen zijn MapReduce, 1 Hive, 1 en Bigdata, 1
We krijgen hetzelfde als resultaat van de mappingfunctie voor regel 3, d.w.z. Hive, 2 Hadoop, 1 en MapReduce, 1
Laten we verder gaan met de Shuffling-fase, in deze fase is er voor elke sleutel een lijst opgesteld. In de Shuffling-fase wordt Key weergegeven Bigdata en het zal de waarden aan de lijst toevoegen. Laten we dus eens kijken wat er hier gebeurt.
Zoals we twee inkomende pijlen kunnen zien, komt de eerste pijl uit lijst 1 en komt een andere pijl uit lijst 2, dus het resultaat is Bigdata, (1,1)
Evenzo wanneer we het woord zien Hadoop , opnieuw voor Hadoop er wordt een andere lijst opgesteld voor waarden. Zoals we kunnen zien, wijzen twee inkomende pijlen naar Shuffling, wat het woord betekent Hadoop wordt opgehaald uit respectievelijk lijst 2 en lijst 3, d.w.z. het uiteindelijke resultaat na Shuffling zal zijn Hadoop, (1, 1)
Op dezelfde manier krijgen we de rest van de woorden als Bijenkorf, (1, 1, 1) en MapReduce, (1, 1, 1) samen met hun lijst met waarden of zeg de lijst met tellen volgens de beschikbaarheid van woorden in de respectieve lijsten.
Kom nu naar de Verminderingsfase, in deze fase beginnen we met het samenvoegen van de Waarden die in de lijst aanwezig waren tegen elke Sleutel. Dus voor Bigdata, er waren twee waarden aanwezig in de lijst, d.w.z. (elf) dus de indiening van deze waarden zal gebeuren Bigdata, 2
Evenzo voor Hadoop de waarde is de som, d.w.z. (elf) de inzending zal zijn Hadoop, 2
Op dezelfde manier voor Bijenkorf en MapReduce, de inzending voor Reducing Function zal zijn Bijenkorf, 3 en MapReduce, 3 respectievelijk.
Eindelijk wordt het eindresultaat teruggestuurd naar de klant, zoals weergegeven in het onderstaande diagram van 'The Overall MapReduce Word Count Process'
Het algemene MapReduce-proces voor het tellen van woorden
Dit is hoe het hele proces van het tellen van woorden werkt wanneer u MapReduce Way gebruikt.
Gevolgtrekking
In deze tutorial hebben we het volgende geleerd:
- Hadoop Map Reduce is het 'Verwerkingseenheid' van Hadoop.
- Om de door Hadoop HDFS opgeslagen big data te verwerken, gebruiken we Hadoop Map Reduce.
- Het wordt gebruikt in Zoeken en indexeren, Classificatie, Aanbevelingen en Analytics.
- Het heeft functies zoals programmeermodel, parallel programmeren en grootschalig gedistribueerd model.
- Ontwerppatronen van MapReduce zijn: Samenvatten, classificatie van toprecords, sortering en analyse zoals samenvoegen en selecteren.
- Het heeft maar twee functies d.w.z. Mapper-functie en Reducer-functie.
- Parallelle verwerking en datalocatie zijn de goede voordelen van Hadoop MapReduce.
- Het proces van MapReduce is onderverdeeld in zes fasen, namelijk INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING en FINAL RESULT.
Dat is alles voor deze tutorial, in onze aankomende tutorials behandelen we:
- Hoe werkt MapReduce met YARN en zijn componenten?
- Applicatieworkflow van YARN.
- Wat is Spark en wat is het verschil tussen Hadoop en Spark?
Bekijk hier ALLE BigData-tutorials.
Aanbevolen literatuur
- Wat is Hadoop? Apache Hadoop-zelfstudie voor beginners
- Python DateTime-zelfstudie met voorbeelden
- Data Mart-zelfstudie - Typen, voorbeelden en implementatie van datamart
- Dimensionaal gegevensmodel in datawarehouse - zelfstudie met voorbeelden
- Zelfstudie over Java-array-lengte met codevoorbeelden
- Big data-zelfstudie voor beginners | Wat zijn big data?
- Unix Shell Scripting Tutorial met voorbeelden
- Selenium Find Element By Text Tutorial met voorbeelden