Fitxategi-formatuak big datan: hezkuntza-programa laburra

Fitxategi-formatuak big datan: hezkuntza-programa laburra
Weather Deity Remarin-en eskutik

Team Mail.ru Cloud Solutions eskaintza artikuluaren itzulpena Clairvoyant-eko Rahul Bhatia ingeniariak datu handietan dauden fitxategi-formatuei buruz, zein diren Hadoop formatuen ezaugarri ohikoenak eta zein formatu hobe den erabiltzea.

Zergatik behar dira fitxategi formatu desberdinak?

MapReduce eta Spark bezalako HDFS gaitutako aplikazioen errendimendu-lepo nagusietako bat datuak bilatzeko, irakurtzeko eta idazteko behar den denbora da. Arazo horiei datu multzo handiak kudeatzeko zailtasunak gehitzen zaizkie, eboluzionatzen ari den eskema bat badugu finkoa baino, edo biltegiratze-muga batzuk badaude.

Datu handiak prozesatzeak biltegiratze azpisistemaren karga handitzen du - Hadoop-ek datuak modu erredundantean gordetzen ditu akatsen tolerantzia lortzeko. Diskoez gain, prozesadorea, sarea, sarrera/irteera sistema eta abar kargatzen dira. Datuen bolumena hazi ahala, prozesatzeko eta biltegiratzeko kostua ere handitzen da.

Fitxategi formatu ezberdinetan Hadoop arazo horiek zehazki konpontzeko asmatua. Fitxategi-formatu egokia hautatzeak onura nabarmen batzuk ekar ditzake:

  1. Irakurketa denbora azkarragoa.
  2. Grabaketa denbora azkarragoa.
  3. Partekatutako fitxategiak.
  4. Eskemaren bilakaeraren laguntza.
  5. Konpresio euskarria hedatua.

Fitxategi-formatu batzuk erabilera orokorrerako daude pentsatuta, beste batzuk erabilera zehatzagoetarako eta beste batzuk datu-ezaugarri zehatzak betetzeko diseinatuta daude. Beraz, aukera nahiko handia da.

Avro fitxategi formatua

For datuen serializazioa Avro oso erabilia da kateetan oinarrituta, hau da, Hadoop-en kateen datuak biltegiratzeko formatua. Eskema JSON formatuan gordetzen du, edozein programak irakurtzeko eta interpretatzeko erraza izan dezan. Datuak berez formatu bitarrean daude, trinkoak eta eraginkorrak.

Avroren serializazio sistema hizkuntza neutrala da. Fitxategiak hainbat hizkuntzatan prozesatu daitezke, gaur egun C, C++, C#, Java, Python eta Ruby.

Avroren funtsezko ezaugarri bat denboran zehar aldatzen diren datu-eskemetarako euskarri sendoa da, hau da, eboluzionatzen dutenak. Avro-k eskema aldaketak ulertzen ditu: eremuak ezabatzea, gehitzea edo aldatzea.

Avro-k hainbat datu-egitura onartzen ditu. Adibidez, matrize bat, enumeratutako mota bat eta azpierregistro bat dituen erregistro bat sor dezakezu.

Fitxategi-formatuak big datan: hezkuntza-programa laburra
Formatu hau aproposa da datu-laku baten lurreratze (trantsizio) eremuan idazteko (datu-lakua, edo data lake - datu-iturburuez gain hainbat datu-mota zuzenean gordetzeko instantzia bilduma bat).

Beraz, formatu hau egokiena da datu-laku baten lurreratzeko eremuan idazteko arrazoi hauengatik:

  1. Zona honetako datuak osorik irakurtzen dira normalean beherako sistemek prozesatzeko, eta errenkadan oinarritutako formatua eraginkorragoa da kasu honetan.
  2. Beheko sistemek erraz berreskura ditzakete eskema-taulak fitxategietatik; ez dago eskemak bereizita gorde behar kanpoko meta biltegian.
  3. Jatorrizko eskemaren edozein aldaketa erraz prozesatzen da (eskemaren bilakaera).

Parquet fitxategi formatua

Parquet Hadoop-entzako kode irekiko fitxategi formatua da, gordetzen duena habiaratutako datu-egiturak zutabe formatu lauan.

