
Meeskond pakub insener Rahul Bhatiast ettevÔttest Clairvoyant, mis kÀsitleb suurte andmete failivormateid, kÔige levinumaid Hadoopi failivormaatide funktsioone ja millist vormingut eelistada.
Miks on erinevad failivormingud vajalikud
HDFS-i toetavate rakenduste, nagu MapReduce ja Spark, jĂ”udluse tĂ”sine kitsaskoht on otsinguaeg, andmete lugemine ja kirjutamine. Need probleemid sĂŒvenevad suure andmehulkade haldamise raskustega, kui meil pole fikseeritud, vaid areneda lastud skeemi vĂ”i on olemas teatud sĂ€ilitamisseisundid.
Suurte andmete töötlemine koormab salvestussĂŒsteemi â Hadoop salvestab andmeid liigseks koormuseks usaldusvÀÀrsuse saavutamiseks. Lisaks ketastele koormatakse protsessorit, vĂ”rku, sisend-vĂ€ljund sĂŒsteeme jne. Andmemahu suurenedes tĂ”useb ka nende töötlemise ja sĂ€ilitamise hind.
Erinevad failivormingud on vĂ€lja töötatud just nende probleemide lahendamiseks. Ăige failivormingu valimine vĂ”ib tuua kaasa olulisi eeliseid:
- Kiirem lugemisaeg.
- Kiirem kirjutamisaeg.
- Jagatavad failid.
- Toetamine skeemide evolutsioonile.
- TĂ€psem toetamine tihendusele.
MÔned failivormingud on mÔeldud laiemaks kasutamiseks, teised spetsiifiliste stsenaariumide jaoks ning mÔned on vÀlja töötatud arvestades konkreetseid andmete omadusi. Seega on valik tÔeliselt ulatuslik.
Avro failivorming
Tooge andmete serialiseerimiseks on laialdaselt kasutusel Avro â see on reageerivateehk reaktiivne, andmehölmamise format Hadoopis. See salvestab skeemi JSON-vormingus, mis lihtsustab selle lugemist ja tĂ”lgendamist mis tahes programmiga. Andmed ise on salvestatud binaarses vormingus, kompaktne ja efektiivne.
Avro serialiseerimissĂŒsteem on keeleneutraalne. Failide töötlemine vĂ”ib toimuda erinevates keeltes, sealhulgas C, C++, C#, Java, Python ja Ruby.
Avro peamine omadus on andmeskeemide kindel tugi, mis ajas muutuvad, st evolutsioon. Avro mĂ”istab skeemi muudatusi â vĂ€ljade eemaldamine, lisamine vĂ”i muutmine.
Avro toetab mitmesuguseid andmestruktuure. NĂ€iteks saab luua kirje, mis sisaldab massiivi, loendatavat tĂŒĂŒpi ja alusrekordit.

