Formáty súborov vo veľkých dátach: stručný vzdelávací program

Formáty súborov vo veľkých dátach: stručný vzdelávací program
Božstvo počasia od Remarina

Tím Cloudové riešenia Mail.ru ponúk preklad článku inžinier Rahul Bhatia z Clairvoyant o tom, aké formáty súborov existujú vo veľkých dátach, aké sú najčastejšie vlastnosti formátov Hadoop a ktorý formát je lepšie použiť.

Prečo sú potrebné rôzne formáty súborov?

Hlavnou prekážkou výkonu aplikácií s podporou HDFS, ako sú MapReduce a Spark, je čas potrebný na vyhľadávanie, čítanie a zápis údajov. Tieto problémy sú znásobené ťažkosťami pri správe veľkých množín údajov, ak máme skôr vyvíjajúcu sa schému ako pevnú, alebo ak existujú určité obmedzenia ukladania.

Spracovanie veľkých dát zvyšuje zaťaženie úložného subsystému – Hadoop ukladá dáta redundantne, aby sa dosiahla odolnosť voči chybám. Okrem diskov sa zaťažuje procesor, sieť, vstupno/výstupný systém atď. S narastajúcim objemom dát rastú aj náklady na ich spracovanie a uchovávanie.

Rôzne formáty súborov v Hadoop vynájdený na riešenie práve týchto problémov. Výber vhodného formátu súboru môže poskytnúť niekoľko významných výhod:

  1. Rýchlejší čas čítania.
  2. Rýchlejší čas nahrávania.
  3. Zdieľané súbory.
  4. Podpora vývoja schémy.
  5. Rozšírená podpora kompresie.

Niektoré formáty súborov sú určené na všeobecné použitie, iné na špecifickejšie použitie a niektoré sú navrhnuté tak, aby spĺňali špecifické dátové charakteristiky. Výber je teda naozaj dosť veľký.

Formát súboru Avro

pre serializácia dát Avro je široko používaný - to reťazec založený, to znamená formát ukladania údajov reťazca v Hadoop. Schému ukladá vo formáte JSON, čo uľahčuje čítanie a interpretáciu ľubovoľným programom. Samotné dáta sú v binárnom formáte, kompaktné a efektívne.

Serializačný systém Avro je jazykovo neutrálny. Súbory môžu byť spracované v rôznych jazykoch, v súčasnosti C, C++, C#, Java, Python a Ruby.

Kľúčovou vlastnosťou Avro je jeho robustná podpora pre dátové schémy, ktoré sa časom menia, teda vyvíjajú. Avro rozumie zmenám schém – odstraňovaniu, pridávaniu alebo zmene polí.

Avro podporuje rôzne dátové štruktúry. Môžete napríklad vytvoriť záznam, ktorý obsahuje pole, vymenovaný typ a podzáznam.

Formáty súborov vo veľkých dátach: stručný vzdelávací program
Tento formát je ideálny na zápis do vstupnej (prechodovej) zóny dátového jazera (dátové jazero, alebo dátové jazero – súbor inštancií na ukladanie rôznych typov dát okrem zdrojov dát priamo).

Tento formát je teda najvhodnejší na zápis do cieľovej zóny dátového jazera z nasledujúcich dôvodov:

  1. Údaje z tejto zóny sa zvyčajne načítajú celé na ďalšie spracovanie následnými systémami – a riadkový formát je v tomto prípade efektívnejší.
  2. Následné systémy môžu jednoducho načítať tabuľky schém zo súborov – nie je potrebné ukladať schémy oddelene v externom meta úložisku.
  3. Akákoľvek zmena pôvodnej schémy je ľahko spracovaná (vývoj schémy).

Formát parketového súboru

Parquet je formát súboru s otvoreným zdrojovým kódom pre Hadoop, ktorý sa ukladá vnorené dátové štruktúry v plochom stĺpcovom formáte.

V porovnaní s tradičným radovým prístupom je Parquet efektívnejší z hľadiska skladovania a výkonu.

