Failiformaadid suurte andmete puhul: lühike ülevaade

Failiformaadid suurte andmete puhul: lühike ülevaade
Weather Deity by Remarin

Meeskond Mail.ru Cloud Solutions pakub artikli tõlke Clairvoyant'i insener Rahul Bhati räägib, millised failiformaadid on suurtel andmepumpadel, millised on kõige levinumad Hadoopi failiformaatide funktsioonid ja milline formaat on parem kasutada.

Miks on erinevad failiformaadid vajalikud

HDFS-i toetavate rakenduste, nagu MapReduce ja Spark, jõudluse tõsine kitsaskoht on andmete otsingu, lugemise ja kirjutamise aeg. Need probleemid süvenevad, kui meil on mittefikseeritud, vaid arenev skeem või kehtivad ladustamise piirangud.

Suurte andmete töötlemine suurendab salvestusseadme koormust — Hadoop salvestab andmeid üleliigseena, et saavutada töökindlus. Lisaks ketastele koormavad töötlust, võrku, sisend-väljundisüsteemi jne. Andmemahtude kasvades suureneb ka nende töötlemise ja salvestamise kulu.

Erinevad failiformaadid Hadoop on loodud just nende probleemide lahendamiseks. Sobiva failiformaadi valimine võib pakkuda märkimisväärseid eeliseid:

  1. Kiirem lugemisaeg.
  2. Kiirem kirjutamisaeg.
  3. Jagatavad failid.
  4. Scheemade toetamist.
  5. Täpsem tihenduse tugi.

Mõned failiformaadid on mõeldud üldiseks kasutamiseks, teised aga spetsiifilisematele variantidele, ja osa neist on loodud arvestama konkreetsete andmete omadustega. Seega on valik tõeliselt suur.

Avro failiformaat

Kuna andmete serialiseerimine Avro-d kasutatakse laialdaselt — see on rea peal põhinevandmete salvestamise formaat Hadoopis. See salvestab skeemi JSON formaadis, mis lihtsustab selle lugemist ja tõlgendamist igas programmis. Andmed ise on salvestatud binaarformaadis, kompaktselt ja tõhusalt.

Avro serialiseerimissüsteem on keele neutraalne. Faile saab töödelda paljude keeltega, sealhulgas C, C++, C#, Java, Python ja Ruby.

Avro peamine omadus on usaldusväärne toetus andmeskeemidele, mis aja jooksul muutuvad, st evolveeruvad. Avro mõistab skeemi muudatusi — väljade eemaldamist, lisamist või muutmist.

Avro toetab erinevaid andmestruktuure. Näiteks saab luua kirje, mis sisaldab massiivi, ümberloetavat tüüpi ja alamkirjet.

Failiformaadid suurte andmete puhul: lühike ülevaade
See formaat sobib suurepäraselt andmete järve maandumis- (ülemineku) tsooni kirjutamiseks (andmete järv, või data lake — erinevat tüüpi andmete hoidmise instantside kogum, millele on lisatud andmeallikaid otse).

Seega on selle formaadi kasutamine andmete järve maandumiszona kirjutamiseks parim valik järgmistele põhjustele:

  1. Andmed sellest tsoonist loetakse tavaliselt täielikult edasiseks töötlemiseks madalama süsteemide poolt — ja ridadepõhine formaat on sel juhul efektiivsem.
  2. Madalamad süsteemid saavad hõlpsasti faili skeemide tabeleid ekstraktida — skeemide eraldi hoidmine välistes meta-hoidlates pole vajalik.
  3. Küsimustele, mis on seotud algse skeemi muutmisega, on lihtne reageerida (skeemi evolutsioon).

Parquet failivormaat

Parquet on avatud lähtekoodiga failiformaat Hadoopi jaoks, mis salvestab sisemised andmestruktuurid tasapinnalisel veergude kujul.

Võrreldes traditsioonilise ridade lähenemisega on Parquet salvestamise ja jõudluse poolest efektiivsem.

See on eriti kasulik päringute jaoks, mis loevad teatud veerge laias (palju veerge sisaldavas) tabelis. Failiformaadi tõttu loetakse ainult vajalikud veerud, nii et sisend-väljund on minimeeritud.

Lühike kõrvalnäide: et paremini mõista Hadoopi Parquet faili formaati, vaatame, mis on veerupõhine — ehk veerge kasutav — formaat. Sellises formaadis hoitakse koos sarnaseid väärtusi igast veerust.

Piemēram, rekord sisaldab välju ID, Name ja Department. Sel juhul hoitakse kõiki veeru ID väärtusi koos, samuti veeru Name väärtusi ja nii edasi. Tabel näeks välja umbes selline:

ID
Nimi
Department

1
emp1
d1

2
emp2
d2

3
emp3
d3

Stringiformaadis salvestatakse andmed järgmiselt:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Veerupõhises failiformaadis salvestatakse samad andmed nii:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Veerupõhine formaat on tõhusam, kui peate tabelist küsima mitut veergu. See loeb ainult vajalikke veerge, kuna need asuvad kõrvuti. Nii et sisend-väljund toimingud on minimeeritud.

Näiteks vajate ainult veergu NAME. V stringiformaadis Iga andmekirje komplekti tuleb laadida, sorteerida väljade järgi ja seejärel välja võtta andmed NAME. Veergude formaat võimaldab minna otse veergu Name, kuna kõik selle veeru väärtused on salvestatud koos. Ainult kogu kirje skaneerimist ei ole vaja.

Seega suurendab veergude formaat päringute jõudlust, kuna vajalike veergude leidmiseks kulub vähem otsinguaega ja vähendatakse sisend-väljundoperatsioonide arvu, kuna loetakse ainult vajalikke veerge.

