Skráarsnið í stórum gögnum: stutt fræðsluforrit

Skráarsnið í stórum gögnum: stutt fræðsluforrit
Veðurguð eftir Remarin

Team Mail.ru skýjalausnir tilboð þýðing greinar verkfræðingur Rahul Bhatia frá Clairvoyant um hvaða skráarsnið eru í stórum gögnum, hverjir eru algengustu eiginleikar Hadoop sniða og hvaða snið er betra að nota.

Af hverju þarf mismunandi skráarsnið?

Stór flöskuháls á afköstum fyrir HDFS-virk forrit eins og MapReduce og Spark er tíminn sem það tekur að leita, lesa og skrifa gögn. Þessi vandamál bætast við erfiðleikana við að stjórna stórum gagnasöfnum ef við erum með stef í þróun frekar en fast, eða ef það eru einhverjar geymslutakmarkanir.

Vinnsla stórra gagna eykur álagið á geymsluundirkerfið - Hadoop geymir gögn óþarft til að ná fram bilunarþoli. Auk diska er örgjörvi, netkerfi, inntaks/úttakskerfi og svo framvegis hlaðið. Eftir því sem gagnamagn eykst eykst kostnaður við vinnslu og geymslu þeirra.

Ýmis skráarsnið í Hadoop fundið upp til að leysa einmitt þessi vandamál. Að velja viðeigandi skráarsnið getur veitt verulegan ávinning:

  1. Hraðari lestrartími.
  2. Hraðari upptökutími.
  3. Samnýttar skrár.
  4. Stuðningur við skemaþróun.
  5. Aukinn þjöppunarstuðningur.

Sum skráarsnið eru ætluð til almennrar notkunar, önnur til sértækari notkunar og sum eru hönnuð til að uppfylla ákveðin gagnaeiginleika. Þannig að valið er í raun frekar mikið.

Avro skráarsnið

Fyrir raðgreining gagna Avro er mikið notað - það streng byggt, það er strengjagagnageymslusnið í Hadoop. Það geymir stefið á JSON sniði, sem gerir það auðvelt að lesa og túlka með hvaða forriti sem er. Gögnin sjálf eru á tvíundarsniði, fyrirferðarlítil og skilvirk.

Serialization kerfi Avro er tungumál hlutlaust. Hægt er að vinna úr skrám á ýmsum tungumálum, eins og er C, C++, C#, Java, Python og Ruby.

Lykilatriði í Avro er öflugur stuðningur við gagnakerfi sem breytast með tímanum, það er að segja þróast. Avro skilur skemabreytingar - að eyða, bæta við eða breyta sviðum.

Avro styður margs konar gagnaskipulag. Til dæmis er hægt að búa til færslu sem inniheldur fylki, upptalda gerð og undirskrá.

Skráarsnið í stórum gögnum: stutt fræðsluforrit
Þetta snið er tilvalið til að skrifa á lendingarsvæði (flutnings) gagnavatns (gagnavatn, eða gagnavatn - safn tilvika til að geyma ýmsar tegundir gagna til viðbótar við gagnagjafa beint).

Þannig að þetta snið hentar best til að skrifa á lendingarsvæði gagnavatns af eftirfarandi ástæðum:

  1. Gögn frá þessu svæði eru venjulega lesin í heild sinni til frekari vinnslu með downstream kerfum - og snið sem byggir á röð er skilvirkara í þessu tilfelli.
  2. Eftirstreymiskerfi geta auðveldlega sótt skematöflur úr skrám - engin þörf á að geyma skema sérstaklega í ytri metageymslu.
  3. Auðvelt er að vinna úr öllum breytingum á upprunalegu skema (stefjaþróun).

Parket skráarsnið

Parket er opið skráarsnið fyrir Hadoop sem geymir hreiður gagnagerð á flötu dálkasniði.

Í samanburði við hefðbundna röð nálgun er Parket skilvirkara hvað varðar geymslu og afköst.

Þetta er sérstaklega gagnlegt fyrir fyrirspurnir sem lesa tiltekna dálka úr breiðri (marga dálka) töflu. Þökk sé skráarsniðinu eru aðeins nauðsynlegir dálkar lesnir, svo I/O er haldið í lágmarki.

Smá frávik og skýring: Til að skilja betur Parket skráarsniðið í Hadoop, skulum við sjá hvað dálk byggt - þ.e. dálka - snið er. Þetta snið geymir svipuð gildi fyrir hvern dálk saman.

Til dæmis, færslan inniheldur auðkenni, nafn og deild svæði. Í þessu tilviki verða öll auðkennisdálkgildin geymd saman, eins og nafn dálkgildin og svo framvegis. Taflan mun líta einhvern veginn svona út:

ID
heiti
deild

1
emp1
d1

2
emp2
d2

3
emp3
d3

Í strengjasniði verða gögnin vistuð sem hér segir:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Í dálkaskráarsniði verða sömu gögn vistuð svona:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Dálkasniðið er skilvirkara þegar þú þarft að spyrjast fyrir um marga dálka úr töflu. Það mun aðeins lesa nauðsynlega dálka vegna þess að þeir eru aðliggjandi. Þannig er I/O aðgerðum haldið í lágmarki.

Til dæmis þarftu aðeins NAME dálkinn. IN strengjasniði Hlaða þarf hverri færslu í gagnasafninu, flokka eftir reit og draga síðan út NAME gögnin. Dálksniðið gerir þér kleift að kafa beint niður í Nafn dálkinn vegna þess að öll gildin fyrir þann dálk eru geymd saman. Þú þarft ekki að skanna alla upptökuna.

Þannig bætir dálkasniðið afköst fyrirspurna vegna þess að það krefst minni uppflettingartíma til að komast að nauðsynlegum dálkum og dregur úr fjölda I/O aðgerða vegna þess að aðeins þeir dálkar sem óskað er eftir eru lesnir.

Einn af einstöku eiginleikum Parket er að á þessu sniði getur það geyma gögn með hreiðrum byggingum. Þetta þýðir að í Parket skrá er hægt að lesa jafnvel hreiðra reiti hver fyrir sig án þess að þurfa að lesa alla reiti í hreiðri uppbyggingu. Parket notar tætingar- og samsetningaralgrím til að geyma hreiður mannvirki.

Skráarsnið í stórum gögnum: stutt fræðsluforrit
Til að skilja Parket skráarsniðið í Hadoop þarftu að þekkja eftirfarandi hugtök:

  1. Hópur strengja (raðahópur): rökrétt lárétt skipting gagna í raðir. Röð hópur samanstendur af broti af hverjum dálki í gagnasafninu.
  2. Súlubrot (dálksklumpur): Brot úr ákveðinni dálki. Þessi dálkabrot búa í ákveðnum hópi raða og er tryggt að þau séu samfelld í skránni.
  3. Síðu (bls): Dálkabrotum er skipt í síður skrifaðar hver á eftir annarri. Síðurnar hafa sameiginlegan titil og því er hægt að sleppa óþarfa við lestur.

Skráarsnið í stórum gögnum: stutt fræðsluforrit
Hér inniheldur titillinn bara töfranúmerið PAR1 (4 bæti) sem auðkennir skrána sem Parket skrá.

Fótinn segir eftirfarandi:

  1. Lýsigögn skráar sem innihalda upphafshnit lýsigagna hvers dálks. Við lestur verður þú fyrst að lesa lýsigögn skráarinnar til að finna öll dálkbrot sem vekur áhuga. Síðan ætti að lesa dálkabrotin í röð. Önnur lýsigögn innihalda sniðútgáfu, skema og önnur lykilgildapör.
  2. Lengd lýsigagna (4 bæti).
  3. töfratala PAR1 (4 bæti).

ORC skráarsnið

Fínstillt röð-dálka skráarsnið (Bjartsýni röð dálkur, CRO) býður upp á mjög skilvirka leið til að geyma gögn og var hannað til að sigrast á takmörkunum annarra sniða. Geymir gögn á fullkomlega samsettu formi, sem gerir þér kleift að sleppa óþarfa smáatriðum - án þess að þurfa að búa til stórar, flóknar eða handvirkar vísitölur.

Kostir ORC sniðsins:

  1. Ein skrá er úttak hvers verkefnis, sem dregur úr álagi á NameNode (nafnahnút).
  2. Stuðningur við Hive gagnagerðir, þar á meðal DateTime, aukastaf og flóknar gagnagerðir (struct, list, map og union).
  3. Samtímis lestur á sömu skrá með mismunandi RecordReader ferlum.
  4. Geta til að skipta skrám án þess að leita að merkjum.
  5. Mat á hámarksmögulegri úthlutun á hrúguminni fyrir les-/skrifferla byggt á upplýsingum í skráarfóti.
  6. Lýsigögn eru geymd á Protocol Buffers binary serialization sniði, sem gerir kleift að bæta við og fjarlægja reiti.

Skráarsnið í stórum gögnum: stutt fræðsluforrit
ORC geymir söfn strengja í einni skrá og innan safnsins eru strengjagögn geymd á dálkaformi.

ORC skrá geymir hópa af línum sem kallast rönd og stuðningsupplýsingar í síðufæti skráarinnar. Eftirskriftin í lok skráarinnar inniheldur þjöppunarfæribreytur og stærð þjappaðs fóts.

Sjálfgefin röndastærð er 250 MB. Vegna svo stórra rönda er lestur úr HDFS framkvæmd á skilvirkari hátt: í stórum samliggjandi blokkum.

Skráarfótur skráir lista yfir brautir í skránni, fjölda raða á hverja braut og gagnategund hvers dálks. Þar er einnig skrifað gildið fyrir fjölda, mín, hámark og summa fyrir hvern dálk.

Fótur ræmunnar inniheldur skrá yfir staðsetningar strauma.

Línugögn eru notuð þegar töflur eru skannaðar.

Vísitölugögn innihalda lágmarks- og hámarksgildi fyrir hvern dálk og staðsetningu raðanna í hverjum dálki. ORC vísitölur eru aðeins notaðar til að velja rendur og raðahópa, ekki til að svara fyrirspurnum.

Samanburður á mismunandi skráarsniðum

Avro miðað við Parket

  1. Avro er raðgeymslusnið en Parket geymir gögn í dálkum.
  2. Parket hentar betur fyrir greiningarfyrirspurnir, sem þýðir að lestraraðgerðir og fyrirspurnargögn eru mun skilvirkari en skrif.
  3. Skrifunaraðgerðir í Avro eru gerðar á skilvirkari hátt en í Parket.
  4. Avro fjallar meira um hringrásarþróun. Parket styður aðeins skemaviðbót á meðan Avro styður fjölþætta þróun, það er að bæta við eða breyta dálkum.
  5. Parket er tilvalið til að spyrjast fyrir um undirmengi dálka í fjöldálkatöflu. Avro hentar fyrir ETL-aðgerðir þar sem við leitum í alla dálka.

ORC vs Parket

  1. Parket geymir hreiður gögn betur.
  2. ORC hentar betur til að fordæma pushdown.
  3. ORC styður ACID eiginleika.
  4. ORC þjappar gögnum betur saman.

Hvað annað að lesa um efnið:

  1. Stór gagnagreining í skýinu: hvernig fyrirtæki getur orðið gagnamiðað.
  2. Auðmjúk leiðarvísir um gagnagrunnskerfi.
  3. Telegram rás okkar um stafræna umbreytingu.

Heimild: www.habr.com

Bæta við athugasemd