Je to užitočné najmä pre dotazy, ktoré čítajú konkrétne stĺpce zo širokej (veľa stĺpcov) tabuľky. Vďaka formátu súboru sa čítajú len potrebné stĺpce, takže I/O sú obmedzené na minimum.

Malá odbočka a vysvetlenie: Aby sme lepšie porozumeli formátu súboru Parquet v Hadoop, pozrime sa, čo je stĺpcový - t. j. stĺpcový - formát. Tento formát ukladá podobné hodnoty pre každý stĺpec spolu.

Napríklad, záznam obsahuje polia ID, Name a Department. V tomto prípade sa všetky hodnoty stĺpca ID uložia spolu, rovnako ako hodnoty stĺpca Názov atď. Tabuľka bude vyzerať asi takto:

ID
Meno
oddelenie

1
emp1
d1

2
emp2
d2

3
emp3
d3

Vo formáte reťazca sa údaje uložia takto:

1
emp1
d1
2
emp2
d2
3
emp3
d3

V stĺpcovom formáte súboru sa rovnaké údaje uložia takto:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Stĺpcový formát je efektívnejší, keď potrebujete dotazovať viacero stĺpcov z tabuľky. Prečíta iba požadované stĺpce, pretože susedia. Týmto spôsobom sú I/O operácie obmedzené na minimum.

Potrebujete napríklad iba stĺpec NAME. IN formát reťazca Každý záznam v množine údajov je potrebné načítať, analyzovať podľa poľa a potom extrahovať údaje NAME. Formát stĺpca vám umožňuje prejsť priamo na stĺpec Názov, pretože všetky hodnoty pre tento stĺpec sú uložené spolu. Nemusíte skenovať celý záznam.

Stĺpcový formát teda zlepšuje výkon dotazu, pretože vyžaduje kratší čas na vyhľadávanie na získanie požadovaných stĺpcov a znižuje počet I/O operácií, pretože sa čítajú len požadované stĺpce.

Jedna z jedinečných vlastností Parkety je, že v tomto formáte môže ukladať dáta s vnorenými štruktúrami. To znamená, že v súbore Parquet možno aj vnorené polia čítať jednotlivo bez toho, aby ste museli čítať všetky polia vo vnorenej štruktúre. Parquet používa algoritmus drvenia a zostavovania na ukladanie vnorených štruktúr.

Formáty súborov vo veľkých dátach: stručný vzdelávací program
Aby ste pochopili formát súboru Parquet v Hadoop, musíte poznať nasledujúce pojmy:

  1. Skupina strún (skupina riadkov): logické horizontálne rozdelenie údajov do riadkov. Skupina riadkov pozostáva z fragmentu každého stĺpca v množine údajov.
  2. Fragment stĺpca (stĺpec chunk): Fragment konkrétneho stĺpca. Tieto fragmenty stĺpcov žijú v špecifickej skupine riadkov a je zaručené, že budú v súbore súvislé.
  3. Page (strana): Fragmenty stĺpcov sú rozdelené na strany písané za sebou. Stránky majú spoločný názov, takže nepotrebné môžete pri čítaní preskočiť.

Formáty súborov vo veľkých dátach: stručný vzdelávací program
Tu názov obsahuje iba magické číslo PAR1 (4 bajty), ktorý identifikuje súbor ako súbor Parquet.

V päte sa píše toto:

  1. Metadáta súboru, ktoré obsahujú počiatočné súradnice metadát každého stĺpca. Pri čítaní si musíte najprv prečítať metaúdaje súboru, aby ste našli všetky požadované fragmenty stĺpcov. Fragmenty stĺpca by sa potom mali čítať postupne. Ďalšie metadáta zahŕňajú verziu formátu, schému a všetky ďalšie páry kľúč – hodnota.
  2. Dĺžka metadát (4 bajty).
  3. Magické číslo PAR1 (4 bajty).

Formát súboru ORC

