Formati datotek v velikih podatkih: kratek izobraževalni program

Formati datotek v velikih podatkih: kratek izobraževalni program
Weather Deity avtor Remarin

Ekipa Mail.ru rešitve v oblaku ponudbe prevod članka inženir Rahul Bhatia iz Clairvoyanta o tem, kateri formati datotek obstajajo v velikih podatkih, katere so najpogostejše lastnosti formatov Hadoop in kateri format je bolje uporabiti.

Zakaj so potrebni različni formati datotek?

Veliko ozko grlo pri delovanju aplikacij, ki podpirajo HDFS, kot sta MapReduce in Spark, je čas, potreben za iskanje, branje in pisanje podatkov. Te težave se povečujejo zaradi težav pri upravljanju velikih podatkovnih nizov, če imamo razvijajočo se shemo namesto fiksne ali če obstajajo nekatere omejitve shranjevanja.

Obdelava velikih podatkov poveča obremenitev podsistema za shranjevanje - Hadoop redundantno shranjuje podatke, da doseže toleranco napak. Poleg diskov je naložen še procesor, omrežje, vhodno/izhodni sistem ipd. Z večanjem količine podatkov rastejo tudi stroški njihove obdelave in shranjevanja.

Različni formati datotek v Hadoop izumljen za reševanje natanko teh težav. Izbira ustreznega formata datoteke lahko prinese nekaj pomembnih prednosti:

  1. Hitrejši čas branja.
  2. Hitrejši čas snemanja.
  3. Datoteke v skupni rabi.
  4. Podpora za razvoj sheme.
  5. Razširjena podpora za stiskanje.

Nekateri formati datotek so namenjeni splošni uporabi, drugi bolj specifični uporabi, nekateri pa so zasnovani tako, da ustrezajo posebnim značilnostim podatkov. Izbira je torej res kar velika.

Format datoteke Avro

Za serializacija podatkov Avro se pogosto uporablja - it na podlagi nizov, to je nizovni format za shranjevanje podatkov v Hadoop. Shemo shrani v formatu JSON, kar omogoča enostavno branje in razlago s katerim koli programom. Sami podatki so v binarni obliki, kompaktni in učinkoviti.

Avrov serializacijski sistem je jezikovno nevtralen. Datoteke je mogoče obdelati v različnih jezikih, trenutno C, C++, C#, Java, Python in Ruby.

Ključna značilnost programa Avro je njegova robustna podpora podatkovnim shemam, ki se skozi čas spreminjajo, to je, razvijajo. Avro razume spremembe sheme – brisanje, dodajanje ali spreminjanje polj.

Avro podpira različne podatkovne strukture. Ustvarite lahko na primer zapis, ki vsebuje matriko, oštevilčeno vrsto in podzapis.

Formati datotek v velikih podatkih: kratek izobraževalni program
Ta format je idealen za pisanje v pristajalno (prehodno) območje podatkovnega jezera (podatkovno jezeroali podatkovno jezero – zbirka primerkov za shranjevanje različnih vrst podatkov poleg neposrednih virov podatkov).

Torej je ta oblika najprimernejša za pisanje v pristajalno območje podatkovnega jezera iz naslednjih razlogov:

  1. Podatki iz tega območja se običajno preberejo v celoti za nadaljnjo obdelavo v nadaljnjih sistemih - in format, ki temelji na vrstici, je v tem primeru učinkovitejši.
  2. Sistemi na nižji stopnji lahko preprosto pridobijo tabele shem iz datotek – ni potrebe po ločenem shranjevanju shem v zunanji meta shrambi.
  3. Vsaka sprememba prvotne sheme je enostavno obdelana (evolucija sheme).

Format datoteke za parket

Parquet je odprtokodna oblika datoteke za Hadoop, ki shranjuje ugnezdene podatkovne strukture v ravni stolpčni obliki.

V primerjavi s tradicionalnim vrstnim pristopom je parket bolj učinkovit v smislu shranjevanja in učinkovitosti.

To je še posebej uporabno za poizvedbe, ki berejo določene stolpce iz široke (več stolpcev) tabele. Zahvaljujoč formatu datoteke se berejo samo potrebni stolpci, tako da je I/O minimalen.

Majhna digresija in pojasnilo: Da bi bolje razumeli format datoteke Parquet v Hadoopu, poglejmo, kaj je format, ki temelji na stolpcih – tj. Ta oblika shrani podobne vrednosti za vsak stolpec skupaj.

Na primer, zapis vključuje polja ID, Ime in Oddelek. V tem primeru bodo vse vrednosti stolpca ID shranjene skupaj, prav tako vrednosti stolpca Name in tako naprej. Tabela bo videti nekako takole:

ID
Ime
Oddelek

1
emp1
d1

2
emp2
d2

3
emp3
d3

V obliki niza bodo podatki shranjeni na naslednji način:

1
emp1
d1
2
emp2
d2
3
emp3
d3

V stolpčni obliki zapisa bodo isti podatki shranjeni takole:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Stolpčni format je učinkovitejši, ko morate poizvedovati po več stolpcih iz tabele. Prebral bo samo zahtevane stolpce, ker so sosednji. Na ta način so V/I operacije čim manjše.

Na primer, potrebujete samo stolpec NAME. IN format niza Vsak zapis v naboru podatkov je treba naložiti, razčleniti po polju in nato ekstrahirati podatke NAME. Oblika stolpca vam omogoča vrtanje neposredno do stolpca Ime, ker so vse vrednosti za ta stolpec shranjene skupaj. Ni vam treba skenirati celotnega posnetka.

Tako stolpčni format izboljša zmogljivost poizvedbe, ker zahteva manj časa iskanja, da pride do zahtevanih stolpcev, in zmanjša število V/I operacij, ker se berejo samo želeni stolpci.

