Mafayilo mu data yayikulu: pulogalamu yachidule yophunzitsa

Mafayilo mu data yayikulu: pulogalamu yachidule yophunzitsa
Weather Umulungu wolemba Remarin

timu Mail.ru Cloud Solutions umafuna kumasulira nkhani injiniya Rahul Bhatia wochokera ku Clairvoyant za mafayilo omwe ali mu data yayikulu, ndi zinthu ziti zomwe zimakonda kwambiri mawonekedwe a Hadoop ndi mtundu wanji womwe ndi wabwino kugwiritsa ntchito.

Chifukwa chiyani mafayilo osiyanasiyana amafunikira?

Cholepheretsa chachikulu pamapulogalamu omwe ali ndi HDFS monga MapReduce ndi Spark ndi nthawi yomwe zimatengera kufufuza, kuwerenga, ndi kulemba deta. Mavutowa amakulitsidwa ndi zovuta pakuwongolera ma seti akulu akulu ngati tili ndi schema yosintha m'malo mokhazikika, kapena ngati pali zopinga zina zosungira.

Kukonza deta yayikulu kumawonjezera katundu pazigawo zosungirako - Hadoop amasunga zambiri kuti akwaniritse zolakwa. Kuphatikiza pa ma disks, purosesa, network, input/output system, ndi zina zotero zimanyamulidwa. Pamene kuchuluka kwa deta kumakula, momwemonso mtengo wa kukonza ndi kusunga.

Mitundu yosiyanasiyana ya mafayilo mu Hadoop anapangidwa kuti athetse mavutowa ndendende. Kusankha mtundu woyenera wa fayilo kungapereke phindu lalikulu:

  1. Nthawi yowerenga mwachangu.
  2. Nthawi yojambulira mwachangu.
  3. Mafayilo ogawana.
  4. Thandizo pakusintha kwa schema.
  5. Thandizo lowonjezera la compression.

Mafayilo ena amapangidwa kuti azigwiritsidwa ntchito wamba, ena kuti agwiritsidwe ntchito mwapadera, ndipo ena amapangidwa kuti akwaniritse mawonekedwe amtundu wa data. Kotero kusankha ndi kwakukulu ndithu.

Mtundu wa fayilo ya Avro

chifukwa kusanja deta Avro amagwiritsidwa ntchito kwambiri - izo chingwe zochokera, ndiko kuti, mtundu wosungiramo zingwe mu Hadoop. Imasunga schema mumtundu wa JSON, kupangitsa kuti ikhale yosavuta kuwerenga ndikutanthauzira ndi pulogalamu iliyonse. Deta yokhayo ili mu mawonekedwe a binary, ophatikizana komanso ogwira mtima.

Dongosolo la serialization la Avro sililowerera pachilankhulo. Mafayilo amatha kusinthidwa m'zilankhulo zosiyanasiyana, pano C, C++, C#, Java, Python ndi Ruby.

Chofunikira kwambiri cha Avro ndikuthandizira kwake kolimba kwa ma data omwe amasintha pakapita nthawi, ndiko kuti, kusinthika. Avro amamvetsetsa kusintha kwa schema-kufufuta, kuwonjezera, kapena kusintha magawo.

Avro imathandizira mitundu yosiyanasiyana ya data. Mwachitsanzo, mutha kupanga zolemba zomwe zili ndi gulu, mtundu wowerengeka, ndi kalembedwe kakang'ono.

Mafayilo mu data yayikulu: pulogalamu yachidule yophunzitsa
Fomu iyi ndiyabwino polembera ku malo otsetsereka (kusintha) kwa nyanja ya data (data lake, kapena data lake - mndandanda wa zochitika zosungira mitundu yosiyanasiyana ya deta kuwonjezera pa magwero a deta mwachindunji).

Chifukwa chake, mawonekedwe awa ndiwabwino kwambiri polembera malo otsetsereka a nyanja ya data pazifukwa izi:

  1. Deta yochokera kuderali nthawi zambiri imawerengedwa yonse kuti ikonzedwenso ndi machitidwe akumunsi - ndipo mawonekedwe ozikidwa pamzere amakhala opambana pankhaniyi.
  2. Machitidwe otsika amatha kupeza mosavuta matebulo a schema m'mafayilo-palibe chifukwa chosungira schemas padera posungira kunja kwa meta.
  3. Kusintha kulikonse ku schema yoyambirira kumakonzedwa mosavuta (kusintha kwa schema).

Fayilo ya Parquet

Parquet ndi fayilo yotseguka ya Hadoop yomwe imasunga adayika ma data mumtundu wathyathyathya wa columnar.

Poyerekeza ndi njira yachikhalidwe ya mzere, Parquet ndiyothandiza kwambiri posungirako komanso magwiridwe antchito.

Izi ndizothandiza makamaka pamafunso omwe amawerenga mizati yeniyeni kuchokera patebulo lalikulu (zambiri). Chifukwa cha mawonekedwe a fayilo, mizati yofunikira yokha ndiyomwe imawerengedwa, kotero I / O imakhala yochepa.

Kutuluka pang'ono ndi kufotokozera: Kuti mumvetse bwino mawonekedwe a fayilo ya Parquet mu Hadoop, tiyeni tiwone momwe mzere wokhazikika - mwachitsanzo, columnar - format. Mtunduwu umasunga zikhalidwe zofanana pagawo lililonse palimodzi.

Mwachitsanzo, mbiriyo ili ndi ID, Dzina, ndi magawo a Dipatimenti. Pachifukwa ichi, ziwerengero zonse za ID zidzasungidwa palimodzi, monga momwe zidzakhalire dzina la dzina, ndi zina zotero. Tebulo liziwoneka motere:

ID
dzina
Dipatimenti

1
Emp1
d1

2
Emp2
d2

3
Emp3
d3

Mumtundu wa chingwe, deta idzasungidwa motere:

1
Emp1
d1
2
Emp2
d2
3
Emp3
d3

Mu fayilo ya columnar, deta yomweyi idzasungidwa motere:

1
2
3
Emp1
Emp2
Emp3
d1
d2
d3

Mawonekedwe a columnar ndiabwino kwambiri mukafuna kufunsa mazaza angapo patebulo. Ingowerenga mizati yofunikira chifukwa ili moyandikana. Mwanjira iyi, ntchito za I/O zimachepetsedwa.

Mwachitsanzo, mumangofunika ndime ya NAME. MU mtundu wa chingwe Zolemba zilizonse zomwe zili mu dataset zimayenera kukwezedwa, kutsatiridwa ndi gawo, kenako ndikuchotsa data ya NAME. Mawonekedwe amzanja amakulolani kuti mutsike molunjika ku gawo la Dzina chifukwa zikhalidwe zonse za gawolo zimasungidwa palimodzi. Simuyenera kuyang'ana zojambula zonse.

Chifukwa chake, mawonekedwe a columnar amawongolera magwiridwe antchito amafunso chifukwa amafunikira nthawi yochepa yoyang'ana kuti afike pamizere yofunikira ndikuchepetsa kuchuluka kwa ntchito za I / O chifukwa ndime zomwe mukufuna zimawerengedwa.

Chimodzi mwazinthu zapadera parquet ndi kuti mu mawonekedwe awa akhoza sungani zidziwitso zokhala ndi zomangira zisa. Izi zikutanthauza kuti mu fayilo ya Parquet, ngakhale minda yokhalamo imatha kuwerengedwa payekhapayekha popanda kuwerenga minda yonse yomwe ili m'chisa. Parquet amagwiritsa ntchito shredding ndi algorithm yophatikizira kusungirako zisa.

Mafayilo mu data yayikulu: pulogalamu yachidule yophunzitsa
Kuti mumvetse mtundu wa fayilo ya Parquet ku Hadoop, muyenera kudziwa mawu awa:

  1. Gulu la mizere (gulu la mizere): kugawikana kopingasa koyenera kwa data m'mizere. Gulu la mizere lili ndi chidutswa cha gawo lililonse mu seti ya data.
  2. Chidutswa cha mzati (chidutswa chandalama): Chidutswa chandalama inayake. Zidutswa zazanjazi zimakhala m'gulu linalake la mizere ndipo zimatsimikiziridwa kukhala zolumikizana mufayilo.
  3. Tsamba (tsamba): Zidutswa za m’zazagawidwa m’masamba olembedwa chimodzi pambuyo pa chimzake. Masamba ali ndi mutu wamba, kotero mutha kudumpha osafunikira powerenga.

Mafayilo mu data yayikulu: pulogalamu yachidule yophunzitsa
Apa mutuwo uli ndi nambala yamatsenga PAR1 (4 bytes) yomwe imazindikiritsa fayilo ngati fayilo ya Parquet.

Pansi pake akuti:

  1. Fayilo ya metadata yomwe ili ndi zoyambira za metadata ya gawo lililonse. Powerenga, muyenera kuwerenga kaye metadata ya fayilo kuti mupeze zidutswa zonse zomwe zimakonda. Zigawo zazanjazi ziyenera kuwerengedwa motsatizana. Metadata ina imaphatikizapo mtundu wa mtundu, schema, ndi zina zowonjezera zamtengo wapatali.
  2. Kutalika kwa metadata (4 mabayiti).
  3. nambala yamatsenga PAR1 (4 mabayiti).

