Video: Diferentele dintre formatele foto JPEG si RAW 2024
Volumele imense de date care sunt realități într-o desfășurare tipică Hadoop fac ca compresia să fie o necesitate. Comprimarea datelor vă salvează cu adevărat un spațiu de stocare și este sigur că veți accelera mișcarea acelor date în cadrul clusterului. Nu este surprinzător faptul că un număr de sisteme de compresie disponibile, numite codecuri, sunt acolo pentru a vă putea lua în considerare.
Într-o implementare Hadoop, aveți de-a face (potențial) cu un număr destul de mare de noduri slave individuale, fiecare dintre acestea având un număr de unități de disc mari. Nu este neobișnuit ca un nod secundar să aibă mai mult de 45TB de spațiu de stocare brut disponibil pentru HDFS.
Mai întâi, câțiva termeni de bază: un codec, care este o formă scurtă de co mpressor / dec ambele) pentru comprimarea și decompresia datelor; este implementarea unui algoritm de compresie / decompresie.Comprimarea prin divizare
este un concept important într-un context Hadoop. Modul în care lucrează Hadoop este că fișierele sunt împărțite dacă sunt mai mari decât setarea dimensiunii blocului fișierului, iar divizările individuale ale fișierelor pot fi procesate în paralel de către cartografi diferite.
Fiindcă fișierul poate fi decomprimat numai ca un întreg și nu ca părți individuale bazate pe împărțiri, nu poate fi procesată paralel un astfel de fișier, iar performanța ar putea avea un impact uriaș ca un loc de așteptare pentru un cartograf unic procesează mai multe blocuri de date care nu pot fi decomprimate independent.
Compresia de tip splittable este doar un factor pentru fișierele text. În cazul fișierelor binare, codecurile de compresie Hadoop comprimă datele dintr-un container codat binar, în funcție de tipul de fișier (de exemplu, un SequenceFile, Avro sau ProtocolBuffer).
Vorbind despre performanță, există un cost (din punctul de vedere al procesării resurselor și timpului) asociat cu comprimarea datelor care sunt scrise în clusterul dvs. Hadoop.
Cu calculatoare, ca și cu viața, nimic nu este gratuit. Când comprimați datele, faceți schimb de cicluri de procesare pentru spațiu pe disc. Iar când se citesc aceste date, există un cost asociat și cu decomprimarea datelor. Asigurați-vă că ați cântărit avantajele economiilor de stocare față de costurile suplimentare de performanță.
Dacă fișierul de intrare într-o lucrare MapReduce conține date comprimate, timpul necesar pentru a citi acele date din HDFS este redus și performanța lucrării este îmbunătățită. Datele de intrare sunt decomprimate automat atunci când sunt citite de MapReduce.
Extensia de nume de fișier de intrare determină ce codec suportat este utilizat pentru a decomprima automat datele. De exemplu, a. extensia gz identifică fișierul ca fișier comprimat în format gzip.
De asemenea, poate fi utilă comprimarea ieșirii intermediare a fazei hărții în fluxul de procesare MapReduce. Deoarece ieșirea funcției de hartă este scrisă pe disc și expediată în rețea pentru a reduce sarcinile, comprimarea ieșirii poate duce la îmbunătățiri semnificative ale performanței.
Și dacă doriți să stocați ieșirea MapReduce ca fișiere istorice pentru utilizare ulterioară, comprimarea acestor date poate reduce semnificativ spațiul necesar în HDFS.
Există mulți algoritmi și instrumente de compresie diferite, iar caracteristicile și punctele lor forte variază. Cel mai comun compromis este între rapoartele de compresie (gradul în care este comprimat un fișier) și comprimarea / decompresia vitezelor. Cadrul Hadoop acceptă mai multe codecuri. Cadrul comprimă și decomprimă în mod transparent majoritatea formatelor de fișiere de intrare și de ieșire.
Următoarea listă identifică unele codecuri comune care sunt suportate de cadrul Hadoop. Asigurați-vă că alegeți codecul care se potrivește cel mai bine cerințelor din cazul dvs. special de utilizare (de exemplu, cu sarcini de lucru unde viteza de procesare este importantă, ați ales un codec cu viteze de decompresie ridicate):
Gzip:
-
utilitate care a fost adoptată de proiectul GNU, Gzip (scurt pentru GNU zip) generează fișiere comprimate care au o. extensia gz. Puteți folosi comanda gunzip pentru a decomprima fișiere create de un număr de utilitare de compresie, inclusiv Gzip. Bzip2:
-
Din punctul de vedere al utilizabilității, Bzip2 și Gzip sunt similare. Bzip2 generează un raport de compresie mai bun decât Gzip, dar este mult mai lent. De fapt, din toate codecurile de compresie disponibile în Hadoop, Bzip2 este de departe cel mai lent. Dacă creați o arhivă pe care rareori trebuie să o interogați și spațiul este la o primă mare, atunci Bzip2 ar putea fi în valoare.
Snappy:
-
Codecul Snappy de la Google oferă rate de compresie modeste, dar viteze rapide de compresie și decompresie. (De fapt, are cele mai rapide viteze de decompresie, ceea ce o face foarte de dorit pentru seturile de date care se vor întreba deseori.) Codecul Snappy este integrat în Hadoop Common, un set de utilități comune care suportă alte subproiecte Hadoop. Puteți folosi Snappy ca un add-on pentru versiunile mai recente ale Hadoop care nu oferă încă suport pentru codecuri Snappy.
LZO:
-
Similar cu Snappy, LZO (scurt pentru Lempel-Ziv-Oberhumer, trioul oamenilor de știință care a venit cu algoritmul) oferă rate de compresie modeste, dar viteze rapide de compresie și decompresie. LZO este licențiat sub licența GNU Public (GPL). LZO acceptă compresie splittable, care permite procesarea paralelă a fisierelor de fișiere comprimate prin lucrarea dvs. MapReduce. LZO trebuie să creeze un index atunci când comprimă un fișier, deoarece cu blocuri de compresie cu lungime variabilă, este necesar un index pentru a spune mapatorului unde poate împărți în siguranță fișierul comprimat. LZO este cu adevărat de dorit dacă trebuie să comprimați fișiere text.
Codecuri Hadoop
Extensie fișier | Divizibil? | Grad de compresie | Viteză de compresie | Gzip |
---|---|---|---|---|
. gz | Nu | Mediu | Mediu | Bzip2 |
. bz2 | Da | Mare | Slow | Snappy |
. arțăgos | Nu | Mediu | Rapid | LZO |
. | Mediu | Rapid | Toți algoritmi de compresie trebuie să facă compromisuri între gradul de compresie și viteza de compresie pe care le pot obține. Codecurile listate vă oferă un anumit control asupra echilibrului dintre raportul de compresie și viteză la timpul de compresie. | De exemplu, Gzip vă permite să reglați viteza de comprimare prin specificarea unui întreg (sau cuvânt cheie) negativ, unde -1 indică cel mai rapid nivel de compresie și -9 indică cel mai lent nivel de compresie. Nivelul implicit de comprimare este -6. |