Hvad er distribueret cache i Hadoop?

Hadoop er en ramme, der er open source og bruger distribueret opbevaring såvel som behandlingen af ​​enorme datasæt ved hjælp af HDFS og MapReduce. Det har Navnekoder, der gemmer metadataene og Datanoder, der gemmer de faktiske data i HDFS. Når vi skal behandle de enorme datasæt, udføres det af et program, der er skrevet af brugerne, og derefter foregår behandlingen parallelt i DataNodes. I Hadoop-rammen er der visse filer, som ofte kræves af MapReduce-job. Hvis der er antallet af kortlæggere, der kører, hver gang, når det er nødvendigt at læse filerne fra HDFS, vil latenstiden stige, da søgetiden også øges. Så i stedet for at læse filerne hver gang, hvor filerne er nødvendige, kan filerne kopieres og sendes til alle DataNodes. Denne mekanisme kaldes Distribueret cache i Hadoop.

Arbejde med distribueret cache i Hadoop

  • Hadoop kopierer filerne, der er specificeret af indstillingerne som –filer, -libjars og –arkiver til HDFS, når et job startes. Derefter kopierer Node Manager filerne fra HDFS til cachen, så når en opgave kører, kan den få adgang til filerne. Filerne kan betegnes som lokaliserede, da de kopieres til cachen eller den lokale disk.
  • I cachen opretholdes antallet af antal opgaver, der bruger hver fil, som en reference af Node Manager. Referencetallet for filerne bliver 1, inden opgaven kører. Men efter at opgaven er kørt, reduceres antallet med 1. Når tællingen bliver 0, kan filen slettes, da den ikke bliver brugt. Når en nodes cache når sin bestemte størrelse, udgår sletningen af ​​en fil, så de nye filer kan tilpasses. Størrelsen på cachen kan ændres i konfigurationsegenskabet. Størrelsen på den Distribuerede cache i Hadoop er som standard 10 GB.
  • MapReduce bliver langsommere end cache i processen, hvis den har overhead. For at overvinde denne situation kan den distribuerede cache serialisere objekterne, men selv dette har få problemer. Reflektion er en proces, der bruges til at undersøge informationstypen i løbetid, hvilket er meget langsomt. Det bliver også meget vanskeligt ved serialisering, hvor det gemmer det komplette klyngenavn, klassens navn sammen med henvisninger til andre tilfælde, der findes i medlemsvariablerne.

Implementering af Hadoop i distribueret cache

  • For at bruge den distribuerede cache til et program skal vi sørge for, at for at distribuere en fil på tværs af noder; filen skal være først tilgængelig. Så vi er nødt til at kopiere filerne til HDFS, og vi er også nødt til at kontrollere, at filen er tilgængelig via URI'er, som kan findes ved at få adgang til core-site.xml. Derefter kopierer MapReduce-jobbet cache-filen til alle noder, inden opgaverne begynder at køre på disse noder.
  • Så for at implementere distribueret cache, er vi nødt til at kopiere filerne til HDFS, og vi kan kontrollere, om dette er gjort eller ikke via hdfs dfs –put /path/samplefile.jar-kommandoen. Jobkonfigurationen skal også konfigureres til applikationen, og denne skal føjes til førerklassen.
  • De filer, der kun kan læses af ejeren, går til privat cache, mens den delte cache har de filer, der er verdenslæselige. Filen, der tilføjes cachen, bliver brugt uden nogen begrænsning i alle maskiner i klyngen som en lokal fil. De følgende API-opkald kan bruges til at tilføje filerne i cachen.

Kode:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

Deling af distribuerede cache-filer på slaveknudepunkter afhænger af, om de Distribuerede cache-filer er private eller offentlige. De private distribuerede cache-filer cachelagres i det lokale bibliotek for brugeren, som er privat for brugeren, og disse filer kræves af brugerens job. Når det gælder de offentlige Distribuerede cache-filer, bliver filerne cachelagret i det globale bibliotek. Adgangen til filer i tilfælde af offentlig cache er indstillet på en måde, hvor de er synlige for alle brugere. Den distribuerede cache-fil bliver også privat eller offentlig afhængig af tilladelsen på filsystemet.

Fordelene ved distribueret cache i Hadoop

Med brugen af ​​den distribuerede cache tilføjes mange fordelagtige funktioner til Hadoop-rammen. Nedenfor er fordelene ved at bruge distribueret cache:

1. Distribueret cache i enkelt mislykket punkt

I tilfælde af en knapfejl mislykkes det ikke den komplette cache-fejl. Fordi den distribuerede cache kører som en enkeltstående eller uafhængig proces på tværs af de forskellige noder. Så hvis cache-fejlen opstår på en knude, betyder det ikke, at den komplette cache også skal mislykkes.

2. Konsistens af data

Ved hjælp af Hash-algoritmen kan det bestemmes, hvilke nøgleværdipar, der hører til hvilken knude. Den distribuerede cache i Hadoop overvåger eller sporer også tidsstemplet ændring udført i cache-filerne, og det rapporteres, at indtil jobbet er udført, bør en fil ikke ændres. Så dataene bliver aldrig inkonsekvente på grund af den enkelte tilstand i cache-klyngen.

3. Opbevaring af komplekse data

Den distribuerede cache i Hadoop-rammen giver fordelen ved at cache de read-only filer som tekstfiler, jar-filer osv. Og derefter udsende dem til dataknudepunkter. På grund af dette gemmes en kopi af filen i hver dataknude. Med den distribuerede cache-funktion distribueres og lagres komplekse filer som en krukke osv.

Konklusion

Distribueret cache giver effektivitet, fordi filerne kopieres en gang for hvert job. Det har også kapacitet til at cache arkiver, der ikke arkiveres på slaver. Brugen af ​​distribueret cache er en ekstra bonus og afhænger af udvikleren for at udnytte denne funktion bedst muligt.

Anbefalede artikler

Dette er en guide til Distribueret cache i Hadoop. Her diskuterer vi Hvad er Distribueret cache i Hadoop, dets arbejde, implementering og fordele. Du kan også gennemgå vores andre relaterede artikler for at lære mere -

  1. Fordele ved Hadoop
  2. Installer Hadoop
  3. Hvad er hoved i Git?
  4. Apache Hadoop økosystem
  5. Variabler i JavaScript

Kategori: