Formên pelan di daneyên mezin de: bernameyek perwerdehiya kurt

Formên pelan di daneyên mezin de: bernameyek perwerdehiya kurt
Weather Deity by Remarin

tîma Mail.ru Cloud Solutions pêşkêş dike wergera gotarê endezyar Rahul Bhatia ji Clairvoyant di derbarê ka kîjan formatên pelan de di daneyên mezin de hene, taybetmendiyên herî gelemperî yên formatên Hadoop çi ne û kîjan format çêtir e ku meriv bikar bîne.

Çima formatên pelan ên cûda hewce ne?

Ji bo serîlêdanên bi HDFS-çalakkirî yên wekî MapReduce û Spark tengahiyek performansê ya sereke dema lêgerîn, xwendin û nivîsandina daneyan e. Van pirsgirêkan ji hêla dijwariya birêvebirina berhevokên daneya mezin ve têne tevlihev kirin ger ku me nexşeyek pêşkeftî hebe ne ya sabît, an heke hin astengên hilanînê hebin.

Pêvajoya daneya mezin barkirina li ser binepergala hilanînê zêde dike - Hadoop daneyan bi zêdeyî hilîne da ku tolerasyona xeletiyê bi dest bixe. Ji bilî dîskan, pêvajoyek, torê, pergala ketin/derketin û hwd têne barkirin. Her ku qebareya daneyan mezin dibe, lêçûna hilanîn û hilanîna wê jî zêde dibe.

Formên pelan ên cihêreng tê de Hadoop ji bo çareserkirina van pirsgirêkan tam îcad kirine. Hilbijartina forma pelê ya guncan dikare hin feydeyên girîng peyda bike:

  1. Dema xwendina zûtir.
  2. Dema tomarkirinê zûtir.
  3. Pelên hevpar.
  4. Piştgiriya ji bo pêşveçûna schema.
  5. Piştgiriya compression berfireh.

Hin formatên pelan ji bo karanîna gelemperî têne armanc kirin, yên din ji bo karanîna bêtir taybetî, û hin jî ji bo pêkanîna taybetmendiyên daneya taybetî têne çêkirin. Ji ber vê yekê hilbijartin bi rastî pir mezin e.

Forma pelê Avro

bo serialization daneyan Avro bi berfirehî tê bikar anîn - ew string bingeha, ango, formatek hilanîna daneya rêzê ya di Hadoop de. Ew şema di formata JSON de hilîne, xwendin û şîrovekirina wê ji hêla her bernameyê ve hêsan dike. Daneyên bixwe di forma binary de, tevlihev û bikêrhatî ne.

Sîstema rêzenivîsandina Avro ziman bêalî ye. Pelan dikarin bi cûrbecûr zimanan bêne pêvajo kirin, niha C, C++, C#, Java, Python û Ruby.

Taybetmendiyek sereke ya Avro piştgirîya wê ya zexm e ji bo şemayên daneyê yên ku bi demê re diguhezin, ango pêşve diçin. Avro ji guhertinên şemayê fam dike - jêbirin, zêdekirin, an guhertina qadan.

Avro cûrbecûr strukturên daneyê piştgirî dike. Mînakî, hûn dikarin tomarek biafirînin ku tê de rêzek, celebek jimartî, û tomarek jêrîn heye.

Formên pelan di daneyên mezin de: bernameyek perwerdehiya kurt
Ev format ji bo nivîsandina li qada daketinê (veguhêz) gola daneyê îdeal e (gola daneyê, an gola daneyê - berhevokek mînakan ji bo hilanîna cûrbecûr daneyan ji bilî çavkaniyên daneyê rasterast).

Ji ber vê yekê, ev format ji ber sedemên jêrîn ji bo nivîsandina qada dakêşana golê daneyê çêtirîn e:

  1. Daneyên ji vê deverê bi gelemperî ji bo pêvajoyek bêtir ji hêla pergalên jêrîn ve bi tevahî têne xwendin - û di vê rewşê de formek rêzek bikêrtir e.
  2. Pergalên jêrîn dikarin bi hêsanî tabloyên şemayê ji pelan bistînin - ne hewce ye ku nexşan ji hev cuda di hilanîna meta ya derveyî de hilînin.
  3. Her guhertinek li ser şema orjînal bi hêsanî tête pêvajo kirin (pêşveçûna schema).

Forma Pelê Parquet

Parquet ji bo Hadoop formatek pelê çavkaniyek vekirî ye ku diparêze strukturên daneyê yên hêlînkirî di forma stûnek daîre de.