Fomu ya Fayilo ya ORC

Fayilo yokongoletsedwa ndi mizere-mizere (Mzere Wokhathamiritsa, ORC) imapereka njira yabwino kwambiri yosungira deta ndipo idapangidwa kuti igonjetse malire amitundu ina. Imasunga zidziwitso m'njira yophatikizika bwino, kukulolani kuti mudumphe zambiri zosafunikira - osafunikira kupanga ma index akulu, ovuta kapena osamalidwa pamanja.

Ubwino wa mtundu wa ORC:

  1. Fayilo imodzi ndiyotulutsa ntchito iliyonse, yomwe imachepetsa katundu pa NameNode (node).
  2. Kuthandizira mitundu ya data ya Hive, kuphatikiza DateTime, decimal ndi mitundu yovuta ya data (mapangidwe, mndandanda, mapu ndi mgwirizano).
  3. Kuwerenga munthawi yomweyo fayilo yomweyo ndi njira zosiyanasiyana za RecordReader.
  4. Kutha kugawa mafayilo popanda kusanthula zolembera.
  5. Chiyerekezo cha kuchuluka komwe kungathe kugawidwa kukumbukira mulu wowerengera/kulemba potengera zomwe zili patsamba lapansi la fayilo.
  6. Metadata imasungidwa mu mtundu wa Protocol Buffers binary serialization, womwe umalola kuti magawo awonjezedwe ndikuchotsedwa.

Mafayilo mu data yayikulu: pulogalamu yachidule yophunzitsa
ORC imasunga zosonkhanitsira zingwe mufayilo imodzi, ndipo mkati mwazosonkhanitsa, zingwe zosungidwa zimasungidwa mumtundu wa columnar.

Fayilo ya ORC imasunga magulu a mizere yotchedwa milozo ndi chidziwitso chothandizira m'munsi mwa fayilo. The Postscript kumapeto kwa fayilo ili ndi magawo oponderezedwa ndi kukula kwa chopondapo choponderezedwa.

Kukula kwa mizere yokhazikika ndi 250 MB. Chifukwa cha mikwingwirima yayikulu chotere, kuwerenga kuchokera ku HDFS kumachitika bwino kwambiri: m'mabwalo akulu olumikizana.

Fayilo yapansi panthaka imalemba mndandanda wamizere mufayilo, kuchuluka kwa mizere pamzere uliwonse, ndi mtundu wa data pagawo lililonse. Zotsatira za chiwerengero, min, max ndi sum pagawo lililonse zimalembedwanso pamenepo.

Pansi pa mzerewu muli chikwatu cha malo omwe amatsikira.

Deta ya mizere imagwiritsidwa ntchito posanthula matebulo.

Deta ya index imaphatikizapo ziwerengero zochepa komanso zopambana pagawo lililonse komanso malo amizere pagawo lililonse. Ma index a ORC amagwiritsidwa ntchito posankha milozo ndi magulu amizere, osati poyankha mafunso.

Kufananiza kwamafayilo osiyanasiyana

Avro poyerekeza ndi Parquet

  1. Avro ndi mtundu wosungira mizere, pomwe Parquet imasunga deta m'mizere.
  2. Parquet ndiyoyeneranso kufunsa mafunso, kutanthauza kuti ntchito zowerengera komanso zofunsa mafunso ndizothandiza kwambiri kuposa kulemba.
  3. Kulemba ntchito ku Avro kumachitika bwino kwambiri kuposa ku Parquet.
  4. Avro amachita ndi kusintha kwa madera mokhwima kwambiri. Parquet imangothandizira kuwonjezera kwa schema, pomwe Avro imathandizira kusinthika kwazinthu zambiri, ndiko kuti, kuwonjezera kapena kusintha mizati.
  5. Parquet ndi yabwino kufunsira magawo ang'onoang'ono patebulo lamitundu yambiri. Avro ndiyoyenera kugwira ntchito za ETL komwe timafunsa mizati yonse.

ORC vs Parquet

  1. Parquet imasunga zosungidwa bwino.
  2. ORC ndiyoyenera kuneneratu kukankhira pansi.
  3. ORC imathandizira katundu wa ACID.
  4. ORC imapanikiza deta bwino.

Chinanso choti muwerenge pamutuwu:

  1. Kusanthula kwakukulu kwa data mumtambo: momwe kampani ingakhalire yokhazikika pa data.
  2. Upangiri Wodzichepetsa ku Ma Database Schemas.
  3. Njira yathu ya telegraph yokhudza kusintha kwa digito.

Source: www.habr.com

Kuwonjezera ndemanga