Formatet e skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër

Formatet e skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër
Zoti i Motit nga Remarin

Ekipa Zgjidhjet Cloud të Mail.ru ofron përkthimi i artikullit i inxhinierit Rahul Bhatia nga kompania Clairvoyant mbi formatet e skedarëve në të dhënat e mëdha, funksionet më të zakonshme të formatit Hadoop dhe cilin format është më i mirë të përdoret.

Pse janë të nevojshme formate të ndryshme skedarësh

NjĂ« kufizim i rĂ«ndĂ«sishĂ«m nĂ« performancĂ«n e aplikacioneve qĂ« mbĂ«shtesin HDFS, si MapReduce dhe Spark — koha e kĂ«rkimit, leximit dhe shkrimit tĂ« tĂ« dhĂ«nave. KĂ«to probleme pĂ«rkeqĂ«sohen nga vĂ«shtirĂ«sitĂ« nĂ« menaxhimin e grupeve tĂ« mĂ«dha tĂ« tĂ« dhĂ«nave, nĂ«se kemi njĂ« skemĂ« qĂ« evoluon dhe ka disa kufizime pĂ«r ruajtjen.

PĂ«rpunimi i tĂ« dhĂ«nave tĂ« mĂ«dha rrit ngarkesĂ«n nĂ« nĂ«n-sistemet e ruajtjes — Hadoop ruan tĂ« dhĂ«nat nĂ« mĂ«nyrĂ« tĂ« tepruar pĂ«r tĂ« arritur qĂ«ndrueshmĂ«rinĂ«. PĂ«rveç disqeve, ngarkohen procesori, rrjeti, sistemi i hyrjes-daljes dhe kĂ«shtu me radhĂ«. NdĂ«rsa rritet sasia e tĂ« dhĂ«nave, pĂ«rmirĂ«sohet gjithashtu kostoja e pĂ«rpunimit dhe ruajtjes sĂ« tyre.

Formatet e ndryshme të skedarëve në Hadoop janë krijuar për të zgjidhur këto probleme. Zgjedhja e formatit të duhur të skedarit mund të sjellë disa përfitime të konsiderueshme:

  1. Koha më e shpejtë e leximit.
  2. Koha më e shpejtë e shkrimit.
  3. Skedarë të ndarë.
  4. Mbështetje për evolucionin e skemave.
  5. Mbështetje e zgjeruar për kompresimin.

Disa formate skedarësh janë për përdorim të përgjithshëm, të tjerat për variante më specifike, dhe disa janë zhvilluar me karakteristika specifike të të dhënave. Pra, zgjedhja është vërtetë e madhe.

Formati i skedarëve Avro

PĂ«r serializimi i tĂ« dhĂ«nave Avro pĂ«rdoret gjerĂ«sisht — ky Ă«shtĂ« format i bazuar nĂ« rreshta, qĂ« do tĂ« thotĂ«, formati i tĂ« dhĂ«nave tĂ« ruajtura nĂ« Hadoop. Ai ruan skemĂ«n nĂ« format JSON, duke e lehtĂ«suar leximin dhe interpretimin nga çdo program. TĂ« dhĂ«nat vetĂ« ruhen nĂ« format binar, qĂ« Ă«shtĂ« kompakt dhe efikas.

Sistemi i serializimit Avro është neutral ndaj gjuhëve. Skedarët mund të përpunohen nga gjuhë të ndryshme, në këtë moment janë C, C++, C#, Java, Python dhe Ruby.

NjĂ« veçori kyçe e Avro Ă«shtĂ« mbĂ«shtetja e besueshme pĂ«r skemat e tĂ« dhĂ«nave, tĂ« cilat ndryshojnĂ« me kalimin e kohĂ«s, pra evoluojnĂ«. Avro e kupton ndryshimin e skemĂ«s — fshirjen, shtimin ose modifikimin e fushave.

Avro mbështet struktura të ndryshme të të dhënave. Për shembull, mund të krijoni një regjistër që përmban një listë, një tip të enumeruar dhe një regjistër nën.

Formatet e skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër
Ky format Ă«shtĂ« ideal pĂ«r regjistrimin nĂ« zonĂ«n e uljes (nĂ« zonĂ«n kaluese) tĂ« liqenit tĂ« tĂ« dhĂ«nave (liqeni i tĂ« dhĂ«nave, ose data lake — njĂ« koleksion instancash pĂ«r ruajtjen e llojeve tĂ« ndryshme tĂ« tĂ« dhĂ«nave pĂ«rveç burimeve tĂ« tĂ« dhĂ«nave qĂ« lidhen drejtpĂ«rdrejt).

