sql >> Database teknologi >  >> NoSQL >> HBase

Spekulativ udførelse i Hadoop MapReduce

I denne MapReduce Speculative Execution-artikel vil du udforske Hadoop spekulative udførelse i detaljer. Du vil lære, hvad der er spekulativ udførelse, hvad er dets behov, hvordan vi kan aktivere og deaktivere det.

Artiklen forklarer også, om det er gavnligt eller ej, og hvordan det virker.

Hvad er spekulativ udførelse i Hadoop?

MapReduce-modellen i Hadoop-rammeværket opdeler jobs i selvstændige opgaver og kører disse opgaver parallelt for at reducere den samlede jobudførelsestid.

Dette gør jobudførelsen tidsfølsom for de langsomt kørende opgaver, fordi kun en enkelt langsom opgave kan gøre hele jobudførelsestiden længere end forventet. Når et job består af tusinder eller hundredvis af opgaver, så er muligheden for de få vanskelige opgaver meget reel.

Opgaverne kan være langsomme på grund af forskellige årsager, såsom softwarefejlkonfiguration eller hardwareforringelse. Men årsagen, der får jobbet til at køre langsomt, er svær at opdage, fordi opgaverne stadig fuldføres med succes, selvom det tager længere tid end forventet.

Hadoop-rammen forsøger ikke at diagnosticere eller rette de langsomt kørende opgaver. Frameworket forsøger at detektere opgaven, der kører langsommere end den forventede hastighed og starter en anden opgave, som er en tilsvarende opgave som backup.

Sikkerhedskopieringsopgaven er kendt som den spekulative opgave, og denne proces er kendt som spekulativ udførelse i Hadoop.

Hvad er behovet for spekulativ henrettelse i Hadoop?

I Hadoop-strukturen er inputfilen opdelt i flere blokke, og disse blokke blev gemt på de forskellige noder i Hadoop-klyngen.

Når MapReduce-jobbet indsendes af klienten, beregner det antallet af InputSplits og kører lige så mange mappers som antallet af InputSplit. Disse kortlæggere (kortopgaver) kører parallelt på DataNodes, hvor de opdelte data ligger.

Hvad nu hvis de få DataNodes i Hadoop-klyngen ikke udfører opgaverne lige så hurtigt som de andre DataNodes, enten på grund af hardwarefejl eller netværksproblemer.

Så de kortopgaver, der kører på disse DataNodes, vil være langsommere sammenlignet med de kortopgaver, der kører på de andre DataNodes. Reduceren kan kun starte sin udførelse, når de mellemliggende udgange fra alle kortlæggere er tilgængelige.

Derfor vil de færre langsomme kortopgaver forsinke udførelsen af ​​Reducer.

Hvis Reducer kører på den langsommere node, vil det også forsinke den samlede opgaves endelige output.

Så for at beskytte sig mod sådanne langsomt kørende opgaver, starter Hadoop-rammeværket den samme opgave på den anden node. Denne optimering af Hadoop-rammen kaldes den spekulative udførelse af opgaven.

Hvordan fungerer spekulativ henrettelse i Hadoop?

Den spekulative eksekvering starter ikke de to duplikerede opgaver for hver uafhængig opgave i et job på nogenlunde samme tid, så de kan kæmpe mod hinanden. Hvis rammen gør det, vil det føre til spild af klyngressourcerne.

I stedet for det sporer skemalæggeren fremskridtene for alle opgaverne af samme type (såsom kort og reducer) i et job og starter kun de spekulative dubletter for små proportioner, der kørte langsommere end gennemsnittet.

Når opgaven er fuldført, blev alle duplikerede opgaver, der kører, dræbt, da de ikke længere var nødvendige.

Så hvis den oprindelige opgave afsluttes før den spekulative opgave, bliver den spekulative opgave dræbt. Hvis den spekulative opgave afsluttes før den oprindelige opgave, bliver originalen dræbt.

Bemærk, at den spekulative udførelse er en optimering. Det er ikke en funktion til at få MapReduce-jobbene til at køre mere pålideligt.

Hvordan konfigureres spekulativ udførelse i Hadoop?

Som standard er den spekulative udførelse aktiveret for kortopgaven såvel som for reduktionsopgaverne. Dens egenskaber er angivet i mapred-site.xml konfigurationsfil.

  • mapreduce.map.speculative :Hvis denne egenskab er sat til sand, er den spekulative udførelse af kortopgaven aktiveret. Som standard er det sandt.
  • mapreduce.reduce.speculative :Hvis denne egenskab er sat til sand, er den spekulative udførelse af reduktionsopgaven aktiveret. Som standard er det sandt.

Hvorfor vil du nogensinde slå spekulativ henrettelse fra?

Hovedmålet med den spekulative udførelse er at reducere udførelsestiden for job. Men dette vil komme på bekostning af Hadoop-klyngeeffektiviteten.

På en travl Hadoop-klynge kan dette reducere den samlede gennemstrømning, fordi de redundante opgaver udføres for at reducere udførelsestiden for det enkelte job.

På grund af denne grund deaktiverer nogle klyngeadministratorer den spekulative udførelse på Hadoop-klyngen og lader brugere udtrykkeligt slå det til for de enkelte job.

Vi kan slå det fra for reduktionsopgaverne, fordi alle duplikerede reduktionsopgaver kræver at hente de samme mapper-output som den oprindelige opgave, hvilket vil øge netværkstrafikken på klyngen betydeligt.

Er spekulativ udførelse fordelagtig?

Spekulativ eksekvering i Hadoop er fordelagtig i nogle tilfælde, fordi i Hadoop-klyngen, der har hundreder eller tusinder af noder, er problemer som netværksoverbelastning eller hardwarefejl almindelige.

Så det vil være bedre at køre parallelle eller duplikerede opgaver. Men i tilfælde af, at hvis de to dobbelte opgaver for hver uafhængig opgave i et job lanceres på omtrent samme tid, så vil det være spild af klyngressourcer.

Oversigt

Jeg håber, efter at have læst denne artikel, at du klart forstod, hvad spekulativ henrettelse i Hadoop er, og hvorfor det er nødvendigt. Du har også set, hvordan vi kan deaktivere det for kortopgaver og reducere opgaver individuelt.


  1. MongoDB samlet forespørgsel ved hjælp af PHP-driver

  2. MongoDB - Forskel mellem indeks på tekstfelt og tekstindeks?

  3. oprettelse af registrerings- og loginformular i node.js og mongodb

  4. Hvorfor Redis SortedSet bruger Skip List i stedet for Balanced Tree?