Errenkadako ikuspegi tradizionalarekin alderatuta, parketa eraginkorragoa da biltegiratze eta errendimendu aldetik.

Hau bereziki erabilgarria da taula zabal bateko (zutabe asko) zutabe zehatzak irakurtzen dituzten kontsultetarako. Fitxategi-formatuari esker, beharrezkoak diren zutabeak bakarrik irakurtzen dira, beraz, I/O gutxienekoa da.

Digresio txiki bat eta azalpena: Hadoop-en Parquet fitxategi formatua hobeto ulertzeko, ikus dezagun zer den zutabeetan oinarritutako formatua, hau da, zutabe formatua. Formatu honek zutabe bakoitzaren antzeko balioak gordetzen ditu elkarrekin.

Adibidez, erregistroak ID, Izena eta Saila eremuak ditu. Kasu honetan, ID zutabeen balio guztiak batera gordeko dira, Izena zutabearen balioak eta abar. Taulak honelako itxura izango du:

ID
izena
Sailak

1
emp1
d1

2
emp2
d2

3
emp3
d3

Kate formatuan, datuak honela gordeko dira:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Zutabe formatuan, datu berdinak honela gordeko dira:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Zutabe formatua eraginkorragoa da taula bateko hainbat zutabe kontsultatu behar dituzunean. Beharrezko zutabeak bakarrik irakurriko ditu ondoan daudelako. Modu honetan, I/O eragiketak ahalik eta gutxien mantentzen dira.

Adibidez, IZENA zutabea baino ez duzu behar. IN kate formatua Datu-multzoko erregistro bakoitza kargatu, eremuka analizatu eta IZENA datuak atera behar dira. Zutabe formatuak Izena zutabean zuzenean zulatzeko aukera ematen du, zutabe horren balio guztiak batera gordetzen direlako. Ez duzu grabazio osoa eskaneatu beharrik.

Horrela, zutabe formatuak kontsultaren errendimendua hobetzen du, beharrezkoak diren zutabeetara iristeko bilaketa denbora gutxiago behar duelako eta I/O eragiketa kopurua murrizten duelako nahi diren zutabeak soilik irakurtzen direlako.

Ezaugarri berezietako bat Parket da formatu honetan ahal dela gorde datuak habiaratutako egiturekin. Horrek esan nahi du Parquet fitxategi batean habiaraturiko eremuak ere banaka irakur daitezkeela habiaraturiko egiturako eremu guztiak irakurri beharrik gabe. Parquet-ek birrintzeko eta muntatzeko algoritmo bat erabiltzen du habiaraturiko egiturak gordetzeko.

Fitxategi-formatuak big datan: hezkuntza-programa laburra
Hadoop-en Parquet fitxategi formatua ulertzeko, honako termino hauek ezagutu behar dituzu:

  1. Soka multzoa (errenkada-taldea): datuen banaketa horizontal logikoa ilaratan. Errenkada talde bat datu multzoko zutabe bakoitzaren zati batek osatzen dute.
  2. Zutabe zatia (zutabe zatia): zutabe zehatz baten zati bat. Zutabe zati hauek errenkada talde zehatz batean bizi dira eta fitxategian ondokoak izango direla bermatuta dago.
  3. orri (orria): zutabe zatiak bata bestearen atzetik idatzitako orrialdeetan banatzen dira. Orrialdeek izenburu komuna dute, irakurtzerakoan beharrezkoak ez direnak salta ditzakezu.

Fitxategi-formatuak big datan: hezkuntza-programa laburra
Hemen izenburuak zenbaki magikoa besterik ez dauka PAR1 (4 byte) fitxategia Parquet fitxategi gisa identifikatzen duena.

Oinak honako hau dio:

  1. Zutabe bakoitzaren metadatuen hasierako koordenatuak dituen fitxategi metadatuak. Irakurtzean, lehenik fitxategiaren metadatuak irakurri behar dituzu interesgarri diren zutabe zati guztiak aurkitzeko. Ondoren, zutabe-zatiak sekuentzialki irakurri behar dira. Beste metadatu batzuk formatu-bertsioa, eskema eta gako-balio-bikote osagarriak dira.
  2. Metadatuen luzera (4 byte).
  3. zenbaki magikoa PAR1 (4 byte).

ORC fitxategi formatua

Optimizatua errenkada-zutabe fitxategi formatua (Optimizatutako errenkada-zutabea, KRO) datuak gordetzeko oso modu eraginkorra eskaintzen du eta beste formatu batzuen mugak gainditzeko diseinatu zen. Datuak forma ezin hobeto trinkoan gordetzen ditu, beharrezkoak ez diren xehetasunak saltatzeko aukera emanez, indize handi, konplexuak edo eskuz mantendutakoak eraiki beharrik gabe.

ORC formatuaren abantailak:

  1. Fitxategi bat zeregin bakoitzaren irteera da, eta horrek NameNode-n (izena-nodoa) karga murrizten du.
  2. Hive datu-motetarako laguntza, DateTime, datu hamartar eta konplexuak barne (egitura, zerrenda, mapa eta batasuna).
  3. Fitxategi beraren irakurketa aldi berean RecordReader prozesu ezberdinek.
  4. Fitxategiak banatzeko gaitasuna markatzaileak bilatu gabe.
  5. Fitxategi-oineko informazioan oinarrituta irakurketa/idazketa prozesuetarako heap memoria esleipen maximoaren estimazioa.
  6. Metadatuak Protocol Buffers serializazio bitarreko formatuan gordetzen dira, eta horri esker eremuak gehitu eta ken daitezke.

Fitxategi-formatuak big datan: hezkuntza-programa laburra
ORC-k kateen bildumak fitxategi bakar batean gordetzen ditu, eta bildumaren barruan, kateen datuak zutabe formatuan gordetzen dira.

ORC fitxategi batek marra izeneko lerro-taldeak eta informazio osagarria gordetzen ditu fitxategiaren oinean. Fitxategiaren amaierako Postscript-ak konpresio-parametroak eta konprimitutako oinaren tamaina ditu.

Marra-tamaina lehenetsia 250 MB da. Hain marra handiak direla eta, HDFStik irakurtzea eraginkorrago egiten da: ondoko bloke handietan.

Fitxategi-oinak fitxategiko erreien zerrenda, errei bakoitzeko errenkada kopurua eta zutabe bakoitzaren datu-mota erregistratzen ditu. Zutabe bakoitzeko zenbaketa, min, max eta batuketaren ondoriozko balioa ere bertan idazten da.

Bandaren oinak korronteen kokapenen direktorioa dauka.

Errenkadaren datuak taulak eskaneatzeko erabiltzen dira.

Indizearen datuek zutabe bakoitzeko gutxieneko eta gehienezko balioak eta zutabe bakoitzeko errenkaden posizioa barne hartzen dituzte. ORC indizeak marra eta errenkada taldeak hautatzeko soilik erabiltzen dira, ez galderei erantzuteko.

Fitxategi formatu ezberdinen konparaketa

Avro parketarekin alderatuta

  1. Avro errenkaden biltegiratze formatua da, eta Parquet-ek datuak zutabeetan gordetzen ditu.
  2. Parquet hobeto egokitzen da kontsulta analitikoetarako, hau da, irakurketa eragiketak eta datuak kontsultatzea idazketak baino askoz eraginkorragoak dira.
  3. Avro-n idazteko eragiketak Parquet-en baino eraginkorrago egiten dira.
  4. Avrok zirkuituaren bilakaera helduago jorratzen du. Parquet-ek eskema gehitzea bakarrik onartzen du, eta Avrok, berriz, funtzio anitzeko bilakaera onartzen du, hau da, zutabeak gehitzea edo aldatzea.
  5. Parquet aproposa da zutabe anitzeko taula bateko zutabeen azpimultzo bat kontsultatzeko. Avro egokia da zutabe guztiak kontsultatzen ditugun ETL eragiketetarako.

ORC vs Parquet

  1. Parquet-ek hobeto gordetzen ditu habiaratutako datuak.
  2. ORC hobe da predikatu pushdown egiteko.
  3. ORC-ek ACID propietateak onartzen ditu.
  4. ORC-k datuak hobeto konprimitzen ditu.

Zer gehiago irakurri gaiari buruz:

  1. Big data analisia hodeian: nola bihurtu daitekeen enpresa bat datuetara bideratua.
  2. Datu-baseen eskemen gida xume bat.
  3. Eraldaketa digitalari buruzko gure telegram kanala.

Iturria: www.habr.com

Gehitu iruzkin berria