Vad är MapReduce i Hadoop? ArchiStruktur och diagram
⚡ Smart sammanfattning
MapReduce är Hadoop-programmeringsmodellen som omvandlar en stor datamängd till ett litet resultat genom att köra en map-funktion över varje indatadelning och sedan en reduce-funktion över de grupperade mellanvärdena.
Vad är MapReduce i Hadoop?
MapReduce är ett programramverk och en programmeringsmodell som används för att bearbeta stora mängder data. MapReduce-program fungerar i två faser, nämligen Map och Reduce. Map-uppgifter hanterar delning och mappningping av data medan Reduce uppgifter blandas och minskar datan.
Hadoop kan köra MapReduce-program skrivna på olika språk: JavaRubin, Pythonoch C++MapReduce-program är parallella till sin natur, så de är mycket användbara för att utföra storskalig dataanalys med flera maskiner i klustret.
Indata till varje fas är nyckel-värdepar. Dessutom behöver varje programmerare specificera två funktioner: en mappningsfunktion och en reduceringsfunktion.
MapReduce ArchiTecture i Big Data förklaras med exempel
Hela processen går igenom fyra faser av exekvering, nämligen delning, mappningping, blandning och reducering.
I den här MapReduce-handledningen ska vi förstå det med ett MapReduce-exempel.
Anta att du har följande indata för din MapReduce i Stora data program:
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Diagrammet nedan tracgår dessa tre linjer genom varje fas, från ingångsdelningarna till vänster till de slutliga ordantalarna till höger.
Det slutliga resultatet av MapReduce-uppgiften är
| illa | 1 |
| Klass | 1 |
| god | 1 |
| Hadoop | 3 |
| is | 2 |
| till | 1 |
| Välkommen | 1 |
Datan går igenom följande faser av MapReduce inom Big Data.
Ingångsdelningar
Indata till ett MapReduce-jobb i Big Data är uppdelat i bitar med fast storlek som kallas indatadelningar. En indatadelning är en del av indatan som förbrukas av en enda karta.
Kartaping
Detta är den allra första fasen i utförandet av ett MapReduce-program. I denna fas skickas data i varje del till en karta.ping funktion för att producera utdatavärden. I vårt exempel är kartans jobbping fasen är att räkna antalet förekomster av varje ord från inmatningsuppdelningarna (mer information om inmatningsuppdelningar ges nedan) och förbereda en lista i form av .
blanda
Denna fas förbrukar kartans utdataping fas. Dess uppgift är att konsolidera relevanta poster från kartanping fasutgång. I vårt exempel är samma ord klubbade tillsammans tillsammans med deras respektive frekvens.
Minska
I den här fasen aggregeras utdatavärdena från blandningsfasen. Denna fas kombinerar värden från blandningsfasen och returnerar ett enda utdatavärde. Kort sagt sammanfattar denna fas hela datamängden.
I vårt exempel aggregerar den här fasen värdena från blandningsfasen, dvs. den beräknar det totala antalet förekomster av varje ord.
MapReduce ArchiTecture förklaras i detalj
Punkterna nedan förklarar hur delningar, mappningsuppgifter och reduceringsuppgifter faktiskt placeras och lagras i klustret.
- En mappningsuppgift skapas för varje delning, som sedan kör mappningsfunktionen för varje post i delningen.
- Det är alltid fördelaktigt att ha flera delningar eftersom tiden det tar att bearbeta en del är kort jämfört med tiden det tar att bearbeta hela indata. När delningarna är mindre blir bearbetningen bättre belastningsbalanserad, eftersom de bearbetas parallellt.
- Det är dock inte heller önskvärt att ha för små delningar. När delningarna är för små börjar kostnaden för att hantera delningarna och skapa kartuppgifter dominera den totala körtiden för jobbet.
- För de flesta jobb är det bättre att göra delningsstorleken lika med storleken på en HDFS blocket, som standard är 128 MB från och med Hadoop 2.x (det var 64 MB i Hadoop 1.x) och styrs av
dfs.blocksizefast egendom. - Körning av mappningsuppgifter resulterar i att utdata skrivs till en lokal disk på respektive nod, och inte till HDFS.
- Anledningen till att välja lokal disk framför HDFS är att undvika replikeringen som sker under en HDFS-lagringsoperation.
- Kartutdata är mellanutdata som bearbetas av reduceringsuppgifter för att producera den slutliga utdata.
- När jobbet är klart kan kartutdata slängas. Så att lagra det i HDFS med replikering blir överdrivet.
- I händelse av nodfel, innan kartutmatningen förbrukas av reduceringsuppgiften, kör Hadoop kartuppgiften igen på en annan nod och återskapar kartutdatan.
- Reduce-uppgifter fungerar inte med konceptet datalokalitet. Utdata från varje kartuppgift matas till reduce-uppgiften. Kartutdata överförs till den maskin där reduce-uppgiften körs.
- På den här maskinen slås utdata samman och skickas sedan till den användardefinierade reduceringsfunktionen.
- Till skillnad från mappningsutdata lagras reduce-utdata i HDFS (den första repliken lagras på den lokala noden och andra repliker lagras på off-rack-noder). Så att skriva reduce-utdata förbrukar nätverksbandbredd, men bara lika mycket som en vanlig HDFS-skrivpipeline förbrukar.
Hur fungerar MapReduce Organizes?
I den här MapReduce-handledningen ska vi lära oss hur MapReduce fungerar.
Hadoop delar upp jobbet i uppgifter. Det finns två typer av uppgifter:
- Kartuppgifter (Delar och kartor)ping)
- Minska uppgifter (blanda, minska)
Hela exekveringsprocessen, det vill säga exekveringen av både Map- och Reduce-uppgifterna, styrs av två typer av entiteter som kallas:
- JobbTracker: agerar som en mästare och ansvarar för att ett inskickat jobb utförs fullständigt.
- Flera uppgifterTrackers: agerar som slavar, var och en av dem utför en del av jobbet.
För varje jobb som skickas in för körning i systemet finns det ett jobb.Tracker som finns på NameNode, och det finns flera TaskTrackers som finns på DataNodes.
Obs: jobbetTracker och uppgiftTracker-paret tillhör MapReduce version 1 (Hadoop 1.x). Från och med Hadoop 2.x delar YARN upp dessa uppgifter mellan en klusteromfattande ResourceManager, en NodeManager på varje nod och en ApplicationMaster per jobb, även om själva mappnings-, shuffle- och reduceringsfaserna är oförändrade.
Diagrammet nedan visar hur ett inskickat jobb är uppdelat i uppgifter och tracsprang över klustret.
- Ett jobb delas upp i flera uppgifter som sedan körs på flera datanoder i ett kluster.
- Det är jobbets ansvar tracker för att koordinera aktiviteten genom att schemalägga uppgifter att köras på olika datanoder.
- Utförandet av en enskild uppgift hanteras sedan av uppgiften tracker, som finns på varje datanod som kör en del av jobbet.
- Uppgiften tracarbetsgivarens ansvar är att skicka lägesrapporten till arbetsgivaren tracker.
- Dessutom uppgiften tracker skickar regelbundet en "hjärtslagssignal" till JobTracför att meddela den om systemets aktuella tillstånd.
- Således jobbet tracker håller track av den totala utvecklingen för varje jobb. Om uppgiften misslyckas, jobbet tracker kan omplanera det på en annan uppgift tracker.