Pra, për regjistrimin në zonën e uljes të liqenit të të dhënave, ky format është më i përshtatshëm për arsyet e mëposhtme:

  1. TĂ« dhĂ«nat nga kjo zonĂ« zakonisht lexohen tĂ«rĂ«sisht pĂ«r pĂ«rpunim tĂ« mĂ«tejshĂ«m nga sistemet poshtĂ« — dhe formati i bazuar nĂ« rreshta nĂ« kĂ«tĂ« rast Ă«shtĂ« mĂ« efikas.
  2. Sistemet poshtĂ« mund tĂ« nxjerrin lehtĂ«sisht tabelat e skemave nga skedarĂ«t — nuk Ă«shtĂ« nevoja tĂ« ruhen skemat veçmas nĂ« njĂ« metastore tĂ« jashtĂ«m.
  3. Çdo ndryshim nĂ« skemĂ«n fillestare pĂ«rpunohen lehtĂ«sisht (evolucioni i skemĂ«s).

Formati i skedave Parquet

Parquet është një format skedash open source për Hadoop, i cili ruan strukturat e brendshme të të dhënave në një format të sheshtë kolonor.

Në krahasim me qasjen tradicionale lineare, Parquet është më efikas në aspektin e ruajtjes dhe performancës.

Kjo është veçanërisht e dobishme për kërkesat që lexojnë kolona të caktuara nga një tabelë e gjerë (me shumë kolona). Falë formatit të skedave, lexohen vetëm kolonat e nevojshme, duke reduktuar kështu input-in dhe output-in në minimum.

NjĂ« shpjegim i vogĂ«l: pĂ«r tĂ« kuptuar mĂ« mirĂ« formatin e skedave Parquet nĂ« Hadoop, le tĂ« shohim se çfarĂ« Ă«shtĂ« njĂ« format i bazuar nĂ« kolona — pra, njĂ« format kolonal. NĂ« kĂ«tĂ« format, vlerat homogjene tĂ« çdo kolone ruhen sĂ« bashku.

Për shembull, shkrimi përfshin fushat ID, Name dhe Department. Në këtë rast, të gjitha vlerat e kolones ID do të ruhen së bashku, ashtu si edhe vlerat e kolones Name e kështu me radhë. Tabela do të duket afërsisht kështu:

ID
Emri
Department

1
emp1
d1

2
emp2
d2

3
emp3
d3

Në formatin e vargjeve, të dhënat do të ruhen si më poshtë:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Në formatin kolonal, të njëjtat të dhëna do të ruhet kështu:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Formati kolonal është më efikas kur duhet të kërkoni disa kolona nga tabela. Ai do të lexojë vetëm kolonat e nevojshme, sepse ato ndodhen ngjitur. Kështu, operacionet e input-it dhe output-it reduktohen në minimum.

PĂ«r shembull, ju nevojitet vetĂ«m kolona NAME. NĂ« formatin e vargjeve Çdo regjistrim nĂ« grupin e tĂ« dhĂ«nave duhet tĂ« ngarkohet, tĂ« analizohet sipas fushave, dhe pastaj tĂ« nxirren tĂ« dhĂ«nat NAME. Formati kolonĂ« lejon kalimin direkt nĂ« kolonĂ«n Name, pasi tĂ« gjitha vlerat pĂ«r kĂ«tĂ« kolonĂ« ruhen sĂ« bashku. Nuk do tĂ« ketĂ« nevojĂ« tĂ« skanohet e gjithĂ« regjistrimi.

Kështu, formati kolonë rrit performancën e pyetjeve, pasi për të kaluar në kolonat e nevojshme kërkohet më pak kohë kërkimi dhe reduktohet numri i operacioneve të hyrjes-daljes, pasi lexohet vetëm kolonat e nevojshme.

Një nga veçoritë unike Parquet është që në një format të tillë ai mund të ruajë të dhëna me struktura të brendshme. Kjo do të thotë se në skedarin Parquet, edhe fushat e brendshme mund të lexohen veçmas pa pasur nevojë të lexohen të gjitha fushat në strukturën e brendshme. Për ruajtjen e strukturave të brendshme, Parquet përdor algoritmin e shkatërrimit dhe montimit (shredding and assembly).

Formatet e skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër
Për të kuptuar formatin e skedarit Parquet në Hadoop, është e nevojshme të dihen termat e mëposhtme:

  1. Grupi i rreshtave (row group): një ndarje logjike horizontale e të dhënave në rreshta. Grupi i rreshtave përbëhet nga një fragment i secilës kolonë në grupin e të dhënave.
  2. Fragmenti i kolonës (column chunk): një fragment i një kolone specifike. Këto fragmente kolone jetojnë në një grup të caktuar rreshtash dhe garantuar do të jenë të ngjitur në skedar.
  3. Faqja (page): fragmentet e kolonave ndahen në faqe, të regjistruara njëra pas tjetrës. Faqet kanë një titull të përbashkët, kështu që gjatë leximit mund të kaloni të panevojshmet.

Formatet e skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër
Këtu titulli thjesht përmban një numër magjik PAR1 (4 bytes), i cili identifikon skedarin si të formatit Parquet.

NĂ« fund shkruhet si vijon:

  1. Metadat e skedarit, të cilat përmbajnë koordinatat fillestare të metadata të secilës kolonë. Gjatë leximit, së pari duhet të lexoni metadat e skedarit për të gjetur të gjitha fragmentet e kolonave të interesit. Pastaj, fragmentet e kolonave duhet të lexohen radhazi. Metadat gjithashtu përfshijnë versionin e formatit, skemën dhe çdo çift shtesë çelës-vlerë.
  2. Gjatësia e metadatas (4 bytes).
  3. Numri magjik PAR1 (4 bytes).

Formati i skedarëve ORC

Formati i skedarĂ«ve tĂ« optimizuar rresht-kolonĂ« (Optimized Row Columnar, ORC) ofron njĂ« mĂ«nyrĂ« shumĂ« efikase pĂ«r tĂ« ruajtur tĂ« dhĂ«na dhe Ă«shtĂ« projektuar pĂ«r tĂ« tejkaluar kufizimet e formateve tĂ« tjera. Ruajtjen e tĂ« dhĂ«nave nĂ« njĂ« format tĂ« pĂ«rsosur kompakt, duke lejuar kalimin e detajeve tĂ« panevojshme — nĂ« tĂ« njĂ«jtĂ«n kohĂ«, nuk kĂ«rkon ndĂ«rtimin e indekseve tĂ« mĂ«dha, tĂ« komplikuara ose tĂ« menaxhueshme manualisht.

Përfitimet e formatit ORC:

  1. Një skedar në daljen e çdo detyre, që redukton ngarkesën në NameNode (nyja e emrave).
  2. Mbështetje për lloje të dhënash Hive, duke përfshirë DateTime, numra decimalë dhe lloje komplekse të dhënash (strukturë, listë, hartë dhe bashkim).
  3. Leximi i njëjtit skedar nga procese të ndryshme RecordReader njëkohësisht.
  4. Mundësia për të ndarë skedarët pa skanuar për ndonjë shenjë.
  5. Vlerësimi i ndarjes maksimale të kujtesës heap për proceset e leximit/shkruarjes sipas informacionit në fundin e skedarit.
  6. Metadatot ruhen në një format binar të serializimit të Protocol Buffers, i cili lejon shtimin dhe fshirjen e fushave.

Formatet e skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër
ORC ruan koleksione rreshtash në një skedar, dhe brenda koleksionit, të dhënat rreshtore ruhen në format kolonesh.

Fajl ORC ruan grupe rreshtash, të cilat quhen stripe (stripes), si dhe informacion ndihmës në fund të fajlit. Postscript në fund të fajlit përmban parametrat e kompresimit dhe madhësinë e fundit të kompresuar.

Për default, madhësia e stripe është 250 MB. Me stripe të tillë të mëdha, leximi nga HDFS realizohet më efektivisht: në blloqe të mëdha dhe të pandërprera.

Në fundin e fajlit është shkruar një listë e stripeve në fajl, numri i rreshtave për çdo stripe dhe lloji i të dhënave për çdo kolone. Aty është shkruar gjithashtu vlera përfundimtare count, min, max dhe sum për çdo kolone.

Fundi i stripe përmban një katalog pozita rrjedhe.

Të dhënat rreshtore përdoren gjatë skanimit të tabelave.

Të dhënat e indeksit përfshijnë vlerat minimale dhe maksimale për çdo kolone dhe pozitat e rreshtave në çdo kolone. Indeksët ORC përdoren vetëm për të zgjedhur stripe dhe grupe rreshtash, dhe jo për t'u përgjigjur ndaj kërkesave.

Krahasimi i formateve të ndryshme të fayllave

Avro në krahasim me Parquet

  1. Avro është një format ruajtjeje sipas rreshtave, ndërsa Parquet ruan të dhënat sipas kolonave.
  2. Parquet është më i përshtatshëm për kërkesat analitike, domethënë operacionet e leximit dhe kërkimit të të dhënave janë shumë më efikase se shkrimi.
  3. Operacionet e shkrimit në Avro kryhen më efektivisht se në Parquet.
  4. Avro funksionon më qartë me evolucionin e skemave. Parquet mbështet vetëm shtimin e skemave, ndërsa në Avro është implementuar një evolucion multifunksional, domethënë shtimi ose modifikimi i kolonave.
  5. Parquet është ideal për të kërkuar nëngrupe kolonash në një tabelë me shumë kolona. Avro është i përshtatshëm për operacione ETL, ku kërkojmë të gjitha kolonat.

ORC krahasuar me Parquet

  1. Parquet ruan më mirë të dhënat e brendshme.
  2. ORC është më i përshtatshëm për shtypjen e predikateve (predicate pushdown).
  3. ORC mbështet pronat ACID.
  4. ORC thjeshton më mirë të dhënat.

ÇfarĂ« tjetĂ«r tĂ« lexoni nĂ« kĂ«tĂ« temĂ«:

  1. Analiza e të dhënave të mëdha në cloud: si të bëhen kompanitë të orientuara nga të dhënat.
  2. Një udhëzues modest për skemat e bazave të të dhënave.
  3. Kanalin tonë në Telegram për transformimin digjital.

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster