Didžiųjų duomenų failų formatai: trumpa edukacinė programa

Didžiųjų duomenų failų formatai: trumpa edukacinė programa
Orų dievybė pagal Remariną

Komanda Mail.ru debesų sprendimai siūlo straipsnio vertimas inžinierius Rahul Bhatia iš Clairvoyant apie tai, kokie failų formatai yra dideliuose duomenyse, kokios yra dažniausios Hadoop formatų savybės ir kokį formatą geriau naudoti.

Kodėl reikalingi skirtingi failų formatai?

Pagrindinis HDFS įgalintų programų, tokių kaip MapReduce ir Spark, našumo kliūtis yra laikas, kurio reikia duomenims ieškoti, skaityti ir rašyti. Šias problemas apsunkina sunkumai tvarkant didelius duomenų rinkinius, jei turime besikeičiančią schemą, o ne fiksuotą arba jei yra tam tikrų saugojimo apribojimų.

Didelių duomenų apdorojimas padidina saugojimo posistemio apkrovą – „Hadoop“ saugo duomenis pertekliškai, kad būtų užtikrintas atsparumas gedimams. Be diskų, įkeliamas procesorius, tinklas, įvesties/išvesties sistema ir pan. Augant duomenų kiekiui, didėja jų apdorojimo ir saugojimo išlaidos.

Įvairūs failų formatai Hadoop išrastas būtent šioms problemoms išspręsti. Pasirinkus tinkamą failo formatą, gali būti keletas reikšmingų pranašumų:

  1. Greitesnis skaitymo laikas.
  2. Greitesnis įrašymo laikas.
  3. Bendrinami failai.
  4. Schemos evoliucijos palaikymas.
  5. Išplėstas suspaudimo palaikymas.

Kai kurie failų formatai yra skirti bendram naudojimui, kiti konkretesniam naudojimui, o kai kurie sukurti taip, kad atitiktų konkrečias duomenų charakteristikas. Taigi pasirinkimas tikrai nemažas.

Avro failo formatas

duomenų serializavimas Avro plačiai naudojamas – tai styginių pagrindu, tai yra, eilutės duomenų saugojimo formatas Hadoop. Ji saugo schemą JSON formatu, todėl ją lengva skaityti ir interpretuoti bet kuri programa. Patys duomenys yra dvejetainio formato, kompaktiški ir efektyvūs.

„Avro“ serializacijos sistema yra neutrali kalba. Failus galima apdoroti įvairiomis kalbomis, šiuo metu C, C++, C#, Java, Python ir Ruby.

Pagrindinė „Avro“ savybė yra tvirtas duomenų schemų, kurios laikui bėgant kinta, ty vystosi, palaikymas. „Avro“ supranta schemų pakeitimus – laukų ištrynimą, pridėjimą ar keitimą.

„Avro“ palaiko įvairias duomenų struktūras. Pavyzdžiui, galite sukurti įrašą, kuriame yra masyvas, išvardintas tipas ir papildomas įrašas.

Didžiųjų duomenų failų formatai: trumpa edukacinė programa
Šis formatas idealiai tinka rašyti į duomenų ežero nusileidimo (perėjimo) zoną (duomenų ežeras, arba duomenų ežeras – egzempliorių rinkinys, skirtas įvairių tipų duomenims saugoti be tiesioginių duomenų šaltinių).

Taigi šis formatas geriausiai tinka rašyti į duomenų ežero nusileidimo zoną dėl šių priežasčių:

  1. Duomenys iš šios zonos paprastai nuskaitomi visi, kad juos toliau apdorotų paskesnės sistemos – ir eilučių formatas šiuo atveju yra efektyvesnis.
  2. Tolesnės sistemos gali lengvai nuskaityti schemų lenteles iš failų – nereikia atskirai saugoti schemų išorinėje meta saugykloje.
  3. Bet koks pradinės schemos pakeitimas yra lengvai apdorojamas (schemos evoliucija).

Parketo failo formatas

Parquet yra atvirojo kodo failo formatas, skirtas Hadoop, kuris saugomas įdėtos duomenų struktūros plokščiu stulpelio formatu.