See formaat sobib ideaalselt andmete jĂ€rgu landing (ĂŒlemineku) tsooni kirjutamiseks,, vĂ”i data lake â instantside kogum, mis salvestab erinevat tĂŒĂŒpi andmeid koos andmeallikatega.
Seega, andmete jÀrgu landing tsooni kirjutamiseks sobib see formaat kÔige paremini jÀrgmistel pÔhjustel:
- Selle tsooni andmed loetakse tavaliselt tervikuna tĂ€iendavaks töötlemiseks alumistes sĂŒsteemides â ja ridade pĂ”hine formaat on sel juhul tĂ”husam.
- Alumised sĂŒsteemid saavad hĂ”lpsasti skeemide tabeleid failidest vĂ€lja ekstrakteerida â skeeme ei pea eraldi vĂ€listesse metaandmehoidlatesse salvestama.
- Igane muudatus algses skeemis on lihtne töödelda (skeemi areng).
Parquet failiformaat
Parquet on avatud lÀhtekoodiga failiformaat Hadoopile, mis salvestab sisemisi andmestruktuure tasapinnalises veergude formaadis..
Traditsioonilise ridade lÀhenemisega vÔrreldes on Parquet salvestamise ja jÔudluse osas tÔhusam.
See on eriti kasulik pÀringute jaoks, mis loevad laia (paljude veergudega) tabelist kindlaid veerge. Failiformaatide tÔttu loetakse ainult vajalikke veerge, nii et sisse- ja vÀljundteenused on minimaalsetes piirides.
Kerge kĂ”rvalepĂ”ikamine: et paremini mĂ”ista Parquet failiformaati Hadoopis, vaatame, mis on veergude pĂ”hine â ehk veergude â formaat. Sellises formaadis hoitakse kokku sama tĂŒĂŒpi vÀÀrtusi igast veerust.
, kirje sisaldab vÀlju ID, Name ja Department. Sellisel juhul hoitakse kÔik ID veeru vÀÀrtused koos, nagu ka Name veeru vÀÀrtused ja nii edasi. Tabel nÀeb vÀlja umbes selline:
ID
Nimi
Department
1
emp1
d1
2
emp2
d2
3
emp3
d3
Ridade formaadis salvestatakse andmed jÀrgmiselt:
1
emp1
d1
2
emp2
d2
3
emp3
d3
Veergude formaadis salvestatakse samad andmed nii:
1
2
3
emp1
emp2
emp3
d1
d2
d3
Veergude formaat on tĂ”husam, kui teil on vaja kĂŒsida tabelist mitmeid veerge. See loeb ainult vajalikke veerge, kuna need asuvad kĂŒlg kĂŒlje kĂ”rval. Seega on sisse- ja vĂ€ljundtegevused minimaalsetes piirides.
NÀiteks, kui vajate ainult veergu NAME. Ridade Iga andmeid andmestikus tuleb laadida, jaotada vÀljade kaupa ja seejÀrel andmeid NAME vÀlja vÔtta. Veerufaili formaat vÔimaldab liikuda otse nime veergu, kuna kÔik selle veeru vÀÀrtused on koos. Ei pea skaneerima kogu kirje.
Seega tÔstab veerufaili formaat pÀringute jÔudlust, kuna vajalikesse veergudesse pÀÀsemiseks kulub vÀhem otsinguaega ja vÀheneb sisendi/vÀljundi operatsioonide arv, kuna loetakse vaid vajalikke veerge.
Ăks unikaalne omadus on see, et sellises formaadis suudab see salvestada andmeid, millel on sissepoole suunatud struktuurid. See tĂ€hendab, et Parquet failis on isegi sissepoole suunatud vĂ€ljad vĂ”imalik lugeda eraldi, ilma et peaks lugema kĂ”iki vĂ€lju sissepoole suunatud struktuuris. Sissepoole suunatud struktuuride salvestamiseks kasutab Parquet purustamise ja kokkupaneku algoritmi.

Kuna mÔista Parquet faili formaati Hadoopis, tuleb teada jÀrgmisi termineid:
- Ridade grupp (row group): loogiline horisontaalne jaotamine andmetest ridadeks. Ridade grupp koosneb iga veeru fragmentidest andmestikus.
- Veeru fragment (column chunk): konkreetse veeru fragment. Need veeru fragmentid elavad kindlas ridade grupis ja on garanteeritud, et nad on failis kĂŒlgnevad.
- Leht (page): veeru fragmentid jagatakse lehtedeks, mis on kirjutatud jĂ€rjestikku. Lehtedel on ĂŒhine pealkiri, nii et lugemisel saab jĂ€tta vahele mittevajalikud.

Siin sisaldab pealkiri lihtsalt maagilist numbrit PAR1 (4 baiti), mis tuvastab faili kui Parquet formaadis faili.
Footeris on kirjas jÀrgnev:
- Faili metaandmed, mis sisaldavad iga veeru metaandmete algust. Lugemisel tuleb esmalt lugeda faili metaandmed, et leida kÔik huvipakkuvad veeru fragmentid. SeejÀrel tuleb veeru fragmente lugeda jÀrjestikku. TÀiendavalt sisaldavad metaandmed formaadi versiooni, skeemi ja kÔiki tÀiendavaid vÔtme- ja vÀÀrtuspaaride.
- Metaandmete pikkus (4 baiti).
- Maagiline number PAR1 (4 baiti).
ORC failiformaat
Optimeeritud rida-veerg formaat (Optimized Row Columnar, ) pakub vĂ€ga tĂ”husat meetodit andmete salvestamiseks ja on loodud ĂŒletama teiste formaatide piiranguid. Salvestab andmed ideaalselt kompaktne kujul, vĂ”imaldades jĂ€tta kĂ”rvale mittevajalikke ĂŒksikasju â samas ei nĂ”ua see suurte, keeruliste vĂ”i kĂ€sitsi hallatavate indeksite loomist.
ORC formaadi eelised:
- Iga ĂŒlesande vĂ€ljundiks on ĂŒks fail, mis vĂ€hendab NameNode'i (nime sĂ”lme) koormust.
- Hive andmetĂŒĂŒpide tugi, sealhulgas DateTime, kĂŒmnend- ja kompleksandmetĂŒĂŒbid (struktuur, loend, kaart ja ĂŒhinemine).
- Korraga saab sama faili lugeda erinevad RecordReader protsessid.
- Failide jagamise vÔimalus ilma markerite olemasolu skannimiseta.
- MÀlukoguse piirangute maksimaalse vÔimaliku eraldamise hindamine lugemis-/kirjutamisprotsesside jaoks faili jaluse teabe pÔhjal.
- Metaandmed salvestatakse binaarformas, kasutades Protocol Buffers, mis vÔimaldab vÀljade lisamist ja eemaldamist.

ORC salvestab stringsalongid ĂŒhte faili, samas kui salongi sisesed stringandmed salvestatakse veergude formaadis.
ORC fail salvestab rĂŒhmad stringidest, mida nimetatakse ribadeks (stripes) ja abiteabe faili jaluses. Faili lĂ”pus olev postskript sisaldab tihendamisparameetreid ja tihendatud jaluse suurust.
Vaikimisi ribade suurus on 250 MB. Sellise suurusega ribade tÔttu toimub lugemine HDFS-ist efektiivsemalt: suurte pidevate plokkidena.
Faili jaluses on kirjas ribade loetelu failis, ridade arv ribas ja iga veeru andmetĂŒĂŒp. Seal on ka iga veeru jaoks salvestatud tulemuseks vÀÀrtused count, min, max ja sum.
Riba jalus sisaldab voolu asukohtade katalooge.
Stringandmeid kasutatakse tabelite skannimisel.
Indeksandmed sisaldavad iga veeru minimaalseid ja maksimaalseid vÀÀrtusi ning ridade positsioone igas veerus. ORC indekseid kasutatakse ainult ribade ja stringigruppide valimiseks, mitte pÀringutele vastamiseks.
Erinevate failivormingute vÔrdlemine
Avro vÔrreldes Parquet
- Avro on ridade jÀrgi salvestamise formaat, samas kui Parquet salvestab andmed veergude kaupa.
- Parquet sobib paremini analĂŒĂŒtiliste pĂ€ringute jaoks, see tĂ€hendab, et andmete lugemise ja pĂ€rimise operatsioonid on palju tĂ”husamad kui kirjutamine.
- Kirjutamise operatsioonid Avros toimuvad tÔhusamalt kui Parquet'is.
- Avro töötab skeemide evolutsiooniga kĂŒpselt. Parquet toetab ainult skeemi lisamist, samas kui Avros on rakendatud mitmekesist evolutsiooni, see tĂ€hendab veergude lisamist vĂ”i muutmist.
- Parquet on ideaalne mitme veeru tabelis veergude alamhulkade pĂ€ringute tegemiseks. Avro sobib ETL-operatsioonideks, kus kĂŒsime kĂ”iki veerge.
ORC vÔrreldes Parquetiga
- Parquet hoiab sissekandetud andmeid paremini.
- ORC on paremini kohandatud eelkontrollide edastamiseks (predicate pushdown).
- ORC toetab ACID omadusi.
- ORC surub andmed paremini kokku.
Mida veel selle kohta lugeda:
- .
- .
- .
Allikas: habr.com