Li gorî nêzîkatiya rêza kevneşopî, Parquet di warê hilanîn û performansê de bikêrtir e.

Ev bi taybetî ji bo pirsên ku stûnên taybetî ji tabloyek fireh (gelek stûn) dixwînin bikêr e. Bi saya formata pelê, tenê stûnên pêwîst têne xwendin, ji ber vê yekê I/O herî kêm tê girtin.

Danûstandin û vegotinek piçûk: Ji bo ku forma pelê Parquet di Hadoop de çêtir fam bikin, em bibînin ka forma stûn-based - ango stûnek - çi ye. Ev format ji bo her stûnê bi hev re nirxên wekhev hilîne.

Bo nimûne, di qeydê de qadên nasname, nav û dezgehê hene. Di vê rewşê de, hemî nirxên stûna ID-ê dê bi hev re werin hilanîn, wekî nirxên stûna Name, û hwd. Tablo dê tiştek bi vî rengî xuya bike:

ID
Nav
Liq

1
emp1
d1

2
emp2
d2

3
emp3
d3

Di formata string de, dane dê bi vî rengî bêne tomar kirin:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Di forma pelê stûnek de, heman dane dê bi vî rengî werin tomar kirin:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Dema ku hûn hewce ne ku ji tabloyek pir stûnan bipirsin, forma stûnek bikêrtir e. Ew ê tenê stûnên pêwîst bixwîne ji ber ku ew cîran in. Bi vî awayî, operasyonên I/O herî kêm têne girtin.

Mînakî, hûn tenê stûna NAME hewce ne. LI formata string Pêdivî ye ku her tomarek di databasê de were barkirin, li gorî zeviyê were pars kirin, û dûv re daneyên NAME were derxistin. Forma stûnê dihêle hûn rasterast li stûna Navê bişopînin ji ber ku hemî nirxên wê stûnê bi hev re têne hilanîn. Hûn ne hewce ne ku tevahiya tomarê bişopînin.

Bi vî rengî, forma stûnê performansa pirsê baştir dike ji ber ku ew kêmtir wextê lêgerînê hewce dike ku bigihîje stûnên pêwîst û hejmara operasyonên I/O kêm dike ji ber ku tenê stûnên xwestin têne xwendin.

Yek ji taybetmendiyên bêhempa ye Parket e ku di vê formatê de ew dikare daneyan bi strukturên hêlînkirî hilînin. Ev tê vê wateyê ku di pelek Parquet de, tewra zeviyên hêlînkirî jî dikarin bi rengek ferdî werin xwendin bêyî ku hewce bike ku hemî zeviyên di avahiya hêlînê de werin xwendin. Parquet algorîtmayek perçekirin û komkirinê bikar tîne da ku strukturên hêlîn hilîne.

Formên pelan di daneyên mezin de: bernameyek perwerdehiya kurt
Ji bo têgihîştina pelê Parquet di Hadoop de, hûn hewce ne ku şertên jêrîn bizanibin:

  1. Koma rêz (koma rêz): Dabeşkirina horizontî ya mentiqî ya daneyan di rêzan de. Komek rêzek ji perçeyek her stûnek di berhevoka daneyê de pêk tê.
  2. Parçeya stûnê (qûna stûn): Parçeyek stûnek taybetî. Van perçeyên stûnê di komek rêzikan de dijîn û garantî kirin ku di pelê de hevgirtî bin.
  3. Rûpel (rûpel): Parçeyên stûnan li pey hev li ser rûpelan têne dabeşkirin. Rûpel xwedan sernavek hevpar in, ji ber vê yekê hûn dikarin dema xwendinê ji yên nehewce derbikevin.

Formên pelan di daneyên mezin de: bernameyek perwerdehiya kurt
Li vir sernav tenê hejmara sêrbaz dihewîne PAR1 (4 bytes) ku pelê wekî pelek Parquet nas dike.

Di jêrzemînê de wiha tê gotin:

  1. Metadata pelê ku hevrêzên destpêkê yên metadata her stûnê dihewîne. Dema xwendinê, divê hûn pêşî metadata pelê bixwînin da ku hemî perçeyên stûnên balkêş bibînin. Dûv re pêdivî ye ku beşên stûn bi rêz bêne xwendin. Metadatayên din guhertoya formatê, şema, û her cotên kilît-nirxê yên din vedihewîne.
  2. Dirêjahiya metadata (4 bytes).
  3. Hejmara Magic PAR1 (4 bytes).