Palyginti su tradiciniu eilių metodu, parketas yra efektyvesnis sandėliavimo ir eksploatacinių savybių požiūriu.

Tai ypač naudinga užklausoms, kurios nuskaito konkrečius stulpelius iš plačios (daug stulpelių) lentelės. Dėl failo formato nuskaitomi tik būtini stulpeliai, todėl I/O yra minimalus.

Mažas nukrypimas ir paaiškinimas: Norėdami geriau suprasti Hadoop parketo failo formatą, pažiūrėkime, kas yra stulpelių, t. y. stulpelių, formatas. Šis formatas išsaugo panašias kiekvieno stulpelio reikšmes.

Pavyzdžiui, įraše yra ID, Vardo ir Skyriaus laukai. Tokiu atveju visos ID stulpelio reikšmės bus saugomos kartu, kaip ir stulpelio Name reikšmės ir pan. Lentelė atrodys maždaug taip:

ID
Vardas
skyrius

1
emp1
d1

2
emp2
d2

3
emp3
d3

Eilučių formatu duomenys bus išsaugoti taip:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Stulpelio failo formatu tie patys duomenys bus išsaugoti taip:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Stulpelių formatas yra efektyvesnis, kai reikia pateikti užklausą dėl kelių lentelės stulpelių. Jis skaitys tik reikiamus stulpelius, nes jie yra greta. Tokiu būdu įvesties / išvesties operacijų skaičius sumažinamas iki minimumo.

Pavyzdžiui, jums reikia tik stulpelio PAVADINIMAS. IN eilutės formatas Kiekvienas duomenų rinkinio įrašas turi būti įkeltas, išanalizuotas pagal lauką ir tada išgauti NAME duomenis. Stulpelio formatas leidžia gilintis tiesiai į stulpelį Pavadinimas, nes visos to stulpelio reikšmės saugomos kartu. Nereikia nuskaityti viso įrašo.

Taigi, stulpelių formatas pagerina užklausos našumą, nes norint pasiekti reikiamus stulpelius reikia mažiau paieškos laiko ir sumažina įvesties / išvesties operacijų skaičių, nes nuskaitomi tik norimi stulpeliai.

Viena iš unikalių savybių Parketas yra tai, kad šiuo formatu tai gali saugoti duomenis su įdėtomis struktūromis. Tai reiškia, kad „Parquet“ faile net įdėtus laukus galima nuskaityti atskirai, neskaitant visų įdėtosios struktūros laukų. Parketas naudoja smulkinimo ir surinkimo algoritmą įdėtoms konstrukcijoms saugoti.

Didžiųjų duomenų failų formatai: trumpa edukacinė programa
Norėdami suprasti Hadoop parketo failo formatą, turite žinoti šiuos terminus:

  1. Eilučių grupė (eilučių grupė): loginis horizontalus duomenų skirstymas į eilutes. Eilučių grupę sudaro kiekvieno duomenų rinkinio stulpelio fragmentas.
  2. Stulpelio fragmentas (stulpelio dalis): konkrečios stulpelio fragmentas. Šie stulpelių fragmentai yra tam tikroje eilučių grupėje ir garantuoja, kad faile bus gretimi.
  3. Puslapis (puslapis): Stulpelių fragmentai suskirstyti į puslapius, užrašytus vienas po kito. Puslapiai turi bendrą pavadinimą, todėl skaitydami galite praleisti nereikalingus.

Didžiųjų duomenų failų formatai: trumpa edukacinė programa
Čia pavadinime yra tik magiškas skaičius PAR1 (4 baitai), kuris identifikuoja failą kaip parketo failą.

Poraštėje rašoma taip:

  1. Failo metaduomenys, kuriuose yra kiekvieno stulpelio metaduomenų pradžios koordinatės. Skaitydami pirmiausia turite perskaityti failo metaduomenis, kad rastumėte visus dominančius stulpelių fragmentus. Tada stulpelių dalys turėtų būti skaitomos paeiliui. Kiti metaduomenys apima formato versiją, schemą ir visas papildomas rakto-reikšmių poras.
  2. Metaduomenų ilgis (4 baitai).
  3. magiškas skaičius PAR1 (4 baitai).