Ena od edinstvenih lastnosti Parket je, da v tej obliki lahko shranjevanje podatkov z ugnezdenimi strukturami. To pomeni, da je v datoteki Parquet mogoče prebrati celo ugnezdena polja posamezno, ne da bi morali prebrati vsa polja v ugnezdeni strukturi. Parquet uporablja algoritem drobljenja in sestavljanja za shranjevanje ugnezdenih struktur.

Formati datotek v velikih podatkih: kratek izobraževalni program
Če želite razumeti format datoteke Parquet v Hadoopu, morate poznati naslednje izraze:

  1. Skupina nizov (skupina vrstic): logična horizontalna razdelitev podatkov v vrstice. Skupina vrstic je sestavljena iz fragmenta vsakega stolpca v naboru podatkov.
  2. Fragment stolpca (kos stolpca): delček določenega stolpca. Ti fragmenti stolpcev živijo v določeni skupini vrstic in so zagotovljeno sosednji v datoteki.
  3. Page (stran): Fragmenti stolpcev so razdeljeni na strani, napisane ena za drugo. Strani imajo skupen naslov, tako da lahko nepotrebne pri branju preskočite.

Formati datotek v velikih podatkih: kratek izobraževalni program
Tukaj naslov vsebuje samo magično številko PAR1 (4 bajte), ki identificira datoteko kot datoteko Parket.

V nogi piše naslednje:

  1. Metapodatki datoteke, ki vsebujejo začetne koordinate metapodatkov vsakega stolpca. Pri branju morate najprej prebrati metapodatke datoteke, da poiščete vse fragmente stolpcev, ki vas zanimajo. Nato je treba zaporedno brati dele stolpcev. Drugi metapodatki vključujejo različico oblike, shemo in vse dodatne pare ključ-vrednost.
  2. Dolžina metapodatkov (4 bajti).
  3. Magična številka PAR1 (4 bajte).

Format datoteke ORC

Optimizirana oblika datoteke vrstica-stolpec (Optimiziran stolpec vrstice, CRO) ponuja zelo učinkovit način za shranjevanje podatkov in je bil zasnovan tako, da premaga omejitve drugih formatov. Shranjuje podatke v popolnoma kompaktni obliki, kar vam omogoča, da preskočite nepotrebne podrobnosti – brez potrebe po izdelavi velikih, zapletenih ali ročno vzdrževanih indeksov.

Prednosti formata ORC:

  1. Ena datoteka je izhod vsake naloge, kar zmanjša obremenitev NameNode (ime vozlišča).
  2. Podpora za podatkovne tipe Hive, vključno z datumom in časom, decimalnimi in kompleksnimi podatkovnimi tipi (struktura, seznam, zemljevid in združevanje).
  3. Istočasno branje iste datoteke z različnimi procesi RecordReader.
  4. Možnost razdelitve datotek brez iskanja označevalcev.
  5. Ocena največje možne dodelitve pomnilnika kopice za procese branja/pisanja na podlagi informacij v nogi datoteke.
  6. Metapodatki so shranjeni v binarni obliki serializacije Protocol Buffers, ki omogoča dodajanje in odstranjevanje polj.

Formati datotek v velikih podatkih: kratek izobraževalni program
ORC shrani zbirke nizov v eno datoteko, znotraj zbirke pa so podatki o nizih shranjeni v obliki stolpcev.

Datoteka ORC shranjuje skupine vrstic, imenovane črte, in podporne informacije v nogi datoteke. Postscript na koncu datoteke vsebuje parametre stiskanja in velikost stisnjene noge.

Privzeta velikost črte je 250 MB. Zaradi tako velikih trakov se branje iz HDFS izvaja bolj učinkovito: v velikih sosednjih blokih.

Noga datoteke beleži seznam pasov v datoteki, število vrstic na pas in vrsto podatkov vsakega stolpca. Tam je zapisana tudi dobljena vrednost števila, min, maks in vsota za vsak stolpec.

Noga traku vsebuje imenik lokacij tokov.

Podatki o vrstici se uporabljajo pri skeniranju tabel.

Indeksni podatki vključujejo najmanjše in največje vrednosti za vsak stolpec in položaj vrstic v vsakem stolpcu. Indeksi ORC se uporabljajo samo za izbiranje črt in skupin vrstic, ne pa za odgovarjanje na poizvedbe.

Primerjava različnih formatov datotek

Avro v primerjavi s parketom

  1. Avro je format za shranjevanje vrstic, medtem ko Parquet shranjuje podatke v stolpce.
  2. Parquet je bolj primeren za analitične poizvedbe, kar pomeni, da so operacije branja in poizvedovanja po podatkih veliko učinkovitejše od pisanja.
  3. Pisanje v Avru se izvaja bolj učinkovito kot v Parquetu.
  4. Avro se zreleje ukvarja z evolucijo vezij. Parquet podpira samo dodajanje sheme, medtem ko Avro podpira večnamensko evolucijo, torej dodajanje ali spreminjanje stolpcev.
  5. Parquet je idealen za poizvedovanje po podnaboru stolpcev v tabeli z več stolpci. Avro je primeren za operacije ETL, kjer poizvedujemo po vseh stolpcih.

ORC proti parketu

  1. Parquet bolje shranjuje ugnezdene podatke.
  2. ORC je bolj primeren za predikat potisni navzdol.
  3. ORC podpira lastnosti ACID.
  4. ORC bolje stisne podatke.

Kaj še prebrati na to temo:

  1. Analiza velikih podatkov v oblaku: kako lahko podjetje postane podatkovno usmerjeno.
  2. Skromen vodnik po shemah baz podatkov.
  3. Naš telegram kanal o digitalni transformaciji.

Vir: www.habr.com

Dodaj komentar