Failu formāti lielos datos: īsa izglītības programma

Failu formāti lielos datos: īsa izglītības programma
Remarina laikapstākļu dievība

Komanda Mail.ru mākoņa risinājumi piedāvājumus raksta tulkojums inženieris Rahul Bhatia no Clairvoyant par to, kādi failu formāti ir lielajos datos, kādas ir Hadoop formātu visizplatītākās funkcijas un kādu formātu labāk izmantot.

Kāpēc ir nepiecieÅ”ami dažādi failu formāti?

Liela veiktspējas vājā vieta HDFS iespējotām lietojumprogrammām, piemēram, MapReduce un Spark, ir laiks, kas nepiecieÅ”ams datu meklÄ“Å”anai, lasÄ«Å”anai un rakstÄ«Å”anai. Å Ä«s problēmas pastiprina grÅ«tÄ«bas pārvaldÄ«t lielas datu kopas, ja mums ir mainÄ«ga, nevis fiksēta shēma vai ja ir daži uzglabāŔanas ierobežojumi.

Lielo datu apstrāde palielina krātuves apakÅ”sistēmas slodzi ā€” Hadoop glabā datus lieki, lai panāktu kļūdu toleranci. Papildus diskiem tiek ielādēts procesors, tÄ«kls, ievades/izvades sistēma utt. Pieaugot datu apjomam, pieaug arÄ« to apstrādes un uzglabāŔanas izmaksas.

Dažādi failu formāti Hadoop izgudrots, lai atrisinātu tieÅ”i Ŕīs problēmas. AtbilstoÅ”a faila formāta izvēle var sniegt dažas bÅ«tiskas priekÅ”rocÄ«bas:

  1. Ātrāks lasÄ«Å”anas laiks.
  2. Ātrāks ierakstÄ«Å”anas laiks.
  3. Koplietotie faili.
  4. Atbalsts shēmas attīstībai.
  5. PaplaŔināts kompresijas atbalsts.

Daži failu formāti ir paredzēti vispārējai lietoÅ”anai, citi ā€“ konkrētākiem lietojumiem, un daži ir izstrādāti, lai atbilstu konkrētām datu Ä«paŔībām. Tātad izvēle tieŔām ir diezgan liela.

Avro faila formāts

Par datu serializācija Avro tiek plaÅ”i izmantots - tas uz virknes bāzes, tas ir, virknes datu uzglabāŔanas formāts Hadoop. Tā saglabā shēmu JSON formātā, padarot to viegli lasāmu un interpretējamu jebkurā programmā. PaÅ”i dati ir binārā formātā, kompakti un efektÄ«vi.

Avro serializācijas sistēma ir neitrāla valodai. Failus var apstrādāt dažādās valodās, paÅ”laik C, C++, C#, Java, Python un Ruby.

Galvenā Avro iezÄ«me ir tā stabilais atbalsts datu shēmām, kas laika gaitā mainās, tas ir, attÄ«stās. Avro saprot shēmas izmaiņas ā€” lauku dzÄ“Å”anu, pievienoÅ”anu vai mainÄ«Å”anu.

Avro atbalsta dažādas datu struktÅ«ras. Piemēram, varat izveidot ierakstu, kurā ir masÄ«vs, uzskaitÄ«ts tips un apakÅ”ieraksts.

Failu formāti lielos datos: īsa izglītības programma
Å is formāts ir ideāli piemērots rakstÄ«Å”anai datu ezera nolaiÅ”anās (pārejas) zonā (datu ezers, vai datu ezers ā€” gadÄ«jumu kolekcija dažāda veida datu glabāŔanai papildus tieÅ”i datu avotiem).

Tātad Å”is formāts ir vislabāk piemērots rakstÄ«Å”anai datu ezera piezemÄ“Å”anās zonā Ŕādu iemeslu dēļ:

  1. Datus no Ŕīs zonas parasti nolasa pilnÄ«bā, lai tie tālāk apstrādātu pakārtotajās sistēmās, un Å”ajā gadÄ«jumā efektÄ«vāks ir uz rindām balstÄ«ts formāts.
  2. Pakārtotās sistēmas var viegli izgÅ«t shēmu tabulas no failiem ā€” nav nepiecieÅ”ams atseviŔķi uzglabāt shēmas ārējā meta krātuvē.
  3. Jebkuras izmaiņas sākotnējā shēmā ir viegli apstrādājamas (shēmas evolūcija).

Parketa faila formāts

