Video: Jak wymienić rozrząd w Opel Astra G II Vauxhall 1.6 16V 2024
Când stocați un fișier în HDFS, sistemul îl rupe într-un set de blocuri individuale și stochează aceste blocuri în diferite noduri slave din grupul Hadoop. Acesta este un lucru cu totul normal de făcut, deoarece toate sistemele de fișiere sparge fișierele în blocuri înainte de a le depozita pe disc.
HDFS nu are idee (și nu are grijă) ce este stocat în interiorul fișierului, astfel încât fișierele brute nu sunt împărțite în conformitate cu regulile pe care noi le-am înțelege noi. Oamenii, de exemplu, ar dori limite de înregistrare - linii care să arate unde începe și se termină înregistrarea - să fie respectate.
->HDFS deseori nu știe cu blândețe că înregistrarea finală dintr-un bloc poate fi doar o înregistrare parțială, restul conținutului fiind eliminat în următorul bloc. HDFS dorește doar să se asigure că fișierele sunt împărțite în blocuri de dimensiuni egale care se potrivesc cu dimensiunea predefinită a blocului pentru instanța Hadoop (dacă nu a fost introdusă o valoare particularizată pentru fișierul care este stocat). În figura precedentă, dimensiunea blocului este de 128 MB.
Nu toate fișierele pe care trebuie să le stocați este un multiplu exact al dimensiunii blocului sistemului dvs., astfel încât blocul de date finale pentru un fișier utilizează doar spațiul necesar. În cazul figurii precedente, blocul final de date este de 1 MB.
Conceptul de stocare a unui fișier ca o colecție de blocuri este în întregime compatibil cu modul în care funcționează în mod normal sistemele de fișiere. Dar ceea ce este diferit în ceea ce privește HDFS este scara. O dimensiune tipică a blocului pe care o vedeți într-un sistem de fișiere sub Linux este de 4KB, în timp ce o dimensiune tipică a blocului în Hadoop este de 128MB. Această valoare este configurabilă și poate fi personalizată, atât pentru o nouă valoare implicită a sistemului, cât și pentru o valoare personalizată pentru fișierele individuale.
Hadoop a fost conceput pentru a stoca date la scara petabyte, unde orice limitare potentiala a scalarii este minimizata. Dimensiunea mare a blocurilor este o consecință directă a acestei necesități de stocare a datelor pe o scară masivă.
Mai întâi, fiecare bloc de date stocat în HDFS are propriile metadate și trebuie urmărit de un server central, astfel încât aplicațiile care au nevoie să acceseze un anumit fișier pot fi direcționate oriunde sunt stocate toate blocurile fișierului. Dacă mărimea blocului era în intervalul de kilobyte, chiar și volume modeste de date în scara terabyte ar copleși serverul de metadate cu prea multe blocuri de urmărire.
În al doilea rând, HDFS este proiectat să permită o performanță ridicată, astfel încât procesarea paralelă a acestor seturi de date mari să se întâmple cât mai repede posibil. Cheia spre scalabilitatea lui Hadoop pe partea de prelucrare a datelor este, și va fi întotdeauna, paralelismul - capacitatea de a procesa blocurile individuale ale acestor fișiere mari în paralel.
Pentru a permite o prelucrare eficientă, este nevoie de un echilibru. Pe de o parte, dimensiunea blocului trebuie să fie suficient de mare pentru a garanta resursele dedicate unei unități individuale de procesare a datelor (de exemplu, o hartă sau o sarcină de reducere). Pe de altă parte, dimensiunea blocului nu poate fi atât de mare încât sistemul așteaptă foarte mult timp pentru o ultimă unitate de procesare a datelor pentru a-și termina activitatea.
Aceste două considerații, în mod evident, depind de tipul lucrărilor efectuate pe blocurile de date.