Optimalizovaný formát súboru riadok-stĺpec (Optimalizovaný riadkový stĺpec, CRO) ponúka veľmi efektívny spôsob ukladania údajov a bol navrhnutý tak, aby prekonal obmedzenia iných formátov. Ukladá údaje v dokonale kompaktnej forme, čo vám umožňuje preskočiť nepotrebné detaily – bez toho, aby ste museli vytvárať veľké, zložité alebo manuálne udržiavané indexy.

Výhody formátu ORC:

  1. Výstupom každej úlohy je jeden súbor, čo znižuje zaťaženie NameNode (názvového uzla).
  2. Podpora pre dátové typy Hive, vrátane DateTime, desiatkových a komplexných dátových typov (štruktúra, zoznam, mapa a spojenie).
  3. Súčasné čítanie toho istého súboru rôznymi procesmi RecordReader.
  4. Schopnosť rozdeliť súbory bez skenovania značiek.
  5. Odhad maximálnej možnej alokácie pamäte haldy pre procesy čítania/zápisu na základe informácií v päte súboru.
  6. Metadáta sú uložené v binárnom serializačnom formáte Protocol Buffers, ktorý umožňuje pridávanie a odstraňovanie polí.

Formáty súborov vo veľkých dátach: stručný vzdelávací program
ORC ukladá kolekcie reťazcov do jedného súboru a v rámci kolekcie sú dáta reťazcov uložené v stĺpcovom formáte.

Súbor ORC ukladá skupiny riadkov nazývaných pruhy a podporné informácie v päte súboru. Postscript na konci súboru obsahuje parametre kompresie a veľkosť komprimovanej päty.

Predvolená veľkosť pruhu je 250 MB. Vďaka takýmto veľkým pruhom sa čítanie z HDFS vykonáva efektívnejšie: vo veľkých súvislých blokoch.

Päta súboru zaznamenáva zoznam jazdných pruhov v súbore, počet riadkov na jazdný pruh a typ údajov každého stĺpca. Zapisuje sa tam aj výsledná hodnota count, min, max a sum pre každý stĺpec.

Päta pásu obsahuje adresár umiestnení streamov.

Pri skenovaní tabuliek sa používajú údaje riadkov.

Údaje indexu zahŕňajú minimálne a maximálne hodnoty pre každý stĺpec a polohu riadkov v každom stĺpci. Indexy ORC sa používajú iba na výber pruhov a skupín riadkov, nie na odpovedanie na otázky.

Porovnanie rôznych formátov súborov

Avro v porovnaní s parketami

  1. Avro je formát ukladania riadkov, zatiaľ čo Parquet ukladá údaje do stĺpcov.
  2. Parquet je vhodnejší pre analytické dotazy, čo znamená, že operácie čítania a dotazovania údajov sú oveľa efektívnejšie ako zápisy.
  3. Zápisové operácie v Avro sa vykonávajú efektívnejšie ako v Parquet.
  4. Avro sa zaoberá evolúciou obvodov vyzretejšie. Parquet podporuje iba pridávanie schém, zatiaľ čo Avro podporuje multifunkčnú evolúciu, teda pridávanie alebo zmenu stĺpcov.
  5. Parquet je ideálny na dopytovanie podmnožiny stĺpcov vo viacstĺpcovej tabuľke. Avro je vhodné pre ETL operácie, kde dopytujeme všetky stĺpce.

ORC vs Parkety

  1. Parkety lepšie ukladajú vnorené dáta.
  2. ORC je vhodnejšie na predikátové pushdown.
  3. ORC podporuje vlastnosti ACID.
  4. ORC komprimuje dáta lepšie.

Čo si ešte prečítať k téme:

  1. Analýza veľkých dát v cloude: ako sa spoločnosť môže stať orientovanou na dáta.
  2. Skromný sprievodca databázovými schémami.
  3. Náš telegramový kanál o digitálnej transformácii.

Zdroj: hab.com

Pridať komentár