Parkets ir Hadoop atvērtā pirmkoda faila formāts, kas tiek uzglabāts ligzdotas datu struktūras plakanā kolonnu formātā.

SalÄ«dzinot ar tradicionālo rindu pieeju, parkets ir efektÄ«vāks uzglabāŔanas un veiktspējas ziņā.

Tas ir Ä«paÅ”i noderÄ«gi vaicājumiem, kas nolasa noteiktas kolonnas no plaÅ”as (daudz kolonnu) tabulas. Pateicoties faila formātam, tiek nolasÄ«tas tikai nepiecieÅ”amās kolonnas, tāpēc I/O tiek samazināts lÄ«dz minimumam.

Neliela atkāpe un skaidrojums: Lai labāk izprastu parketa faila formātu programmā Hadoop, apskatīsim, kas ir kolonnu, t.i., kolonnu formāts. Šis formāts saglabā līdzīgas vērtības katrai kolonnai kopā.

Piemēram, ierakstā ir ietverti lauki ID, nosaukums un nodaļa. Å ajā gadÄ«jumā visas ID kolonnas vērtÄ«bas tiks saglabātas kopā, tāpat kā kolonnas Name vērtÄ«bas un tā tālāk. Tabula izskatÄ«sies apmēram Ŕādi:

ID
Vārds
nodaļa

1
emp1
d1

2
emp2
d2

3
emp3
d3

Virknes formātā dati tiks saglabāti Ŕādi:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Kolonnu faila formātā tie paŔi dati tiks saglabāti Ŕādi:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Kolonnu formāts ir efektīvāks, ja nepiecieŔams vaicāt vairākas tabulas kolonnas. Tas nolasīs tikai vajadzīgās kolonnas, jo tās atrodas blakus. Tādā veidā I/O operācijas tiek samazinātas līdz minimumam.

Piemēram, jums ir nepiecieÅ”ama tikai kolonna NAME. IN virknes formāts Katrs datu kopas ieraksts ir jāielādē, jāparsē pa laukiem un pēc tam jāizvelk dati NAME. Kolonnas formāts ļauj veikt lejupielādi tieÅ”i kolonnā Nosaukums, jo visas Ŕīs kolonnas vērtÄ«bas tiek glabātas kopā. Jums nav jāskenē viss ieraksts.

Tādējādi kolonnu formāts uzlabo vaicājuma veiktspēju, jo tas prasa mazāk meklÄ“Å”anas laika, lai nokļūtu vajadzÄ«gajās kolonnās, un samazina I/O operāciju skaitu, jo tiek lasÄ«tas tikai vēlamās kolonnas.

Viena no unikālajām Ä«paŔībām Parkets ir tas, ka Å”ajā formātā to var uzglabāt datus ar ligzdotām struktÅ«rām. Tas nozÄ«mē, ka parketa failā pat ligzdotos laukus var nolasÄ«t atseviŔķi, nelasot visus ligzdotās struktÅ«ras laukus. Parkets izmanto smalcināŔanas un montāžas algoritmu, lai uzglabātu ligzdotas struktÅ«ras.

Failu formāti lielos datos: īsa izglītības programma
Lai saprastu parketa faila formātu programmā Hadoop, jums jāzina Ŕādi termini:

  1. Rindu grupa (rindu grupa): loģisks horizontāls datu sadalījums rindās. Rindu grupa sastāv no katras datu kopas kolonnas fragmenta.
  2. Kolonnas fragments (kolonnas gabals): noteiktas kolonnas fragments. Šie kolonnu fragmenti atrodas noteiktā rindu grupā un ir garantēti failā blakus.
  3. Page (lapa): Kolonnu fragmenti tiek sadalīti lapās, kas rakstītas viena pēc otras. Lapām ir kopīgs nosaukums, tāpēc, lasot, varat izlaist nevajadzīgās.

Failu formāti lielos datos: īsa izglītības programma
Å eit virsrakstā ir tikai maÄ£iskais skaitlis PAR1 (4 baiti), kas identificē failu kā parketa failu.

Kājene saka:

  1. Faila metadati, kas satur katras kolonnas metadatu sākuma koordinātas. Lasot, vispirms jāizlasa faila metadati, lai atrastu visus interesējoÅ”os kolonnu fragmentus. Pēc tam kolonnas daļas jālasa secÄ«gi. Citi metadati ietver formāta versiju, shēmu un visus papildu atslēgu un vērtÄ«bu pārus.
  2. Metadatu garums (4 baiti).
  3. MaÄ£iskais skaitlis PAR1 (4 baiti).

