Failivormingud suurandmetes: lühike õppeprogramm

Failivormingud suurandmetes: lühike õppeprogramm
Remarini ilmajumalus

Meeskond Mail.ru pilvelahendused pakub artikli tõlge insener Rahul Bhatia ettevõttest Clairvoyant, millised failivormingud suurandmetes on, millised on Hadoopi vormingute levinumad omadused ja millist vormingut on parem kasutada.

Miks on vaja erinevaid failivorminguid?

HDFS-i toega rakenduste (nt MapReduce ja Spark) peamine jõudluse kitsaskoht on andmete otsimiseks, lugemiseks ja kirjutamiseks kuluv aeg. Neid probleeme süvendavad raskused suurte andmekogumite haldamisel, kui meil on pigem arenev skeem kui fikseeritud või kui on teatud salvestuspiirangud.

Suurandmete töötlemine suurendab salvestusruumi alamsüsteemi koormust – Hadoop salvestab andmeid tõrketaluvuse saavutamiseks üleliigselt. Lisaks ketastele laaditakse protsessor, võrk, sisend/väljundsüsteem jne. Andmemahu kasvades kasvavad ka nende töötlemise ja säilitamise kulud.

Erinevates failivormingutes hadoop välja mõeldud just nende probleemide lahendamiseks. Sobiva failivormingu valimine võib tuua olulisi eeliseid:

  1. Kiirem lugemisaeg.
  2. Kiirem salvestusaeg.
  3. Jagatud failid.
  4. Skeemi arendamise tugi.
  5. Laiendatud tihendustugi.

Mõned failivormingud on mõeldud üldiseks kasutamiseks, teised spetsiifilisemaks kasutamiseks ja mõned on loodud vastama konkreetsetele andmete omadustele. Nii et valik on tõesti üsna suur.

Avro failivorming

eest andmete serialiseerimine Avrot kasutatakse laialdaselt – see stringipõhine, st stringiandmete salvestusvorming Hadoopis. See salvestab skeemi JSON-vormingus, muutes selle hõlpsaks lugemiseks ja tõlgendamiseks mis tahes programmiga. Andmed ise on binaarvormingus, kompaktsed ja tõhusad.

Avro serialiseerimissüsteem on keeleneutraalne. Faile saab töödelda erinevates keeltes, praegu C, C++, C#, Java, Python ja Ruby.

Avro põhifunktsiooniks on tugev tugi andmeskeemidele, mis aja jooksul muutuvad, st arenevad. Avro mõistab skeemi muudatusi – väljade kustutamist, lisamist või muutmist.

Avro toetab mitmesuguseid andmestruktuure. Näiteks saate luua kirje, mis sisaldab massiivi, loenditüüpi ja alamkirjet.

Failivormingud suurandmetes: lühike õppeprogramm
See formaat sobib ideaalselt andmejärve maandumis- (üleminekutsooni) kirjutamiseks (andmete järvvõi andmejärv – eksemplaride kogum erinevat tüüpi andmete salvestamiseks lisaks otse andmeallikatele).

Seega sobib see formaat kõige paremini andmejärve maandumisvööndisse kirjutamiseks järgmistel põhjustel:

  1. Selle tsooni andmed loetakse tavaliselt tervikuna edasiseks töötlemiseks allavoolusüsteemides - ja reapõhine vorming on sel juhul tõhusam.
  2. Järgmised süsteemid saavad hõlpsasti failidest skeemitabeleid hankida – pole vaja skeeme välisesse metamällu eraldi salvestada.
  3. Kõik muudatused algses skeemis on kergesti töödeldavad (skeemi areng).

Parketi failivorming

Parkett on avatud lähtekoodiga failivorming Hadoopi jaoks, mis salvestab pesastatud andmestruktuurid lamedas veeruvormingus.

Võrreldes traditsioonilise ridameetodiga on Parkett tõhusam nii ladustamise kui ka jõudluse poolest.

See on eriti kasulik päringute puhul, mis loevad konkreetseid veerge laiast (palju veergu) tabelist. Tänu failivormingule loetakse ainult vajalikke veerge, seega on I/O minimaalne.

Väike kõrvalepõige ja selgitus: Parqueti failivormingu paremaks mõistmiseks Hadoopis vaatame, mis on veerupõhine – st veeruline – vorming. See vorming salvestab iga veeru jaoks sarnased väärtused koos.

Näiteks, sisaldab kirje välja ID, Nimi ja Osakond. Sel juhul salvestatakse kõik ID veeru väärtused koos, nagu ka veeru Nimi väärtused jne. Tabel näeb välja umbes selline:

ID
Nimi
osakond

1
emp1
d1

2
emp2
d2

3
emp3
d3

Stringivormingus salvestatakse andmed järgmiselt:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Veerukujulises failivormingus salvestatakse samad andmed järgmiselt:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Veeruvorming on tõhusam, kui peate tabelist päringuid tegema mitme veeru kohta. See loeb ainult vajalikke veerge, kuna need on kõrvuti. Sel viisil hoitakse sisend-/väljundoperatsioonid minimaalsed.

Näiteks vajate ainult veergu NAME. IN stringi vorming Iga andmestiku kirje tuleb laadida, väljade kaupa sõeluda ja seejärel NAME andmed ekstraktida. Veeruvorming võimaldab teil süvitsi minna otse veergu Nimi, kuna kõik selle veeru väärtused salvestatakse koos. Te ei pea kogu salvestist skannima.

Seega parandab veergude vorming päringu jõudlust, kuna see nõuab vähem otsinguaega, et jõuda vajalike veergudeni, ja vähendab I/O toimingute arvu, kuna loetakse ainult soovitud veerge.

Üks unikaalseid omadusi Parkett selles vormingus saab salvestada andmeid pesastatud struktuuridega. See tähendab, et Parketi failis saab isegi pesastatud välju lugeda eraldi, ilma et peaks lugema kõiki pesastatud struktuuri välju. Parkett kasutab pesastatud struktuuride salvestamiseks purustamise ja kokkupanemise algoritmi.

Failivormingud suurandmetes: lühike õppeprogramm
Hadoopi Parketi failivormingu mõistmiseks peate teadma järgmisi termineid:

  1. Rearühm (ridarühm): andmete loogiline horisontaalne jaotus ridadeks. Rearühm koosneb andmekogumi iga veeru fragmendist.
  2. Veeru fragment (veeru tükk): konkreetse veeru fragment. Need veerufragmendid asuvad kindlas ridade rühmas ja on failis garanteeritud külgnevad.
  3. Lehekülg (lehekülg): Veerufragmendid jaotatakse üksteise järel kirjutatud lehtedeks. Lehekülgedel on ühine pealkiri, nii et saate lugedes mittevajalikud vahele jätta.

Failivormingud suurandmetes: lühike õppeprogramm
Siin sisaldab pealkiri lihtsalt maagilist numbrit PAR1 (4 baiti), mis identifitseerib faili Parketifailina.

Jalus ütleb järgmist:

  1. Faili metaandmed, mis sisaldavad iga veeru metaandmete alguskoordinaate. Lugemisel peate esmalt lugema faili metaandmeid, et leida kõik huvipakkuvad veerufragmendid. Seejärel tuleks veeru osi lugeda järjestikku. Muud metaandmed hõlmavad vormingu versiooni, skeemi ja kõiki täiendavaid võtme-väärtuse paare.
  2. Metaandmete pikkus (4 baiti).
  3. maagiline number PAR1 (4 baiti).

ORC failivorming

Optimeeritud rea-veeru failivorming (Optimeeritud rea veerg, CRO) pakub väga tõhusat viisi andmete salvestamiseks ja selle eesmärk oli ületada muude vormingute piirangud. Salvestab andmed täiesti kompaktsel kujul, võimaldades teil vahele jätta mittevajalikud üksikasjad – ilma suurte, keerukate või käsitsi hooldatavate indeksite koostamist nõudmata.

ORC-vormingu eelised:

  1. Üks fail on iga ülesande väljund, mis vähendab NameNode'i (nimesõlme) koormust.
  2. Hive andmetüüpide tugi, sealhulgas DateTime, kümnend- ja kompleksandmetüübid (struktuur, loend, kaart ja liit).
  3. Sama faili samaaegne lugemine erinevate RecordReaderi protsesside abil.
  4. Võimalus faile poolitada ilma markereid otsimata.
  5. Lugemis-/kirjutusprotsesside maksimaalse võimaliku kuhjamälu jaotuse hinnang faili jaluses oleva teabe põhjal.
  6. Metaandmed salvestatakse binaarses serialiseerimisvormingus Protocol Buffers, mis võimaldab välju lisada ja eemaldada.

Failivormingud suurandmetes: lühike õppeprogramm
ORC salvestab stringide kogud ühte faili ja kogus salvestatakse stringide andmed veeruvormingus.

ORC-fail salvestab faili jaluses ridade rühmad, mida nimetatakse triipudeks, ja tugiteavet. Faili lõpus olev Postscript sisaldab tihendusparameetreid ja tihendatud jaluse suurust.

Vaikimisi riba suurus on 250 MB. Tänu sellistele suurtele triipudele toimub HDFS-ist lugemine tõhusamalt: suurtes külgnevates plokkides.

Faili jalus salvestab failis olevate radade loendi, ridade arvu raja kohta ja iga veeru andmetüübi. Sinna kirjutatakse ka iga veeru saadud count, min, max ja sum väärtus.

Riba jalus sisaldab voo asukohtade kataloogi.

Tabelite skannimisel kasutatakse rea andmeid.

Indeksi andmed sisaldavad iga veeru minimaalset ja maksimaalset väärtust ning ridade asukohta igas veerus. ORC indekseid kasutatakse ainult triipude ja rearühmade valimiseks, mitte päringutele vastamiseks.

Erinevate failivormingute võrdlus

Avro võrreldes Parketiga

  1. Avro on ridade salvestusvorming, samas kui Parkett salvestab andmed veergudesse.
  2. Parkett sobib paremini analüütiliste päringute jaoks, mis tähendab, et lugemistoimingud ja andmete päringud on palju tõhusamad kui kirjutamine.
  3. Avros tehakse kirjutustoiminguid tõhusamalt kui parketis.
  4. Avro tegeleb vooluringide evolutsiooniga küpsemalt. Parkett toetab ainult skeemi lisamist, samas kui Avro toetab multifunktsionaalset evolutsiooni, st veergude lisamist või muutmist.
  5. Parkett sobib ideaalselt mitmeveerulise tabeli veergude alamhulga päringute tegemiseks. Avro sobib ETL-i operatsioonideks, kus päritakse kõigist veergudest.

ORC vs parkett

  1. Parkett salvestab paremini pesastatud andmeid.
  2. ORC sobib paremini predikaatide surumiseks.
  3. ORC toetab ACID-i omadusi.
  4. ORC tihendab andmeid paremini.

Mida muud selle teema kohta lugeda:

  1. Suurandmete analüüs pilves: kuidas ettevõte saab andmekeskseks muutuda.
  2. Andmebaasiskeemide tagasihoidlik juhend.
  3. Meie telegrammi kanal digitaalse muundamise kohta.

Allikas: www.habr.com

Lisa kommentaar