Üks ainulaadseid jooni Parquet on see, et selle formaadi korral ta suudab salvestada andmeid sügavate struktuuridega. See tähendab, et Parquet-failis saab isegi sügavad väljad lugeda eraldi, ilma et oleks vaja lugeda kõiki väli sügavas struktuuris. Sügavate struktuuride salvestamiseks kasutab Parquet purustamise ja kokkupaneku algoritmi.

Failiformaadid suurte andmete puhul: lühike ülevaade
Parquet-failiformaadi mõistmiseks Hadoopis on vajalik teada järgmisi termineid:

  1. Ridade grupp (row group): andmete loogiline horisontaalne jagamine ridade kaupa. Ridade grupp koosneb iga veeru fragmendist andmekomplektis.
  2. Veeru fragment (column chunk): konkreetse veeru fragment. Need veeru fragmentid elavad kindlas ridade grupis ja on garanteeritult faile järjestikku.
  3. Lehekülg (page): veeru fragmentid jagunevad lehtedeks, mis on järjestikku salvestatud. Lehtedel on ühine pealkiri, seega saab lugemise ajal vältida ebaolulisi osi.

Failiformaadid suurte andmete puhul: lühike ülevaade
Siin peab pealkiri lihtsalt sisaldama maagilist numbrit PAR1 (4 baiti), mis identifitseerib faili kui Parquet formaadi faili.

Jalakirjas on kirjas järgmine:

  1. Faili metaandmed, mis sisaldavad iga veeru metaandmete algkoordinaate. Kui lugeda, tuleb esmalt lugeda faili metaandmed, et leida kõik huvipakkuvad veeru fragmentid. Seejärel tuleks veeru fragmente lugeda järjestikku. Samuti sisaldavad metaandmed formaadi versiooni, skeemi ja kõiki täiendavaid võtme-väärtuse paare.
  2. Metaandmete pikkus (4 baiti).
  3. Kuninglik number PAR1 (4 baiti).

ORC failiformaadid

Optimeeritud riba-veergude failivorming (Optimized Row Columnar, ORC) pakub väga tõhusat andmete salvestamise viisi ja on loodud, et ületada teiste formaadiga seotud piiranguid. Salvestab andmed ideaalselt kompaktsetes vormingutes, jättes välja mittevajalikud detailid — samal ajal ei nõua see suure, keerulise või käsitsi hallatava indeksi loomist.

ORC formaadi eelised:

  1. Iga ülesande kohta tuleb üks fail, mis vähendab koormust NameNode'ile.
  2. Toetab Hive andme tüüpe, sealhulgas DateTime, kümnendarvud ja keerulised andmetüübid (struktuur, loend, kaart ja liit).
  3. Sama faili saab samaaegselt lugeda erinevate RecordReaderite protsesside poolt.
  4. Failide jagamise võimalus ilma markerite otsimise skannimise vajaduseta.
  5. Maksimaalse võimalikku mälu eraldust pileti lugemise/kirjutamise protsessidele hinnatakse faili jaluses olevate andmete põhjal.
  6. Metaandmed salvestatakse protokollide Buffers’i binaarse serialiseerimise formaadis, mis võimaldab väljade lisamist ja eemaldamist.

Failiformaadid suurte andmete puhul: lühike ülevaade
ORC salvestab stringikogusid ühes failis, samas kui kogumi sees on stringiandmed salvestatud veergude formaadis.

ORC-fail salvestab ridade gruppe, mida nimetatakse ribadeks (stripes) ja abiteavet faili jaluses. Faili lõpus olev Postscript sisaldab kokkusurumise parameetreid ja kokkusurutud jaluse suurust.

Vaikimisi on riba suurus 250 MB. Niivõrd suurte ribadega toimub lugemine HDFS-ist tõhusamalt: suurtes järjepidevates plokkides.

Faili jaluses on salvestatud ribade loend, ridade arv ribas ja iga veeru andmetüüp. Seal on samuti salvestatud iga veeru tulemuslikud väärtused count, min, max ja sum.

Riba jalus sisaldab voogude asukohtade katalooge.

Reaalandmeid kasutatakse tabelite skannimisel.

Indeksandmed sisaldavad iga veeru minimaalseid ja maksimaalseid väärtusi ning ridade positsioone igas veerus. ORC-indekseid kasutatakse ainult ribade ja ridade gruppide valimiseks, mitte päringute vastamiseks.

Erinevate faili formaatide võrdlemine

Avro võrreldes Parquet'ga

  1. Avro on ridade kaupa salvestamise formaat, samas kui Parquet salvestab andmeid veergude kaupa.
  2. Parquet sobib paremini analüütiliste päringute jaoks, st andmete lugemise ja päringute tegemise operatsioonid on palju tõhusamad kui kirjutamine.
  3. Avro kirjutamistegevused on efektiivsemad kui Parquetis.
  4. Avro töötab skeemide arenguga paremini. Parquet toetab ainult skeemide lisamist, samas kui Avros on mitmeotstarbeline areng, st veergude lisamine või muutmine.
  5. Parquet sobib ideaalselt mitme veeruga tabelis veergude alamhulga pärimiseks. Avro sobib ETL-operatsioonide jaoks, kus pärime kõiki veerge.

ORC võrreldes Parquetiga

  1. Parquet salvestab sisemisi andmeid paremini.
  2. ORC on paremini kohandatud päringute edastamiseks (predicate pushdown).
  3. ORC toetab ACID omadusi.
  4. ORC surub andmed paremini kokku.

Mida veel teemast lugeda:

  1. Suure andmeanalüüs pilves: kuidas ettevõtteid andmete keskseks muuta.
  2. Vähene juhend andmebaasi skeemide kohta.
  3. Meie Telegrami kanal digitaaltransformatsiooni kohta.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster