Mga format sa file sa dagkong datos: usa ka mubo nga programa sa edukasyon

Mga format sa file sa dagkong datos: usa ka mubo nga programa sa edukasyon
Weather Deity ni Remarin

team Mail.ru Cloud Solutions nagtanyag paghubad sa artikulo inhenyero nga si Rahul Bhatia gikan sa Clairvoyant bahin sa kung unsang mga format sa file ang naa sa dagkong datos, unsa ang labing kasagaran nga mga bahin sa mga format sa Hadoop ug kung unsang format ang mas maayo nga gamiton.

Nganong gikinahanglan ang lain-laing mga format sa file?

Usa ka mayor nga performance bottleneck alang sa HDFS-enabled nga mga aplikasyon sama sa MapReduce ug Spark mao ang panahon nga gikinahanglan sa pagpangita, pagbasa, ug pagsulat sa datos. Kini nga mga problema gidugangan sa kalisud sa pagdumala sa dagkong mga set sa datos kung kita adunay usa ka nag-uswag nga schema imbes nga usa ka piho, o kung adunay pipila ka mga pagpugong sa pagtipig.

Ang pagproseso sa dagkong datos nagdugang sa load sa storage subsystem - Ang Hadoop nagtipig sa datos nga sobra aron makab-ot ang pagtugot sa sayup. Dugang sa mga disk, ang processor, network, input/output system, ug uban pa gikarga. Samtang ang gidaghanon sa datos motubo, mao usab ang gasto sa pagproseso ug pagtipig niini.

Nagkalainlain nga mga format sa file sa Hadoop giimbento aron masulbad sa tukma kini nga mga problema. Ang pagpili sa angay nga format sa file makahatag pipila ka hinungdanon nga mga benepisyo:

  1. Mas paspas nga oras sa pagbasa.
  2. Mas paspas nga oras sa pagrekord.
  3. Gipaambit nga mga file.
  4. Suporta alang sa ebolusyon sa schema.
  5. Gipadako nga suporta sa compression.

Ang ubang mga format sa file gituyo alang sa kinatibuk-ang paggamit, ang uban alang sa mas espesipikong mga gamit, ug ang uban gidisenyo aron makab-ot ang piho nga mga kinaiya sa datos. Busa ang pagpili dako kaayo.

Avro file format

Sa data serialization Ang Avro kaylap nga gigamit - kini gibase sa string, nga mao, usa ka string data storage format sa Hadoop. Gitipigan niini ang schema sa format nga JSON, nga nagpasayon ​​sa pagbasa ug paghubad sa bisan unsang programa. Ang datos mismo anaa sa binary format, compact ug episyente.

Ang sistema sa serialization ni Avro kay neyutral sa pinulongan. Ang mga file mahimong maproseso sa lain-laing mga pinulongan, karon C, C++, C#, Java, Python ug Ruby.

Usa ka hinungdanon nga bahin sa Avro mao ang lig-on nga suporta alang sa mga schema sa datos nga nagbag-o sa paglabay sa panahon, nga mao, nag-uswag. Nakasabot si Avro sa mga kausaban sa schemaβ€”pagtangtang, pagdugang, o pag-ilis sa mga field.

Gisuportahan sa Avro ang lainlaing mga istruktura sa datos. Pananglitan, makahimo ka og usa ka rekord nga adunay usa ka array, usa ka enumerated type, ug usa ka subrecord.

Mga format sa file sa dagkong datos: usa ka mubo nga programa sa edukasyon
Kini nga format maayo alang sa pagsulat sa landing (transition) zone sa usa ka data lake (lanaw sa datos, o data lake - usa ka koleksyon sa mga higayon alang sa pagtipig sa nagkalain-laing matang sa datos dugang sa mga tinubdan sa datos direkta).

Mao nga, kini nga format labing angay alang sa pagsulat sa landing zone sa usa ka data lake tungod sa mga musunud nga hinungdan:

  1. Ang mga datos gikan niini nga sona kasagarang basahon sa kinatibuk-an niini alang sa dugang nga pagproseso sa mga downstream system - ug ang usa ka row-based nga format mas episyente niini nga kaso.
  2. Ang mga sistema sa downstream dali nga makuha ang mga lamesa sa schema gikan sa mga file-dili kinahanglan nga tipigan ang mga schema nga gilain sa gawas nga pagtipig sa meta.
  3. Ang bisan unsang pagbag-o sa orihinal nga schema dali nga maproseso (schema evolution).

Parquet File Format

Ang parquet usa ka open source file format alang sa Hadoop nga gitipigan nested data structures sa flat columnar format.

Kung itandi sa tradisyonal nga pamaagi sa laray, ang Parquet mas episyente sa mga termino sa pagtipig ug pasundayag.

Kini labi ka mapuslanon alang sa mga pangutana nga nagbasa sa piho nga mga kolum gikan sa usa ka lapad (daghang mga kolum) nga lamesa. Salamat sa format sa file, ang gikinahanglan nga mga kolum lamang ang gibasa, mao nga ang I/O gipabilin sa minimum.

Usa ka gamay nga digression ug katin-awan: Para mas masabtan ang Parquet file format sa Hadoop, tan-awon nato kung unsa ang column-based - i.e. columnar - format. Kini nga format nagtipig parehas nga mga kantidad alang sa matag kolum nga magkauban.

Pananglitan, ang rekord naglakip sa ID, Ngalan, ug mga field sa Departamento. Sa kini nga kaso, ang tanan nga mga kantidad sa kolum sa ID itago, ingon usab ang mga kantidad sa kolum sa Ngalan, ug uban pa. Ang lamesa mahimong tan-awon sama niini:

ID
ngalan
Department

1
emp1
d1

2
emp2
d2

3
emp3
d3

Sa string format, ang data maluwas sama sa mosunod:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Sa usa ka kolumnar nga format sa file, ang parehas nga datos ma-save sama niini:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Ang kolumnar nga pormat mas episyente kung kinahanglan nimo pangutan-on ang daghang mga kolum gikan sa usa ka lamesa. Magbasa ra kini sa gikinahanglan nga mga kolum tungod kay sila kasikbit. Niining paagiha, ang mga operasyon sa I/O gipabilin sa minimum.

Pananglitan, kinahanglan lang nimo ang NAME column. SA pormat sa hilo Ang matag rekord sa dataset kinahanglang i-load, i-parse sa field, ug dayon kuhaon ang NAME data. Gitugotan ka sa format sa kolum nga mag-drill down direkta sa kolum sa Ngalan tungod kay ang tanan nga mga kantidad alang sa kana nga kolum gitipigan nga managsama. Dili nimo kinahanglan nga i-scan ang tibuuk nga pagrekord.

Sa ingon, ang pormat sa kolumnar nagpauswag sa pasundayag sa pangutana tungod kay kini nanginahanglan gamay nga oras sa pagpangita aron makaabut sa gikinahanglan nga mga kolum ug makunhuran ang gidaghanon sa mga operasyon sa I/O tungod kay ang gitinguha nga mga kolum lamang ang gibasa.

Usa sa talagsaon nga mga bahin Parket mao nga sa niini nga format kini mahimo pagtipig sa datos nga adunay mga nested nga istruktura. Kini nagpasabot nga sa usa ka Parquet file, bisan ang nested field mahimong basahon nga tagsa-tagsa nga dili kinahanglan nga basahon ang tanang field sa nested structure. Ang parquet naggamit ug shredding ug assembly algorithm aron tipigan ang mga nested structure.

Mga format sa file sa dagkong datos: usa ka mubo nga programa sa edukasyon
Aron masabtan ang Parquet file format sa Hadoop, kinahanglan nimong masayran ang mosunod nga mga termino:

  1. Grupo sa mga kuwerdas (grupo sa linya): lohikal nga pinahigda nga pagbahin sa datos sa mga linya. Ang usa ka row nga grupo naglangkob sa usa ka tipik sa matag column sa data set.
  2. Tipik sa kolum (column chunk): Usa ka tipik sa usa ka piho nga kolum. Kini nga mga tipik sa kolum nagpuyo sa usa ka piho nga grupo sa mga laray ug gigarantiyahan nga magkadugtong sa file.
  3. Panid (panid): Ang mga tipik sa kolum gibahin ngadto sa mga panid nga gisulat sunodsunod. Ang mga panid adunay usa ka komon nga titulo, aron imong malaktawan ang wala kinahanglana kung magbasa.

Mga format sa file sa dagkong datos: usa ka mubo nga programa sa edukasyon
Dinhi ang titulo naglangkob lang sa magic nga numero PAR1 (4 bytes) nga nagpaila sa file isip Parquet file.

Ang footer nag-ingon sa mosunod:

  1. Ang metadata sa file nga adunay sulud sa pagsugod nga mga coordinate sa matag metadata sa kolum. Kung nagbasa, kinahanglan nimo nga basahon una ang metadata sa file aron makit-an ang tanan nga mga tipik sa kolum nga interesado. Ang mga bahin sa kolum kinahanglan nga basahon nga sunud-sunod. Ang ubang metadata naglakip sa format nga bersyon, schema, ug bisan unsang dugang nga key-value pairs.
  2. Metadata gitas-on (4 bytes).
  3. magic nga numero PAR1 (4 ka byte).

Format sa ORC File

Na-optimize nga row-column file format (Gi-optimize nga Kolum sa Row, CRO) nagtanyag ug episyente kaayo nga paagi sa pagtipig sa datos ug gidesinyo aron mabuntog ang mga limitasyon sa ubang mga format. Gitipigan ang datos sa usa ka hingpit nga compact nga porma, nga nagtugot kanimo sa paglaktaw sa wala kinahanglana nga mga detalye - nga wala kinahanglana ang pagtukod sa dako, komplikado o mano-mano nga pagmentinar nga mga indeks.

Mga bentaha sa ORC format:

  1. Ang usa ka file mao ang output sa matag buluhaton, nga makapamenos sa load sa NameNode (name node).
  2. Suporta alang sa mga tipo sa datos sa Hive, lakip ang DateTime, decimal ug komplikado nga mga tipo sa datos (struct, lista, mapa ug unyon).
  3. Dungan nga pagbasa sa parehas nga file sa lainlaing mga proseso sa RecordReader.
  4. Abilidad sa pagbahin sa mga file nga walay pag-scan alang sa mga marker.
  5. Pagbanabana sa pinakataas nga posible nga pundok sa memorya nga alokasyon alang sa pagbasa/pagsulat nga mga proseso base sa impormasyon sa file footer.
  6. Ang metadata gitipigan sa Protocol Buffers binary serialization format, nga nagtugot sa mga field nga idugang ug tangtangon.

Mga format sa file sa dagkong datos: usa ka mubo nga programa sa edukasyon
Ang ORC nagtipig sa mga koleksyon sa mga string sa usa ka file, ug sulod sa koleksyon, ang string data gitipigan sa usa ka columnar format.

Ang ORC file nagtipig sa mga grupo sa mga linya nga gitawag og mga stripes ug nagsuporta nga impormasyon sa footer sa file. Ang Postscript sa katapusan sa file naglangkob sa compression parameters ug ang gidak-on sa compressed footer.

Ang default nga gidak-on sa stripe mao ang 250 MB. Tungod sa ingon ka dako nga mga labud, ang pagbasa gikan sa HDFS gihimo nga labi ka episyente: sa dagkong magkadugtong nga mga bloke.

Ang file footer nagrekord sa listahan sa mga lane sa file, ang gidaghanon sa mga row kada lane, ug ang data type sa matag column. Ang resulta nga bili sa ihap, min, max ug sum alang sa matag kolum gisulat usab didto.

Ang footer sa strip adunay usa ka direktoryo sa mga lokasyon sa sapa.

Ang row data gigamit sa pag-scan sa mga lamesa.

Ang datos sa indeks naglakip sa minimum ug maximum nga mga bili alang sa matag kolum ug ang posisyon sa mga laray sa matag kolum. Ang mga indeks sa ORC gigamit lamang sa pagpili sa mga stripes ug row nga mga grupo, dili sa pagtubag sa mga pangutana.

Pagtandi sa lainlaing mga format sa file

Avro itandi sa Parquet

  1. Ang Avro usa ka format sa pagtipig sa laray, samtang ang Parquet nagtipig sa datos sa mga kolum.
  2. Ang parquet mas haum alang sa analytical nga mga pangutana, nagpasabut nga ang mga operasyon sa pagbasa ug ang mga datos sa pagpangutana mas episyente kaysa pagsulat.
  3. Ang mga operasyon sa pagsulat sa Avro gihimo nga mas episyente kaysa sa Parquet.
  4. Ang Avro naghisgot sa ebolusyon sa sirkito nga mas hamtong. Ang parquet nagsuporta lamang sa pagdugang sa schema, samtang ang Avro nagsuporta sa multifunctional evolution, nga mao, pagdugang o pag-usab sa mga kolum.
  5. Ang parquet maayo alang sa pagpangutana sa usa ka subset sa mga column sa usa ka multi-column table. Ang Avro angay alang sa mga operasyon sa ETL diin among gipangutana ang tanan nga mga kolum.

ORC batok Parquet

  1. Ang parquet nagtipig sa datos nga mas maayo.
  2. Ang ORC mas haum sa predicate pushdown.
  3. Gisuportahan sa ORC ang mga kabtangan sa ACID.
  4. Ang ORC nag-compress sa datos nga mas maayo.

Unsa pa ang basahon sa hilisgutan:

  1. Daghang pag-analisa sa datos sa panganod: kung giunsa ang usa ka kompanya mahimong oriented sa datos.
  2. Usa ka Mapainubsanon nga Giya sa Mga Schema sa Database.
  3. Ang among telegrama nga channel bahin sa digital nga pagbag-o.

Source: www.habr.com

Idugang sa usa ka comment