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

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

Ekipa Mail.ru Cloud Solutions ofron përkthimi i artikullit i inxhinierit Rahul Bhatia nga kompania Clairvoyant mbi format e skedarëve në të dhënat e mëdha, funksionet më të zakonshme të formateve Hadoop dhe cilin format është më i mirë për t'u përdorur.

Pse na nevojiten formate të ndryshme skedarësh

Një pikë e rëndësishme e ngadalësimit në performancën e aplikacioneve që mbështesin HDFS, si MapReduce dhe Spark, është 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ë të evolucionit të saj, ose janë të pranishme disa kufizime mbi ruajtjen.

PĂ«rpunimi i tĂ« dhĂ«nave tĂ« mĂ«dha rrit ngarkesĂ«n mbi subsistemin e ruajtjes — Hadoop ruan tĂ« dhĂ«nat nĂ« mĂ«nyrĂ« tĂ« tepĂ«rt 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 volumi i tĂ« dhĂ«nave, rritet gjithashtu kostoja e pĂ«rpunimit dhe ruajtjes sĂ« tyre.

Format e ndryshme të skedarëve në Hadoop janë krijuar për të adresuar këto çështje. Zgjedhja e formatit të duhur të skedarëve mund të sjellë disa avantazhe të rëndësishme:

  1. Koha më e shpejtë e leximit.
  2. Koha më e shpejtë e shkrimit.
  3. Skedarë të ndashëm.
  4. Mbështetje për evolucionin e skemave.
  5. Mbështetje e avancuar për kompresim.

Disa formate skedarësh janë të destinuara për përdorim të përgjithshëm, të tjera për variante të më specifikuara, dhe disa janë të dizajnuara me karakteristika të caktuara të të dhënave në mendje. Pra, zgjedhja është të vërtetë mjaft e madhe.

Formati i skedarëve Avro

PĂ«r pĂ«r serializimin e tĂ« dhĂ«nave shumĂ« pĂ«rdorin Avro — ky Ă«shtĂ« format i bazuar nĂ« stringje, pra formati me stringje, pĂ«r ruajtjen e tĂ« dhĂ«nave nĂ« Hadoop. Ai ruan skemĂ«n nĂ« formatin JSON, duke e lehtĂ«suar leximin dhe interpretimin e saj nga çdo program. TĂ« dhĂ«nat vetĂ« janĂ« nĂ« formatin binar, kompakt dhe efikas.

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

NjĂ« karakteristikĂ« kyçe e Avro Ă«shtĂ« mbĂ«shtetje e besueshme pĂ«r skema tĂ« tĂ« dhĂ«nave qĂ« ndryshojnĂ« me kalimin e kohĂ«s, pra evolucionin e tyre. Avro kupton ndryshimet nĂ« skemĂ« — fshirja, shtimi ose ndryshimi i fushave.

Avro mbështet struktura të ndryshme të të dhënave. Për shembull, mund të krijoni një rekord që përmban një pjesë, lloj enumerues dhe një nën-rekord.

Formati i skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër
Ky ky format Ă«shtĂ« perfekt pĂ«r regjistrimin nĂ« zonĂ«n e uljes (kalimi) 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Ă« dhĂ«nash direkt).

Pra, për regjistrimin në zonën e uljes të liqenit të të dhënave, ky format është më i përshtatshmi për arsye të 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 bazuar nĂ« rreshta nĂ« kĂ«tĂ« rast Ă«shtĂ« mĂ« efikas.
  2. Sistemet poshtĂ« mund tĂ« nxjerrin lehtĂ«sisht skemat e tabelave nga skedarĂ«t — nuk Ă«shtĂ« e nevojshme tĂ« ruani skemat ndaras nĂ« njĂ« meta-ruajtje tĂ« jashtme.
  3. Çdo ndryshim nĂ« skemĂ«n origjinale pĂ«rpunohen lehtĂ«sisht (evolucioni i skemĂ«s).

Formati i skedarëve Parquet

Parquet është një format skedari me burim të hapur për Hadoop, i cili ruan strukturat e të dhënave të mbjella në një format të thjeshtë kolone.

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