ORC failo formatas

Optimizuotas eilučių-stulpelių failo formatas (Optimizuotas eilutės stulpelis, CRO) yra labai efektyvus duomenų saugojimo būdas ir buvo sukurtas siekiant įveikti kitų formatų apribojimus. Saugo duomenis idealiai kompaktiška forma, todėl galite praleisti nereikalingas detales – nereikia kurti didelių, sudėtingų ar rankiniu būdu prižiūrimų indeksų.

ORC formato privalumai:

  1. Vienas failas yra kiekvienos užduoties išvestis, kuri sumažina NameNode (pavadinimo mazgo) apkrovą.
  2. Hive duomenų tipų palaikymas, įskaitant DateTime, dešimtainius ir sudėtingus duomenų tipus (struktūrą, sąrašą, žemėlapį ir sąjungą).
  3. To paties failo skaitymas vienu metu naudojant skirtingus RecordReader procesus.
  4. Galimybė padalinti failus nenuskaitant žymeklių.
  5. Didžiausio galimo krūvos atminties paskirstymo skaitymo/rašymo procesams įvertinimas, remiantis informacija failo poraštėje.
  6. Metaduomenys saugomi dvejetainiu Protocol Buffers serializacijos formatu, kuris leidžia pridėti ir pašalinti laukus.

Didžiųjų duomenų failų formatai: trumpa edukacinė programa
ORC saugo eilučių rinkinius viename faile, o rinkinyje eilučių duomenys saugomi stulpelių formatu.

ORC faile saugomos eilučių grupės, vadinamos juostelėmis, ir pagalbinė informacija failo poraštėje. Failo pabaigoje esantis Postscript yra suglaudinimo parametrai ir suglaudintos poraštės dydis.

Numatytasis juostelės dydis yra 250 MB. Dėl tokių didelių juostelių skaitymas iš HDFS atliekamas efektyviau: dideliuose gretimuose blokuose.

Failo poraštėje įrašomas failo juostų sąrašas, eilučių skaičius vienoje juostoje ir kiekvieno stulpelio duomenų tipas. Ten taip pat įrašoma gauta kiekvieno stulpelio skaičius, min, max ir suma.

Juostos poraštėje yra srauto vietų katalogas.

Eilučių duomenys naudojami nuskaitant lenteles.

Indekso duomenys apima minimalias ir didžiausias kiekvieno stulpelio reikšmes ir eilučių padėtį kiekviename stulpelyje. ORC indeksai naudojami tik juostoms ir eilučių grupėms pasirinkti, o ne atsakyti į užklausas.

Įvairių failų formatų palyginimas

Avro lyginant su Parketu

  1. „Avro“ yra eilučių saugojimo formatas, o „Parquet“ saugo duomenis stulpeliuose.
  2. Parketas geriau tinka analitinėms užklausoms, o tai reiškia, kad skaitymo operacijos ir duomenų užklausos yra daug efektyvesnės nei rašymas.
  3. Rašymo operacijos „Avro“ atliekamos efektyviau nei „Parquet“.
  4. „Avro“ brandžiau nagrinėja grandinės evoliuciją. „Parquet“ palaiko tik schemos papildymą, o „Avro“ palaiko daugiafunkcinę evoliuciją, tai yra, kolonų pridėjimą ar keitimą.
  5. Parketas idealiai tinka kelių stulpelių lentelės stulpelių pogrupiui pateikti. Avro tinka ETL operacijoms, kai užklausome visus stulpelius.

ORC prieš parketą

  1. Parketas geriau saugo įdėtus duomenis.
  2. ORC geriau tinka predikatiniam nuspaudimui.
  3. ORC palaiko ACID savybes.
  4. ORC geriau suspaudžia duomenis.

Ką dar skaityti šia tema:

  1. Didelių duomenų analizė debesyje: kaip įmonė gali tapti orientuota į duomenis.
  2. Kuklus duomenų bazių schemų vadovas.
  3. Mūsų telegramos kanalas apie skaitmeninę transformaciją.

Šaltinis: www.habr.com

Добавить комментарий