Ce este cache-ul distribuit în Hadoop?

Hadoop este un cadru care este open-source și folosește stocarea distribuită, precum și procesarea seturilor de date uriașe folosind HDFS și MapReduce. Are NameNodes care stochează metadatele și DataNodes care stochează datele reale în HDFS. Când trebuie să procesăm seturile de date uriașe, acesta este realizat de un program scris de utilizatori, iar procesarea se face în paralel în DataNodes. În cadrul Hadoop, există anumite fișiere care sunt necesare de multe ori lucrările MapReduce. Dacă există numărul de mapatori care rulează, de fiecare dată când este necesar să citiți fișierele de la HDFS, latența va crește pe măsură ce timpul de căutare va crește și el. Așadar, în loc să citiți fișierele de fiecare dată când sunt necesare fișierele, fișierele pot fi copiate și trimise la toate DataNodes. Acest mecanism se numește Cache distribuit în Hadoop.

Funcționarea cache-urilor distribuite în Hadoop

  • Hadoop copiază fișierele care sunt specificate de opțiunile cum ar fi: fișiere, -librele și -arhive pe HDFS la lansarea unei lucrări. Apoi Node Manager va copia fișierele din HDFS în cache, astfel încât atunci când se execută o sarcină, acesta poate accesa fișierele. Fișierele pot fi denumite ca fiind localizate, deoarece sunt copiate în cache sau pe discul local.
  • În memoria cache, numărul de sarcini care utilizează fiecare fișier este menținut ca referință de Node Manager. Numărul de referință al fișierelor devine 1 înainte de executarea sarcinii. Dar după ce s-a executat sarcina, numărul scade cu 1. Când numărul devine 0, fișierul poate fi șters deoarece nu se obișnuiește. Când cache-ul unui nod atinge o anumită dimensiune, ștergerea unui fișier se face astfel încât fișierele noi să poată fi găzduite. Mărimea memoriei cache poate fi modificată în proprietatea de configurare. Mărimea cache-ului distribuit în Hadoop este implicit de 10 GB.
  • MapReduce devine mai lent decât cache-ul în proces, dacă are capătul general. Pentru a depăși această situație, memoria cache distribuită poate serializa obiectele, dar chiar și aceasta are puține probleme. Reflectarea este un proces folosit pentru a investiga tipul de informații în timpul rulării, care este foarte lent. De asemenea, devine foarte dificil în serializare unde stochează numele complet al clusterului, numele clasei împreună cu referințe la alte instanțe prezente în variabilele de membru.

Implementarea Hadoop în cache distribuit

  • Pentru a utiliza memoria cache distribuită pentru o aplicație, trebuie să ne asigurăm că pentru a distribui un fișier pe noduri; fișierul ar trebui să fie mai întâi disponibil. Deci, trebuie să copiem fișierele pe HDFS și, de asemenea, trebuie să verificăm dacă fișierul este accesibil prin URI-uri, care pot fi găsite accesând core-site.xml. Apoi, lucrarea MapReduce copiază fișierul cache pe toate nodurile înainte ca activitățile să înceapă să ruleze pe acele noduri.
  • Așadar, pentru a implementa cache distribuit, trebuie să copiem fișierele pe HDFS și putem verifica dacă acest lucru este sau nu realizat prin comanda hdfs dfs –put /path/samplefile.jar. De asemenea, configurația jobului trebuie să fie configurată pentru aplicație și aceasta trebuie adăugată la clasa de drivere.
  • Fișierele care pot fi citite numai de proprietar, accesează cache-ul privat, în timp ce cache-ul partajat are fișierele care pot fi citite în întreaga lume. Fișierul care se adaugă la cache se folosește fără nicio constrângere în toate mașinile din cluster ca fișier local. Apelurile API de mai jos pot fi utilizate pentru a adăuga fișierele în cache.

Cod:

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

Partajarea fișierelor cache distribuite pe nodurile slave depinde în cazul în care fișierele cache distribuite sunt private sau publice. Fișierele cache distribuite private sunt memorate în cache în directorul local al utilizatorului care este privat utilizatorului, iar aceste fișiere sunt solicitate de joburile utilizatorului. În cazul fișierelor cache distribuite publice, fișierele sunt memorate în cache în directorul global. Accesarea fișierelor în caz de cache publică este configurată într-un mod în care acestea sunt vizibile pentru toți utilizatorii. De asemenea, fișierul cache distribuit devine privat sau public în funcție de permisiunea sistemului de fișiere.

Beneficiile cache-ului distribuit în Hadoop

Odată cu utilizarea cache-ului distribuit, multe funcții avantajoase sunt adăugate cadrului Hadoop. Mai jos sunt avantajele utilizării memoriei cache distribuite:

1. Cache distribuit într-un singur punct de eșec

În cazul eșecului unui nod, acesta nu va duce la eșecul cache complet. Deoarece cache-ul distribuit rulează ca un proces autonom sau independent de-a lungul diferitelor noduri. Așadar, dacă eșecul din cache are loc la un singur nod, nu înseamnă că ar trebui să eșueze și cache-ul complet.

2. Coerența datelor

Prin utilizarea algoritmului Hash, se poate determina ce perechi cheie-valoare aparțin nodului. De asemenea, cache-ul distribuit în Hadoop monitorizează sau urmărește modificările de timp făcute în fișierele cache și raportează că până la executarea lucrării, un fișier nu ar trebui să se schimbe. Deci datele nu devin niciodată inconsistente din cauza stării unice a clusterului de cache.

3. Stocarea datelor complexe

Cache-ul distribuit în cadrul Hadoop oferă avantajul de a memora în cache fișierele numai de citire, cum ar fi fișierele text, fișierele de borcan, etc. Din această cauză, o copie a fișierului este stocată în fiecare nod de date. Cu funcția de memorie cache distribuită, fișierele complexe precum un borcan etc. sunt distribuite și stocate.

Concluzie

Cache-ul distribuit oferă eficiență, deoarece fișierele sunt copiate o singură dată pentru fiecare lucrare. De asemenea, are capacitatea de a memora în cache arhivele care nu sunt arhivate pe sclavi. Utilizarea memoriei cache distribuite este un bonus suplimentar și depinde de dezvoltator pentru a utiliza cel mai bine această caracteristică.

Articole recomandate

Acesta este un ghid pentru cache distribuit în Hadoop. Aici vom discuta despre ce este distribuitul cache în Hadoop, activitatea sa, implementarea, cu beneficii. Puteți parcurge și alte articole conexe pentru a afla mai multe -

  1. Avantajele Hadoop
  2. Instalați Hadoop
  3. Ce este Head in Git?
  4. Ecosistemul Apache Hadoop
  5. Variabile în JavaScript

Categorie: