sql >> Database teknologi >  >> RDS >> Database

Sådan fungerer MapReduce i Hadoop

MapReduce var en model introduceret af Google som en metode til at løse en klasse af Big Data-problemer med store klynger af billige maskiner. Hadoop optager denne model i kernen af ​​dens arbejdsproces. Denne artikel giver en indledende idé om MapReduce-modellen, der bruges af Hadoop til at løse Big Data-problemet.

Oversigt

En typisk Big Data-applikation beskæftiger sig med et stort sæt skalerbare data. Brug af en enkelt database til at gemme og hente kan være en stor behandlingsflaskehals. Dette gælder især, hvis vi bruger en monolitisk database til at gemme en enorm mængde data, som vi kan se med relationelle databaser, og hvordan de bruges som et enkelt lager. Dette kommer ikke til at virke, især vi skal håndtere store datasæt i et distribueret miljø.

Google brugte MapReduce-algoritmen til at løse situationen og kom med en løsning. Ideen er at dele den større opgave op i mindre håndterbare dele og fordele dem på tværs af computere i netværket til behandling. Det således opnåede resultat integreres for at danne det endelige datasæt. Denne idé blev grundlaget for Doug Cuttings Hadoop-projekt. Hadoop bruger denne algoritme til at behandle data parallelt med andre for at levere en komplet statistisk analyse af store datasæt. Derfor kan Hadoop groft opdeles i to dele:

  • Behandler: Udnyttet af MapReduce-algoritmen
  • Lagring: Udnyttet af HDFS

Hadoop MapReduce er således en implementering af algoritmen udviklet og vedligeholdt af Apache Hadoop-projektet. Det fungerer som en maskine i sig selv, hvor vi leverer input, og motoren reagerer ved at omdanne input til output hurtigt og effektivt, behandler gennem flere trin. Denne åbenlyst forenklede idé trænger til en lille uddybning, da den følger ned ad linjen.

MapReduce

MapReduce er en parallel programmeringsmodel, der bruges til hurtig databehandling i et distribueret applikationsmiljø. Det fungerer på datasæt (multi-terabytes af data) fordelt på tværs af klynger (tusindvis af noder) i råvarehardwarenetværket. MapReduce-programmer kører på Hadoop og kan skrives på flere sprog - Java, C++, Python og Ruby. De principielle kendetegn ved MapReduce-programmet er, at det i sagens natur har indtaget ånden af ​​parallelitet i programmerne. Dette gør den ideel til dataanalyse i stor skala, som kan udnytte modellen for parallelisme i sin praksis for at presse resultater mere effektivt og hurtigt ud af en eksisterende infrastruktur.

Sådan virker det

Hadoop MapReduce opdeler opgaverne i flere faser, hver med et betydeligt sæt funktioner til at udtrække det ønskede resultat fra Big Data. Det fungerer på noder i en klynge hostet på en samling af råvareservere. Processen begynder med brugeranmodningen, der kører MapReduce-motoren og slutter med, at resultatet gemmes tilbage til HDFS.

Vi kan starte et MapReduce-job til at køre ved at starte JobClient.runJob(conf) metode. Dette er en praktisk metode til at oprette en ny JobClient eksempel. Dette påkalder igen submitJob() og poller jobbets fremskridt hvert sekund og rapporterer tilbage til konsollen, hvis der er ændringer siden den sidste rapport blev genereret. Dette har en ringvirkning og udløser en række operationer bag kulisserne. Det første trin er at finde og læse inputfilen, som indeholder de rå data. Filformatet er vilkårligt og skal konverteres til et format, der er egnet til behandling. Dette er jobbet for InputFormat og RecordReader(RR) . InputFormat bruger funktionen kaldet InputSplit at opdele filen i mindre dele. RecorReader(RR) transformerer derefter rådataene og gør dem tilgængelige for behandling af kort .

Kortlægning

Når dataene er acceptable at kortlægge, opretter de en særskilt instans til hvert inputpar (nøgle og værdi) og begynder at behandle. Så snart kortlægningsfunktionen begynder at producere output, skrives den ikke direkte til disken; i stedet gemmes det i hukommelsesbufferen for at foretage en forudsortering. Hvert kort opretholder en cirkulær buffer, hvor det omdirigerer outputtet. Ved overskridelse af tærskelstørrelsen skrives indholdsspildet tilbage til disken. Det opdeler yderligere dataene i partitioner, der er acceptable for den reducer, hvortil dataene omdirigeres næste gang. Alle disse værker foregår dog på en samtidig måde på flere noder i Hadoop-klyngen. Efter at have afsluttet kortopgaverne akkumuleres mellemresultaterne i partitionen, og blanding og sortering finder sted for at optimere outputtet til reducering til at overtage som input.

Reducer og flet

Det, der reducerer, er også et nøgle-, værdipar og fungerer på samme måde som kortet. Den samler kortoutputtet fra flere kortopgaver på tværs af klyngen og begynder først at behandle, efter at kortlægningen er fuldført. Den har et sæt kopitråde til at flette og overføre output fra kortet til disken. Efterhånden som kopier bliver akkumuleret på disken, gør en baggrundstråd jobbet med at flette dem til større, sorterede filer. Det giver også output i form af en nøgle, et værdipar og skal muligvis omformateres af OutputFormat før ansøgningen kan acceptere formatet. OutputFormat tager endelig nøglen, værdiparret og skriver de behandlede data tilbage til HDFS. Her, RecordWriter spiller hovedrollen, ligesom RecordReader , bortset fra at den deltager, mens den læser fra HDFS i begyndelsen.

Konklusion

Dette er kun toppen af ​​isbjerget. Der er mange indviklede detaljer og meget mere foregår bag kulisserne. Kort sagt giver Hadoop MapReduce mulighederne for at opdele Big Data i mindre, håndterbare dele, behandle dem parallelt på en distribueret klynge og endelig gøre dataene tilgængelige til forbrug eller yderligere behandling. Hadoop er i dag vokset til at være et større økosystem af værktøjer og teknologier til at løse aldrende Big Data-problemer og udvikler sig hurtigt for at forfine dets funktioner.


  1. Sqlplus login fejl ved brug af bash variabler:SP2-0306:Ugyldig indstilling

  2. Kan jeg bruge CASE-erklæringen i en JOIN-tilstand?

  3. MySQL-databaseimplementeringsautomatisering

  4. Guide til designdatabase til online indkøbskurv i MySQL