hadoop mapreduce tutorial with examples what is mapreduce
I denne vejledning vil vi forstå, hvad der er MapReduce, dets fordele, og hvordan fungerer Hadoop Map Reduce med eksempler:
I den foregående vejledning lærte vi om Hadoop HDFS og læse- og skrivemekanismerne. Lad os nu udforske en anden Hadoop-komponent, dvs. MapReduce.
Lad os se nærmere på følgende:
- Hvad er MapReduce?
- Dens fordele
- Hvad er den nøjagtige tilgang til MapReduce?
=> Besøg her for den eksklusive BigData-træningsvejledningsserie.
Hvad du lærer:
Hvad er MapReduce?
Lad os gå videre og starte med Hadoop Components. Som forklaret tidligere er der to hovedkomponenter af Hadoop, dvs. Hadoop HDFS og Hadoop Map Reduce.
Hadoop HDFS er et fildistributionssystem, der bruges til at gemme en enorm mængde data i flere racks.
Her vil vi diskutere behandlingsenheden i Hadoop, dvs. MapReduce.
Det næste spørgsmål, der opstår, er 'hvad er Map Reduce, og hvorfor det er nødvendigt?'
Hadoop MapReduce er “Behandlingsenhed” og ved hjælp af denne komponent kan vi behandle de store data, der er gemt på Hadoop HDFS.
Men hvad er det nøjagtige krav? Hvorfor har vi brug for denne komponent af Hadoop?
Store data, der er gemt på Hadoop HDFS, lagres ikke traditionelt. Dataene opdeles i klumper af data, der er gemt i respektive DataNodes. Så hele dataene er ikke lagret på en central placering.
Derfor kan en indfødt klientapplikation som Java eller en sådan applikation ikke behandle dataene i det aktuelle format, og vi har brug for en særlig ramme, der kan behandle de fragmenterede datablokke, der er gemt i respektive DataNodes.
Behandlingen udføres ved hjælp af Hadoop MapReduce-behandling.
Kort reduceres i en nøddeskal
swf-fil åbnes ikke i krom
Ovenstående diagram giver en oversigt over Map Reduce, dets funktioner og anvendelser.
Lad os starte med applikationerne i MapReduce, og hvor bruges det. For eksempel, det bruges til Klassifikatorer, indeksering og søgning og skabelse af Anbefalingsmotorer på e-handelswebsteder (Flipkart, Amazon osv.) Det bruges også som Analytics af flere virksomheder.
Når vi ser fra funktionernes perspektiv, er det en Programmeringsmodel og kan bruges til Stor skala fordelt Model ligesom Hadoop HDFS og har muligheden for parallel programmering, der gør det meget nyttigt.
Når vi ser funktionerne i Kortreduktion, udføres to funktioner, dvs. kortfunktion og formindskelsesfunktion.
Denne teknologi er blevet implementeret af store organisationer som Google, Yahoo, Facebook og blev også vedtaget af Apache Hadoop som HDFS, PIG, HIVE og til lagring af data eller udførelse og behandling af Big Data ved hjælp af HBase, der også er kendt som No-SQL.
Fordele ved kortreduktion
Der er to fordele ved denne teknologi.
# 1) Parallel behandling
Den allerførste fordel er parallelbehandling. Ved hjælp af Map Reduce kan vi altid behandle dataene parallelt.
I henhold til ovenstående diagram er der fem slave-maskiner, og nogle data findes på disse maskiner. Her behandles dataene parallelt ved hjælp af Hadoop Map Reduce, og dermed bliver behandlingen hurtig.
Faktisk hvad der sker her er, at hele mængden af data bliver delt af Hadoop HDFS i HDFS Block, og Map-Reduce behandler disse klumper af data og dermed bliver behandlingen hurtig.
# 2) Datalokalitet
Dette er en alsidig ting, der gives af Hadoop MapReduce, dvs. vi kan behandle dataene, hvor de er.
Hvad betyder det?
I den forrige HDFS-tutorial forstod vi, at de data, vi flyttede ind i Hadoop Cluster, opdeles i HDFS-blokke, og disse blokke gemmes i SlaveMachines eller DataNodes. Map-Reduce registrerer behandling og logik til de respektive slaveknudepunkter eller data-knudepunkter, hvor dataene ligger som HDFS-blokke.
Behandlingen udføres over et mindre stykke data parallelt flere steder. Dette sparer meget tid såvel som netværksbåndbredde, der kræves for at flytte Big Data fra et sted til et andet.
Husk bare, at de data, vi behandler, er Big Data opdelt i klumper, og hvis vi begynder at flytte Big Data direkte gennem de tildelte netværkskanaler til en centraliseringsmaskine og behandle dem, så vil det ikke give os nogen fordel, da vi skal forbruge hele båndbredden ved flytning af data til en central server.
Fordele:
Så ved hjælp af Hadoop MapReduce gør vi ikke bare “Parallel behandling” , vi behandler også dataene videre til de respektive slaveknudepunkter eller datanoder, hvor dataenhederne er til stede, og derfor er vi også “Sparer en masse netværksbåndbredde” hvilket er meget gavnligt.
Endelig udføres SlaveMachines med behandlingen af data, der er gemt på SlaveMachines, og de sender resultaterne tilbage til Master Machine, da resultaterne ikke er så store som de blokke, der blev lagret på SlaveMachines. Derfor bruger den ikke meget båndbredde.
Slave Machines sender resultatet tilbage til Master Machine, disse resultater sammenlægges, og det endelige resultat sendes tilbage til Client Machine, som sendte jobbet.
Her opstår der et spørgsmål - hvem beslutter, hvilke data der skal behandles på hvilken DataNode?
Klienten sender jobbet til Ressource Manager, og Ressource Manager er den, der giver retningen til at udføre jobbet på de respektive DataNodes, hvor dataene er bosat, det beslutter ud fra den nærmeste DataNode, der er tilgængelig, så mange netværk Båndbredde bruges ikke.
Traditionelle vs. MapReduce Way
For at forklare dette tager vi en analogi fra forsikringsselskabets ansøgningstal for forsikringstagere, alle ville være opmærksomme på forsikringsselskabspolitikkerne, da de fleste af de store forsikringsselskaber har deres filialer i forskellige byer.
I disse grene er der ”n” antal mennesker, der har ansøgt om livsforsikringspolitikker.
Lad os tage et scenarie, hvor vi har fem forsikringsselskabsgrene, hvor folk kommer og ansøger om livsforsikringspolitikker. Nu har vi også et hovedkvarter i det forsikringsselskab, der har alle oplysninger om de filialer, der er tilgængelige og placeret.
Men når folk kommer og ansøger om livsforsikringspolice i de respektive filialer A, B, C, D, E, opbevares forsikringsansøgningerne i de respektive filialer, og disse oplysninger deles ikke med forsikringsselskabens hovedkvarter.
Traditionel måde:
Lad os se, hvordan folk traditionelt ansøger om politikken. For at løse dette problem traditionelt flyttes alle applikationerne til forsikringsselskabens hovedkvarter, og derefter starter ansøgningsprocessen.
I dette tilfælde er vi nødt til at flytte alle ansøgningerne til forsikringsselskabens hovedkvarter, hvilket er en kostbar affære, dvs. vi er nødt til at samle alle ansøgningerne fra forsikringsselskabens filialer og tage det til forsikringsselskabens hovedkvarter.
Dette er hvordan omkostningerne er involveret sammen med den enorme indsats for at udføre denne aktivitet.
Et andet aspekt af dette er det overbelastede forsikringsselskabs hovedkvarter, da det skal behandle alle de ansøgninger, der blev anvendt af folket til politikker i de respektive grene.
Da forsikringsselskabet behandler de ansøgninger, der blev anvendt i alle filialer, vil det tage lang tid. I sidste ende fungerer denne proces ikke særlig godt.
MapReduce Way
Lad os se, hvordan Map-Reduce løser dette problem.
MapReduce følger datalokalitet, dvs. det vil ikke bringe alle applikationerne til forsikringsselskabens hovedkvarter, i stedet vil det selv behandle applikationer i de respektive filialer.
Når de ansøgninger, der blev anvendt på hver gren, var behandlet, sender de de behandlede oplysninger tilbage til forsikringsselskabens hovedkvarter.
Nu er forsikringsselskabens hovedkvarter bare nødt til at samle antallet af behandlede ansøgninger, der blev sendt fra de respektive filialer, og gemme detaljerne i deres respektive database eller lagercenter.
På denne måde vil behandlingen være meget let og hurtig, og forsikringstagerne får fordelene på ingen tid.
Kort reduceres i detaljer
I vores tidligere eksempel havde vi et input (applikationer), der blev distribueret mellem forskellige grene, og hvert input blev behandlet af den respektive kortfunktion.
Vi ved, at MapReduce har to funktioner, dvs. kortfunktion og reduceringsfunktion.
Behandlingsdelen, der blev udført på de respektive grene, blev udført af kortfunktionen. Så hver input (applikation) i hver gren blev behandlet ved hjælp af kortfunktionen, hvorefter de behandlede detaljer blev sendt til forsikringsselskabens hovedkvarter, og aggregeringsdelen udføres af Reducer-funktionen.
De aggregerede behandlede ansøgningsoplysninger gives som output.
Dette er, hvad der skete i vores tidligere eksempel. Hele processen blev opdelt i Map Task og Reducer Task.
Map Task får en input, og Output af Map Task gives til Reduce Task som en input, og denne Reducer Task giver Output til sidst til klienten.
For at forstå det på en bedre måde, lad os gennemgå MapReduce's anatomi.
En MapReduce-opgave fungerer på et nøgleværdipar, så når vi taler om et kort, tager kortet indgangen som nøgleværdi og giver output som en liste over nøgleværdi. Denne liste over nøgleværdi gennemgår en blandefase, og input af nøgle og en liste over værdier gik til reduktionsværdien.
Endelig giver Reducer os en liste over nøgleværdiparene.
MapReduce-eksempel - ordoptællingsproces
Lad os tage et andet eksempel, dvs. Word Count Process the MapReduce Way. Dette eksempel er det samme som det indledende eksempel på Java-programmering, dvs. 'Hello World'.
I henhold til diagrammet havde vi en indgang, og denne indgang bliver opdelt eller opdelt i forskellige indgange. Så denne proces kaldes Input Splitting, og hele Input bliver opdelt i split af data baseret på den nye linjekarakter.
Den allerførste linje er den første input, dvs. Bigdata Hadoop MapReduce , den anden linje er den anden input, dvs. MapReduce Bigive Bigdata På samme måde er det for den tredje input Hive Hadoop Hive MapReduce .
Lad os gå videre til næste fase, dvs. kortlægningsfasen. Nu i kortlægningsfasen opretter vi en liste over nøgleværdipar. Så input er nøgle og værdi, her er nøgle intet andet end forskydningen af linjenummeret. Linjenummeret er nøglen, og hele linjen er værdien.
Så for linje 1 er forskydningen nøglen, og værdien er Bigdata Hadoop MapReduce . I det virkelige liv er linienummeret eller forskydningen et hexadecimalt tal, men for at gøre det let vil vi kun betragte det som nummer 1 eller 2.
Så linje 1 vil være nøglen, og hele linjen vil være værdien. Når det passerer kortlægningsfunktionen, hvad kortlægningen vil gøre, opretter den listen over nøgleværdipar. For eksempel, Bigdata , så hvad funktionen vil gøre er, den læser hvert ord på linjen og markerer et (1) efter kommaet.
Det markerer en (1) som en værdi; synes godt om Bigdata, 1 Hadoop, 1 og MapReduce, 1 . Her er spørgsmålet, hvorfor vi sætter en (1) efter hvert ord?
Det er fordi Bigdata er et tal så Bigdata, 1 . Tilsvarende Hadoop, 1 og MapReduce, 1 har selv et antal, hvorfor vi markerer en (1) som en værdi. På samme måde for anden linje eller sige linje 2 har vi, MapReduce Bigive Bigdata .
video downloader software fra ethvert websted
Så på samme måde opretter kortlægningsfunktionen igen listen over nøgleværdipar for den, og således vil antallet af nøgleværdipar i henhold til optællingen være MapReduce, 1 Hive, 1 og Bigdata, 1 .
Vi får det samme som et resultat af Mapping-funktionen til linje 3 dvs. Hive, 2 Hadoop, 1 og MapReduce, 1 .
Lad os gå videre til blandefasen, i denne fase for hver nøgle er der en liste udarbejdet. Blandefasen finder udseendet af Key Bigdata og det vil tilføje værdierne til listen. Så lad os se, hvad der sker her.
Som vi kan se to indkommende pile, kommer den første pil fra liste 1 og en anden pil kommer fra liste 2, så resultatet bliver Bigdata, (1,1) .
Tilsvarende når vi ser ordet Hadoop , igen for Hadoop en anden liste udarbejdes til værdier. Som vi kan se, peger to indkommende pile på Bland, hvilket betyder ordet Hadoop vil blive hentet fra henholdsvis liste 2 og liste 3, dvs. det endelige resultat efter blanding bliver Hadoop, (1, 1) .
På samme måde får vi resten af ordene som Hive, (1, 1, 1) og MapReduce, (1, 1, 1) sammen med deres liste over værdier eller sig listen over tælle i henhold til tilgængeligheden af ord i de respektive lister.
Kom nu til reduktionsfasen, i denne fase starter vi sammenlægning af de værdier, der var til stede på listen mod hver nøgle. Så for Bigdata, der var to værdier til stede på listen, dvs. (elleve) således vil indsendelsen af disse værdier blive gjort det Bigdata, 2 .
Tilsvarende for Hadoop Værdien vil være sum dvs. (elleve) indsendelsen vil være Hadoop, 2 .
På samme måde for Hive og Kortreducer, indsendelsen til Reducerende funktion vil være Hive, 3 og MapReduce, 3 henholdsvis.
Endelig vil det endelige resultat blive sendt tilbage til klienten som vist i nedenstående diagram over 'Den samlede MapReduce-ordoptællingsproces'
Den samlede MapReduce Word Count Process
Sådan fungerer hele ordoptællingsprocessen, når du bruger MapReduce Way.
Konklusion
I denne vejledning lærte vi følgende:
- Hadoop Map Reduce er “Behandlingsenhed” af Hadoop.
- For at behandle Big Data, der er gemt af Hadoop HDFS, bruger vi Hadoop Map Reduce.
- Det bruges i søgning og indeksering, klassificering, anbefaling og analyse.
- Det har funktioner som programmeringsmodel, parallel programmering og storskala distribueret model.
- Designe mønster af MapReduce er: Sammenfatning, klassificering af de bedste poster, sortering og analyser som Join og Selection.
- Det har kun to funktioner dvs. kortlægningsfunktion og reduktionsfunktion.
- Parallel behandling og datalokalitet er de gode fordele ved Hadoop MapReduce.
- Processen med MapReduce er opdelt i seks faser, dvs. INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING og FINAL RESULT.
Det er alt til denne tutorial, i vores kommende tutorials vil vi dække:
- Hvordan fungerer MapReduce med YARN og dets komponenter?
- Application Workflow af YARN.
- Hvad er Spark, og hvad er forskellen mellem Hadoop og Spark?
=> Tjek ALLE BigData-selvstudier her.
Anbefalet læsning
- Hvad er Hadoop? Apache Hadoop-vejledning til begyndere
- Python DateTime-tutorial med eksempler
- Data Mart Tutorial - Typer, eksempler og implementering af Data Mart
- Dimensional datamodel i datalager - vejledning med eksempler
- Java Array Length Tutorial med kodeeksempler
- Big Data Tutorial for begyndere | Hvad er Big Data?
- Unix Shell Scripting Tutorial med eksempler
- Selen Find Element By Text Tutorial med eksempler