Forma Pelê ORC

Forma pelê rêz-stûna xweşbînkirî (Stûna Rêza Optimîzekirî, CRO) ji bo hilanîna daneyan rêyek pir bikêrhatî pêşkêşî dike û ji bo derbaskirina tixûbên formên din hate sêwirandin. Daneyên bi rengek bêkêmasî lihevhatî hilîne, ku dihêle hûn hûrguliyên nehewce derbaz bikin - bêyî ku hewcedariya avakirina îndeksên mezin, tevlihev an bi destan were domandin.

Avantajên forma ORC:

  1. Yek pel derana her peywirê ye, ku barê NameNode (navê girêk) kêm dike.
  2. Piştgiriya ji bo celebên daneyên Hive, di nav de DateTime, celebên daneya dehan û tevlihev (sazkirin, navnîş, nexşe û yekîtî).
  3. Xwendina hevdemî ya heman pelê ji hêla pêvajoyên cûda yên RecordReader ve.
  4. Kapasîteya dabeşkirina pelan bêyî şopandina nîşankeran.
  5. Ji bo pêvajoyên xwendin/nivîsandinê yên li ser bingeha agahdariya di binpelê pelê de veqetandina herî zêde ya mimkun a veqetandina bîranîna pelê.
  6. Metadata di forma serialîzasyona binaryê ya Protocol Buffers de tê hilanîn, ku dihêle ku zevî werin zêdekirin û rakirin.

Formên pelan di daneyên mezin de: bernameyek perwerdehiya kurt
ORC berhevokên rêzikan di pelek yekane de hilîne, û di nav berhevokê de, daneyên stûnê bi rengek stûnek têne hilanîn.

Pelek ORC komên rêzan ên ku jê re xêz têne gotin û agahdariya piştgirî di binê pelê de hilîne. Postscript di dawiya pelê de pîvanên berhevkirinê û mezinahiya pêlava pêçandî dihewîne.

Mezinahiya rêzika xwerû 250 MB e. Ji ber xetên wusa mezin, xwendina ji HDFS bi bandortir tête kirin: di blokên mezin ên hevgirtî de.

Pûçika pelê navnîşa rêçikên pelê, hejmara rêzan li ser her rêkê, û celebê daneya her stûnê tomar dike. Nirxa encam a hejmartin, min, max û berhevoka her stûnê jî li wir tê nivîsandin.

Di binpelê şirîtê de pelrêçek cîhên herikandinê dihewîne.

Daneyên rêzê dema ku tabloyan dikolin tê bikar anîn.

Daneyên îndeksê ji bo her stûnê nirxên herî kêm û herî zêde û pozîsyona rêzan di her stûnê de vedihewîne. Indeksên ORC tenê ji bo hilbijartina rêzik û komên rêzan têne bikar anîn, ne ji bo bersivdana pirsan.

Berawirdkirina formatên pelan ên cihêreng

Avro li gorî Parketê

  1. Avro formatek hilanîna rêzê ye, dema ku Parquet daneyan di stûnan de hilîne.
  2. Parket ji bo pirsên analîtîk çêtir e, tê vê wateyê ku operasyonên xwendinê û daneyên lêpirsînê ji nivîsandinê pir bikêrtir in.
  3. Operasyonên nivîsandinê yên li Avro ji Parquet bi bandortir têne kirin.
  4. Avro bi pêşkeftina çerxerêyê re mazintir mijûl dibe. Parquet tenê zêdekirina şema piştgirî dike, dema ku Avro pêşveçûna pirfunctional piştgirî dike, ango, lê zêdekirin an guheztina stûnan.
  5. Parket ji bo pirsîna binkeyek stûnên di tabloyek pir-stûnî de îdeal e. Avro ji bo operasyonên ETL-ê ku em li hemî stûnan dipirsin maqûl e.

ORC vs Parquet

  1. Parketên parket daneyên hêlîn çêtir e.
  2. ORC çêtir e ku ji bo pêşîlêgirtina pêşdebirinê.
  3. ORC taybetmendiyên ACID piştgirî dike.
  4. ORC daneyan çêtir berhev dike.

Çi din li ser mijarê bixwînin:

  1. Analîzkirina daneyên mezin di ewr de: Pargîdanek çawa dikare data-oriented bibe.
  2. Rêbernameyek Nefsbiçûk ji bo Schemas Database.
  3. Kanala me ya telegramê di derbarê veguherîna dîjîtal de.

Source: www.habr.com

Add a comment