Cuprins:
- Startup și funcționare NumeNode
- Scrierea datelor
- Citirea datelor
- Balansarea datelor în clusterul Hadoop
- Designul serverului NameNode
Video: Top 20 Outlook 2016 Tips and Tricks 2024
NameNode acționează ca adresă pentru Hadoop Distributed File System (HDFS) deoarece nu știe numai blocurile care compun fișiere individuale, dar și unde sunt stocate fiecare dintre aceste blocuri și replicile acestora. Când un utilizator stochează un fișier în HDFS, fișierul este împărțit în blocuri de date, iar trei copii ale acestor blocuri de date sunt stocate în nodurile slave în întregul cluster Hadoop.
Este o mulțime de blocuri de date pentru a ține evidența. Așa cum v-ați putea aștepta, știind unde sunt îngropate cadavrele, face Nomenclatorul o componentă importantă într-un cluster Hadoop. Dacă numeleNode nu este disponibil, aplicațiile nu pot accesa toate datele stocate în HDFS.
Dacă aruncați o privire la figura următoare, puteți vedea daemonul NameNode care rulează pe un server nod principal. Toate informațiile de mapare care se ocupă de blocurile de date și fișierele corespunzătoare sunt stocate într-un fișier numit.
HDFS este un sistem de fișiere de jurnalizare, ceea ce înseamnă că orice schimbare de date este înregistrată într-un jurnal de editare care urmărește evenimente de la ultimul punct de control - ultima dată când a fost îmbinat jurnalul de editare. În HDFS, jurnalul de editare este menținut într-un fișier numit care este stocat pe NameNode.
Startup și funcționare NumeNode
Pentru a înțelege modul în care funcția NameNode funcționează, este util să examinați cum pornește. Deoarece scopul NameNode este de a informa aplicațiile despre câte blocuri de date au nevoie pentru a procesa și de a urmări locația exactă în care sunt stocate, are nevoie de toate locațiile blocurilor și mapările bloc-la-fi care sunt disponibile în BERBEC.
Acestea sunt pașii pe care Nomenclatorul de Date ia. Pentru a încărca toate informațiile pe care trebuie să le aibă NumeleNode după pornire, se întâmplă următoarele:
-
NameNode încarcă fișierul în memorie.
-
NameNode încarcă fișierul și re-redă modificările redactate pentru a actualiza metadatele de bloc care sunt deja în memorie.
-
Demonii DataNode trimit rapoartele blocului NameNode.
Pentru fiecare nod slave, există un raport bloc care afișează toate blocurile de date stocate acolo și descrie starea de sănătate a fiecăruia.
După terminarea procesului de pornire, NameNode are o imagine completă a tuturor datelor stocate în HDFS și este gata să primească cereri de solicitare de la clienții Hadoop.
Dat fiind că fișierele de date sunt adăugate și eliminate pe baza solicitărilor clientului, modificările sunt scrise în volumele de disc ale nodului slave, sunt actualizate jurnalul în fișier, iar modificările sunt reflectate în locațiile și metadatele stocate în memoria NumelNode.
De-a lungul vieții clusterului, daemonii DataNode trimit batai de inimă NumeNode (un semnal rapid) la fiecare trei secunde, indicând faptul că sunt activi.(Această valoare implicită este configurabilă.) La fiecare șase ore (din nou, o valoare implicită configurabilă), DataNodes trimit NameNode un raport bloc care subliniază ce blocuri de fișiere sunt pe nodurile lor. În acest fel, NameNode are întotdeauna o vizualizare curentă a resurselor disponibile din cluster.
Scrierea datelor
Pentru a crea fișiere noi în HDFS, ar trebui să aibă loc următorul proces:
-
Clientul trimite o cerere către NumeNode pentru a crea un fișier nou.
NameNode determină câte blocuri sunt necesare și clientului i se acordă un lease pentru crearea acestor blocuri de fișiere noi în cluster. Ca parte a acestui contract de leasing, clientul are o limită de timp pentru a finaliza sarcina de creare. (Această limită de timp asigură faptul că spațiul de stocare nu este preluat de aplicațiile client nereușite.)
-
Clientul scrie apoi primele exemplare ale blocurilor de fișiere la nodurile slave utilizând contractul de leasing atribuit de NameNode.
NameNode se ocupă de cererile de scriere și determină locul în care trebuie să fie scrise blocurile de fișiere și replicile acestora, echilibrarea disponibilității și a performanței. Prima copie a unui bloc de fișiere este scrisă într-un rack, iar a doua și a treia copie sunt scrise pe un alt rack decât prima copie, dar în diferite noduri slave din același rack. Acest aranjament minimizează traficul în rețea, asigurând în același timp că nici un bloc de date nu se află pe același punct de eroare.
-
Pe măsură ce fiecare bloc este scris în HDFS, un proces special scrie toate replicile rămase către celelalte noduri slave identificate de NumeNod.
-
După ce daemoanele DataNode confirmă că au fost create replici de bloc de fișiere, aplicația client închide fișierul și notifică numeleNode, care apoi închide leasingul deschis.
Citirea datelor
Pentru a citi fișierele din HDFS, ar trebui să aibă loc următorul proces:
-
Clientul trimite o cerere către NumeNod pentru un fișier.
NameNode determină blocurile care sunt implicate și aleg, pe baza proximității globale a blocurilor unul față de celălalt și de client, cea mai eficientă cale de acces.
-
Clientul accesează apoi blocurile folosind adresele date de NameNode.
Balansarea datelor în clusterul Hadoop
Cu timpul, cu combinații de patternuri ingenioase de date (în cazul în care unele noduri slave ar putea avea mai multe date scrise) sau de noduri, este posibil ca datele să devină distribuite inegal pe rafturi și nodurile slave din clusterul dvs. Hadoop.
Această distribuție inegală poate avea un impact dăunător asupra performanței, deoarece cererea pe nodurile slave individuale va deveni dezechilibrată; nodurile cu puține date nu vor fi utilizate pe deplin; iar nodurile cu multe blocuri vor fi folosite prea mult. ( Notă: Suprasolicitarea și utilizarea necorespunzătoare se bazează pe activitatea discului, nu pe CPU sau RAM.)
HDFS include un utilitar balancer pentru a redistribui blocurile de la nodurile slave neutilizate la cele neutilizate, blochează diferite noduri și rack-uri slave. Administratorii Hadoop ar trebui să verifice în mod regulat starea de sănătate a HDFS și, dacă datele devin inegal distribuite, ar trebui să invocă utilitatea balancer.
Designul serverului NameNode
Din cauza naturii sale critice, serverul principal care rulează daemonul NameNode are nevoie de cerințe hardware diferite față de cele pentru un nod slave. În mod semnificativ, componentele la nivel de întreprindere trebuie utilizate pentru a minimiza probabilitatea unei întreruperi. De asemenea, veți avea nevoie de suficientă memorie RAM pentru a încărca în memorie toate datele despre metadate și locație despre toate blocurile de date stocate în HDFS.