hadoop mapreduce tutorial with examples what is mapreduce
I den här handledningen kommer vi att förstå vad som är MapReduce, dess fördelar och hur fungerar Hadoop Map Reduce med exempel:
I föregående handledning lärde vi oss om Hadoop HDFS och läs- och skrivmekanismerna. Låt oss nu utforska en annan Hadoop-komponent, dvs MapReduce.
Låt oss undersöka följande i detalj:
- Vad är MapReduce?
- Dess fördelar
- Vad är den exakta metoden för MapReduce?
=> Besök här för den exklusiva BigData-utbildningsserien.
Vad du kommer att lära dig:
Vad är MapReduce?
Låt oss gå vidare och börja med Hadoop Components. Som tidigare förklarats finns det två huvudkomponenter i Hadoop, dvs. Hadoop HDFS och Hadoop Map Reduce.
Hadoop HDFS är ett fildistributionssystem som används för att lagra en enorm mängd data i flera rack.
Här kommer vi att diskutera bearbetningsenheten för Hadoop, dvs MapReduce.
bästa programvaran för att konvertera videofiler
Nästa fråga som uppstår är 'vad är Map Reduce och varför krävs det?'
Hadoop MapReduce är 'Processor' och med den här komponenten kan vi bearbeta Big Data som lagras på Hadoop HDFS.
Men vad är det exakta kravet? Varför behöver vi den här komponenten i Hadoop?
Big Data lagrad på Hadoop HDFS lagras inte traditionellt. Data delas upp i bitar av data som lagras i respektive DataNodes. Så hela informationen lagras inte på en central plats.
Därför kan en integrerad klientapplikation som Java eller någon annan sådan applikation inte bearbeta data i det aktuella formatet och vi behöver ett speciellt ramverk som kan bearbeta de fragmenterade datablocken som lagras i respektive DataNodes.
Bearbetningen görs med Hadoop MapReduce-bearbetning.
Karta Minska i ett nötskal
Ovanstående diagram ger en översikt över Map Reduce, dess funktioner och användningsområden.
Låt oss börja med applikationerna i MapReduce och var används den. Till exempel, det används för Klassificatorer, indexering och sökning och skapande av Rekommendationsmotorer på e-handelssajter (Flipkart, Amazon, etc.) Det används också som Analytics av flera företag.
När vi ser ur funktionsperspektivet är det ett Programmeringsmodell och kan användas för Stor skala fördelad Modell som Hadoop HDFS och har kapaciteten Parallel Programming som gör den mycket användbar.
När vi ser funktionerna i Map Reduce körs två funktioner, dvs. Map Function och Reduce-funktionen.
Denna teknik har implementerats av stora organisationer som Google, Yahoo, Facebook och har också antagits av Apache Hadoop som HDFS, PIG, HIVE och för lagring av data eller exekvering och bearbetning av Big Data med hjälp av HBase som också kallas No-SQL.
Fördelar med Map-Reduce
Det finns två fördelar med denna teknik.
# 1) Parallell bearbetning
Den allra första fördelen är parallell bearbetning. Med Map Reduce kan vi alltid bearbeta data parallellt.
Enligt ovanstående diagram finns det fem slavmaskiner och vissa data finns på dessa maskiner. Här bearbetas data parallellt med Hadoop Map Reduce och bearbetningen blir därmed snabb.
Det som faktiskt händer här är att hela biten av data delas av Hadoop HDFS i HDFS Block och Map-Reduce bearbetar dessa bitar av data och därmed bearbetas snabbt.
# 2) Datalokalitet
Detta är en mångsidig sak som ges av Hadoop MapReduce, dvs. vi kan bearbeta data där de är.
Vad betyder det?
I föregående HDFS-handledning förstod vi att data som vi flyttade till Hadoop Cluster delas in i HDFS-block och dessa block sparas i SlaveMachines eller DataNodes. Map-Reduce känner av bearbetning och logik till respektive slavnoder eller DataNoder där data finns som HDFS-block.
Bearbetningen utförs över en mindre bit data på flera platser parallellt. Detta sparar mycket tid samt nätverksbandbredd som krävs för att flytta Big Data från en plats till en annan.
Kom bara ihåg att data vi bearbetar är Big Data uppdelade i bitar, och om vi börjar flytta Big Data direkt genom de tilldelade nätverkskanalerna till en centraliserad maskin och bearbeta den, så ger det oss ingen fördel eftersom vi ska konsumera hela bandbredden när du flyttar data till en central server.
Fördelar:
Så med Hadoop MapReduce gör vi inte bara “Parallell bearbetning” , bearbetar vi också informationen till respektive slavnoder eller datanoder där bitar av data finns och därför är vi också “Spara mycket nätverksbandbredd” vilket är mycket fördelaktigt.
Slutligen görs SlaveMachines med bearbetning av data som lagras på SlaveMachines och de skickar tillbaka resultaten till Master Machine eftersom resultaten inte är lika stora som blocken som lagrades på SlaveMachines. Därför kommer det inte att använda mycket bandbredd.
Slavmaskinerna skickar tillbaka resultatet till Master Machine, dessa resultat sammanställs och det slutliga resultatet skickas tillbaka till Client Machine som skickade jobbet.
Här uppstår en fråga - vem bestämmer vilka data som ska behandlas vid vilken DataNode?
Klienten skickar jobbet till Resource Manager och Resource Manager är den som ger riktningen för att utföra jobbet på respektive DataNodes där data finns, det bestämmer baserat på närmaste DataNode som är tillgänglig så att många nätverk Bandbredd används inte.
Traditionella vs. MapReduce Way
För att förklara detta kommer vi att ta en realistisk analogi av försäkringsbolagets antal försäkringstagare, alla skulle vara medvetna om försäkringsbolagets policy, eftersom de flesta av de stora försäkringsbolagen har sina filialer i olika städer.
I dessa grenar finns det ”n” antal personer som har ansökt om livförsäkringspolicy.
Låt oss ta ett scenario där vi har fem försäkringsfilialer där människor kommer och ansöker om livförsäkringspolicy. Nu har vi också ett huvudkontor i det försäkringsbolaget som har all information om de filialer som finns och finns.
Men när människor kommer och ansöker om livförsäkringspolicy på respektive grenar A, B, C, D, E, förvaras försäkringsansökningarna i respektive filialer och den informationen delas inte med försäkringsbolagets huvudkontor.
Traditionellt sätt:
Låt oss se hur folk traditionellt ansöker om policyn. För att lösa detta problem traditionellt flyttas alla ansökningar till försäkringsbolagets huvudkontor och sedan startar ansökningsprocessen.
I det här fallet måste vi flytta alla ansökningar till försäkringsbolagets huvudkontor, vilket är en kostsam affär, det vill säga vi måste samla alla ansökningar från försäkringsbolagets filialer och ta det till försäkringsbolagets huvudkontor.
Detta är hur kostnaden är involverad tillsammans med de enorma ansträngningarna att göra denna aktivitet.
En annan aspekt av detta är det överbelastade huvudkontoret för försäkringsbolaget, eftersom det måste behandla alla ansökningar som tillämpades av folket för försäkringar i respektive grenar.
Eftersom försäkringsbolaget behandlar de ansökningar som har tillämpats i alla filialer kommer det att ta lång tid. Till slut fungerar den här processen inte så bra.
MapReduce Way
Låt oss se hur Map-Reduce löser detta problem.
MapReduce följer datalokalitet, dvs det kommer inte att ta alla ansökningar till försäkringsbolagets huvudkontor, utan kommer att göra behandlingen av ansökningar i respektive filialer parallellt.
När ansökningarna som har tillämpats på varje gren har behandlats skickar de tillbaka de bearbetade uppgifterna till försäkringsbolagets huvudkontor.
Nu måste försäkringsbolagets huvudkontor bara sammanställa antalet behandlade ansökningar som skickades från respektive filialer och förvara informationen i respektive databas eller lagringscenter.
På detta sätt blir behandlingen mycket enkel och snabb och försäkringstagarna får fördelarna på nolltid.
Karta Minska i detalj
I vårt tidigare exempel hade vi en ingång (applikationer) som distribuerades mellan olika grenar och varje ingång bearbetades av respektive kartfunktion.
Vi vet att MapReduce har två funktioner, dvs. Map Function och Reduce Function.
Behandlingsdelen som gjordes på respektive grenar gjordes av kartfunktionen. Så varje ingång (applikation) i varje gren bearbetades med hjälp av kartfunktionen, efter det att de bearbetade uppgifterna skickades till försäkringsbolagets huvudkontor och aggregeringsdelen görs av Reducera-funktionen.
De aggregerade bearbetade ansökningsuppgifterna ges som Output.
Detta är vad som hände i vårt tidigare exempel. Hela processen delades in i kartuppgiften och reducera uppgiften.
Kartuppgift får en inmatning och utmatningen av kartuppgiften ges till förminskningsuppgiften som en ingång och denna förminskningsuppgift ger slutligen utdata till klienten.
För att förstå det på ett bättre sätt, låt oss gå igenom MapReduce anatomi.
En MapReduce-uppgift fungerar på ett nyckel-värdepar, så när vi pratar om en karta tar kartan inmatningen som nyckel-värde och ger utdata som en lista över nyckel-värde. Den här listan med nyckelvärde går igenom en blandningsfas och inmatning av nyckel och en lista över värden gick till reduceraren.
Slutligen ger Reducer oss en lista över Key-Value-paren.
MapReduce Exempel - ordräkningsprocess
Låt oss ta ett annat exempel, dvs ordräkning bearbeta MapReduce Way. Detta exempel är detsamma som det inledande exemplet på Java-programmering, dvs. ”Hello World”.
vad är en .7z fil?
Enligt diagrammet hade vi en ingång och denna ingång delas eller delas upp i olika ingångar. Så denna process kallas Input Splitting, och hela Input delas in i delningar av data baserat på den nya linjetecknet.
Den allra första raden är den första ingången, dvs. Bigdata Hadoop MapReduce , är den andra raden den andra ingången, dvs. MapReduce Hive Bigdata På samma sätt är det för den tredje ingången Hive Hadoop Hive MapReduce .
Låt oss gå vidare till nästa fas, dvs. kartläggningsfasen. Nu i kartläggningsfasen skapar vi en lista med nyckel-värdepar. Så ingången är nyckel och värde, här är nyckel ingenting annat än förskjutningen av linjenumret. Radnumret är nyckeln och hela raden är värdet.
Så för rad 1 är förskjutningen nyckeln och värdet är Bigdata Hadoop MapReduce . I verkligheten är linjenumret eller förskjutningen ett hexadecimalt tal, men för att göra det enkelt kommer vi bara att betrakta det som nummer 1 eller 2.
Så rad 1 kommer att vara nyckeln och hela raden kommer att vara värdet. När den passerar genom mappningsfunktionen vad kartläggningen kommer att göra kommer den att skapa en lista med nyckel-värdepar. Till exempel, Bigdata , så vad funktionen kommer att göra är att den läser varje ord på raden och markerar ett (1) efter komma.
Det markerar en (1) som ett värde; tycka om Bigdata, 1 Hadoop, 1 och MapReduce, 1 . Här är frågan varför vi lägger en (1) efter varje ord?
Det är på grund av Bigdata är en räkning så Bigdata, 1 . Liknande, Hadoop, 1 och MapReduce, 1 har i sig en räkning, det är därför vi markerar en (1) som ett värde. På samma sätt för andra linjen eller säg rad 2 har vi, MapReduce Hive Bigdata .
Så på samma sätt skapar mappningsfunktionen igen en lista över nyckel-värdepar för den och därmed enligt antalet kommer nyckel-värdepar-listan att vara MapReduce, 1 bikupa, 1 och Bigdata, 1 .
Vi får samma som ett resultat av Mappningsfunktionen för rad 3 d.v.s. Hive, 2 Hadoop, 1 och MapReduce, 1 .
Låt oss gå vidare till blandningsfasen, i denna fas för varje nyckel finns en lista utarbetad. Blandningsfasen kommer att se ut som Key Bigdata och det kommer att lägga till värdena i listan. Så låt oss se vad som händer här.
Som vi kan se två inkommande pilar kommer den första pilen från lista 1 och en annan pil kommer från lista 2 så resultatet blir Bigdata, (1,1) .
På samma sätt när vi ser ordet Hadoop , igen för Hadoop en annan lista kommer att utarbetas för värden. Som vi kan se pekar två inkommande pilar på Blandning vilket betyder ordet Hadoop kommer att hämtas från lista 2 respektive lista 3, dvs det slutliga resultatet efter blandning blir Hadoop, (1, 1) .
På samma sätt får vi resten av orden som Bikupa, (1, 1, 1) och MapReduce, (1, 1, 1) tillsammans med deras lista över värden eller säg listan över räknas enligt ordens tillgänglighet i respektive listor.
Kom nu till reduceringsfasen, i denna fas börjar vi aggregering av de värden som fanns i listan mot varje nyckel. Så för Bigdata, det fanns två värden i listan, dvs. (elva) sålunda kommer inlämnandet av dessa värden att göras så Bigdata, 2 .
På samma sätt för Hadoop Värdet kommer att vara summan, dvs. (elva) inlämningen kommer att vara Hadoop, 2 .
På samma sätt för Bikupa och MapReduce, inlämning för Reducerande funktion kommer att vara Kupan, 3 och MapReduce, 3 respektive.
Äntligen kommer det slutliga resultatet att skickas tillbaka till klienten som visas i nedanstående diagram för 'The Overall MapReduce Word Count Process'
Den totala MapReduce-ordräkningsprocessen
Så här fungerar hela Word Count-processen när du använder MapReduce Way.
Slutsats
I denna handledning lärde vi oss följande:
- Hadoop Map Reduce är 'Processor' av Hadoop.
- För att bearbeta Big Data lagrad av Hadoop HDFS använder vi Hadoop Map Reduce.
- Den används vid sökning och indexering, klassificering, rekommendation och analys.
- Den har funktioner som programmeringsmodell, parallell programmering och storskalig distribuerad modell.
- Designa mönster för MapReduce är: Sammanfattning, klassificering av topprekord, sortering och analyser som Gå med och urval.
- Den har bara två funktioner dvs. mapparfunktion och reduceringsfunktion.
- Parallell bearbetning och datalokalitet är de goda fördelarna med Hadoop MapReduce.
- Processen med MapReduce är uppdelad i sex faser, dvs. INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING och FINAL RESULT.
Det här är allt för denna handledning, i våra kommande handledning kommer vi att täcka:
- Hur fungerar MapReduce med YARN och dess komponenter?
- Application Workflow av YARN.
- Vad är Spark och vad är skillnaden mellan Hadoop och Spark?
=> Kontrollera ALLA BigData-självstudier här.
Rekommenderad läsning
- Vad är Hadoop? Apache Hadoop-handledning för nybörjare
- Python DateTime-handledning med exempel
- Data Mart Tutorial - Typer, exempel och implementering av Data Mart
- Dimensionell datamodell i datalager - handledning med exempel
- Java Array Length Tutorial With Code Exempel
- Big Data Tutorial för nybörjare | Vad är Big Data?
- Unix Shell Scripting Tutorial med exempel
- Selen Find Element by Text Tutorial med exempel