Kjo është veçanërisht e dobishme për pyetje që lexojnë kolona specifike nga një tabelë të gjerë (me shumë kolona). Falë formatit të skedarëve, lexohen vetëm kolonat e nevojshme, duke minimizuar hyrjet dhe daljet.

NjĂ« sqarim i shkurtĂ«r: pĂ«r tĂ« kuptuar mĂ« mirĂ« formatin e skedarit Parquet nĂ« Hadoop, le tĂ« shikojmĂ« çfarĂ« Ă«shtĂ« njĂ« format i bazuar nĂ« kolona — domethĂ«nĂ« njĂ« format kolone. NĂ« njĂ« format tĂ« tillĂ« ruhen sĂ« bashku vlera tĂ« njĂ«jtĂ« pĂ«r çdo kolonĂ«.

Për shembull, regjistrimi përmban fushat ID, Emri dhe Departamenti. Në këtë rast, të gjitha vlerat e kolonës ID do të ruhen së bashku, ashtu si vlerat e kolonës Emri e kështu me radhë. Tabela do të duket pak a shumë kështu:

ID
Emri
Departamenti

1
emp1
d1

2
emp2
d2

3
emp3
d3

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

1
emp1
d1
2
emp2
d2
3
emp3
d3

Në formatin e kolone të skedarëve, të njëjtat të dhëna do të ruhen kështu:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Formati kolone është më efikas kur keni nevojë të kërkoni disa kolona nga tabela. Ai do të lexojë vetëm kolonat e nevojshme, sepse ato ndodhen afër njëra-tjetrës. Kështu, operacionet e hyrjes dhe daljes minimizohen.

PĂ«r shembull, ju nevojitet vetĂ«m kolona EMRI. NĂ« formatin e rreshtit Çdo regjistrim nĂ« grupin e dhĂ«nave duhet ngarkuar, analizuar sipas fushave dhe pastaj tĂ« nxirren tĂ« dhĂ«nat NAME. Formati kolonar lejon qĂ« tĂ« kaloni direkt te kolona Name, pasi tĂ« gjitha vlerat pĂ«r kĂ«tĂ« kolonĂ« ruhen sĂ« bashku. Nuk do tĂ« jetĂ« e nevojshme tĂ« skanoni tĂ« gjithĂ« regjistrimin.

Kështu, formati kolonor rrit performancën e kërkesave, pasi kalimi te kolonat e nevojshme kërkon më pak kohë kërkimi dhe zvogëlon numrin e operacioneve të hyrje-daljeve, duke lexuar vetëm kolonat e nevojshme.

Një nga veçoritë unike Parquet ka të bëjë me faktin se në këtë format ai mund të ruajë të dhëna me struktura të shtrirë. Kjo do të thotë se në skedarin Parquet, madje fushat e shtrira mund të lexohen veçmas pa qenë nevoja të lexoni të gjitha fushat në strukturën e shtrirë. Për ruajtjen e strukturave të shtrirë, Parquet përdor algoritmin e grimcimit dhe montimit (shredding and assembly).

Formati i 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, duhet të dini termat e mëposhtëm:

  1. Grupi i rreshtave (row group): ndarje logjike horizontale e të dhënave në rreshta. Grupi i rreshtave përbëhet nga një fragment i çdo kolone në grupin e dhënave.
  2. Fragmenti i kolonës (column chunk): fragmenti i një kolonë specifike. Këto fragmente kolonash jetojnë në një grup rreshtash të caktuar dhe garantimisht do të jenë ngjitur në skedar.
  3. Faqja (page): fragmentet e kolonave ndahen në faqe, të shkruara një pas tjetrës. Faqet kanë një titull të përbashkët, kështu që kur lexoni, mund të kaloni ato të padëshiruara.

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

Në fund është shkruar e mëposhtme:

  1. Meta të dhënat e skedarit, të cilat përmbajnë koordinatat fillestare të meta të dhënave për çdo kolonë. Kur lexoni, duhet së pari të lexoni meta të dhënat e skedarit për të gjetur të gjitha fragmentet e kolonave të interesit. Pastaj, fragmentet e kolonave duhet të lexohen radhazi. Meta të dhënat përfshijnë gjithashtu versionin e formatit, skemën dhe çdo çift shtesë çelës-vlerë.
  2. Gjatësia e meta të dhënave (4 byte).
  3. Numri magjik PAR1 (4 byte).