ORC faila formāts

Optimizēts rindu-kolonnu faila formāts (Optimizēta rindas kolonna, CRO) piedāvā ļoti efektÄ«vu datu glabāŔanas veidu un tika izstrādāts, lai pārvarētu citu formātu ierobežojumus. Saglabā datus perfekti kompaktā formā, ļaujot izlaist nevajadzÄ«gas detaļas, neprasot lielu, sarežģītu vai manuāli uzturētu indeksu izveidi.

ORC formāta priekŔrocības:

  1. Viens fails ir katra uzdevuma izvade, kas samazina NameNode (nosaukuma mezgla) slodzi.
  2. Atbalsts Hive datu veidiem, tostarp DateTime, decimāldatu un sarežģītu datu tipiem (struktūra, saraksts, karte un savienība).
  3. Viena un tā paŔa faila vienlaicīga lasīŔana dažādos RecordReader procesos.
  4. Iespēja sadalÄ«t failus bez marÄ·ieru skenÄ“Å”anas.
  5. Maksimālās iespējamās kaudzes atmiņas pieŔķirÅ”anas aprēķins lasÄ«Å”anas/rakstÄ«Å”anas procesiem, pamatojoties uz informāciju faila kājenē.
  6. Metadati tiek glabāti Protocol Buffers binārā serializācijas formātā, kas ļauj pievienot un noņemt laukus.

Failu formāti lielos datos: īsa izglītības programma
ORC virkņu kolekcijas glabā vienā failā, un kolekcijā virkņu dati tiek glabāti kolonnu formātā.

ORC fails faila kājenē saglabā lÄ«niju grupas, ko sauc par svÄ«trām, un atbalsta informāciju. Postscript faila beigās satur saspieÅ”anas parametrus un saspiestās kājenes lielumu.

Noklusējuma joslas izmērs ir 250 MB. Pateicoties tik lielām svÄ«trām, nolasÄ«Å”ana no HDFS tiek veikta efektÄ«vāk: lielos blakus esoÅ”os blokos.

Faila kājenē tiek ierakstÄ«ts failā esoÅ”o joslu saraksts, rindu skaits vienā joslā un katras kolonnas datu tips. Tur ir ierakstÄ«ta arÄ« katras kolonnas iegÅ«tā vērtÄ«ba count, min, max un summa.

Sloksnes kājenē ir straumes atraÅ”anās vietu direktorijs.

Skenējot tabulas, tiek izmantoti rindu dati.

Indeksa dati ietver katras kolonnas minimālās un maksimālās vērtÄ«bas un rindu atraÅ”anās vietu katrā kolonnā. ORC indeksus izmanto tikai svÄ«tru un rindu grupu atlasei, nevis atbildēm uz vaicājumiem.

Dažādu failu formātu salīdzinājums

Avro salīdzinot ar Parketu

  1. Avro ir rindu uzglabāŔanas formāts, savukārt Parkets datus glabā kolonnās.
  2. Parkets ir labāk piemērots analÄ«tiskiem vaicājumiem, kas nozÄ«mē, ka lasÄ«Å”anas un datu vaicājumu darbÄ«bas ir daudz efektÄ«vākas nekā rakstÄ«Å”ana.
  3. RakstīŔanas darbības Avro tiek veiktas efektīvāk nekā Parketā.
  4. Avro daudz nobrieduŔāk nodarbojas ar ķēdes attÄ«stÄ«bu. Parkets atbalsta tikai shēmas pievienoÅ”anu, savukārt Avro atbalsta daudzfunkcionālu attÄ«stÄ«bu, tas ir, kolonnu pievienoÅ”anu vai mainÄ«Å”anu.
  5. Parkets ir ideāli piemērots kolonnu apakÅ”kopas vaicāŔanai vairāku kolonnu tabulā. Avro ir piemērots ETL operācijām, kurās mēs vaicājam visas kolonnas.

ORC pret parketu

  1. Parkets labāk saglabā ligzdotos datus.
  2. ORC ir labāk piemērots predikātu nospieÅ”anai.
  3. ORC atbalsta ACID īpaŔības.
  4. ORC labāk saspiež datus.

Ko vēl lasīt par tēmu:

  1. Lielo datu analīze mākonī: kā uzņēmums var kļūt orientēts uz datiem.
  2. Pazemīgs ceļvedis datu bāzu shēmām.
  3. Mūsu telegrammas kanāls par digitālo transformāciju.

Avots: www.habr.com

Pievieno komentāru