Formati i skedarëve ORC

Formati i skedarĂ«ve tĂ« optimizuar rresht-kolonĂ«s (Optimized Row Columnar, ORC) ofron njĂ« mĂ«nyrĂ« shumĂ« efektive pĂ«r ruajtjen e tĂ« dhĂ«nave dhe Ă«shtĂ« zhvilluar pĂ«r tĂ« tejkaluar kufizimet e formateve tĂ« tjera. Ruajt tĂ« dhĂ«nat nĂ« njĂ« formĂ« tĂ« pĂ«rsosur kompakte, duke lejuar kalimin e detajeve tĂ« panevojshme — pa kĂ«rkuar ndĂ«rtimin e indekseve tĂ« mĂ«dha, tĂ« komplikuara apo manualisht tĂ« mbajtura.

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 tipet e të dhënave Hive, duke përfshirë DateTime, decimal dhe tipe të dhënash komplekse (struct, list, map dhe union).
  3. Leximi njëkohësisht i të njëjtit skedar nga procese të ndryshme RecordReader.
  4. Mundësia për të ndarë skedarët pa skanuar për shenja.
  5. Vlerësimi i ndarjes maksimale të mundshme të memories heap për proceset e leximit/shkrimit sipas informacionit në fundin e skedarit.
  6. Metadatët ruhen në formatin binar të serializimit Protocol Buffers, që lejon shtimin dhe heqjen e fushave.

Formati i skedarëve në të dhënat e mëdha: një përmbledhje e shkurtër
ORC ruan koleksionet e rreshtave në një skedar, ndërsa brenda koleksionit, të dhënat rreshtore ruhen në formatin kolonor.

Skedari ORC ruan grupe rreshtash, që quhen stripes, dhe informacion të ndihmës në fundin e skedarit. Postscript në fund të skedarit përmban parametrat e kompresimit dhe madhësinë e fundin të kompresuar.

Për default, madhësia e stripe është 250 MB. Përmes stripe-ve të këtij madhësi të madhe, leximi nga HDFS kryhet më efektivisht: me blloqe të mëdha të pandërprera.

Në fundin e skedarit është e regjistruar një listë stripe në skedar, numri i rreshtave për stripe dhe tipi i të dhënave për çdo kolonë. Aty gjithashtu regjistrohet vlera rezultante count, min, max dhe sum për çdo kolonë.

Fundi i stripe përmban një katalog vendndodhjesh të fluxit.

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

Të dhënat e indeksit përfshijnë vlerat minimale dhe maksimale për çdo kolonë dhe pozitat e rreshtave në çdo kolonë. Indekset ORC përdoren vetëm për selektimin e stripe-ve dhe grupeve të rreshtave, dhe jo për të përgjigjur kërkesave.

Krahasimi i formateve të ndryshme të skedarëve

Avro krahasuar 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, që do të thotë se operacionet e leximit dhe kërkesës për të dhëna janë shumë më efektive se sa shkrimi.
  3. Operacionet e shkrimit në Avro kryhen më efektivisht se në Parquet.
  4. Avro funksionon më matur me evolucionin e skemave. Parquet mbështet vetëm shtimin e skemës, ndërsa Avro ka implementuar një evolucion multifunksional, që do të thotë shtimin ose ndryshimin e kolonave.
  5. Parquet është ideal për të kërkuar një nëngrup kolonash në një tabelë me shumë kolona. Avro është i përshtatshëm për operacionet ETL, ku ne kërkojmë të gjitha kolonat.

ORC krahasuar me Parquet

  1. Parquet ruan më mirë të dhënat e emtuara.
  2. ORC është më i përshtatshëm për shtimin e predikateve.
  3. ORC mbështet pronat ACID.
  4. ORC kompreson më mirë të dhënat.

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

  1. Analiza e tĂ« dhĂ«nave tĂ« mĂ«dha nĂ« ĐŸĐ±Đ»Đ°Đș: 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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster