Miundo ya faili katika data kubwa: mpango mfupi wa elimu

Miundo ya faili katika data kubwa: mpango mfupi wa elimu
Uungu wa hali ya hewa na Remarin

Timu Mail.ru Cloud Solutions inatoa tafsiri ya makala mhandisi Rahul Bhatia kutoka Clairvoyant kuhusu fomati za faili zipi katika data kubwa, ni vipengele vipi vya kawaida vya umbizo la Hadoop na umbizo lipi ni bora kutumia.

Kwa nini muundo tofauti wa faili unahitajika?

Kikwazo kikubwa cha utendaji kwa programu zinazowezeshwa na HDFS kama vile MapReduce na Spark ni wakati unaochukua kutafuta, kusoma na kuandika data. Matatizo haya yanachangiwa na ugumu wa kudhibiti seti kubwa za data ikiwa tuna schema inayobadilika badala ya iliyorekebishwa, au ikiwa kuna vikwazo fulani vya uhifadhi.

Kuchakata data kubwa huongeza mzigo kwenye mfumo mdogo wa hifadhi - Hadoop huhifadhi data kwa wingi ili kufikia uvumilivu wa makosa. Mbali na disks, processor, mtandao, mfumo wa pembejeo / pato, na kadhalika hupakiwa. Kadiri idadi ya data inavyoongezeka, ndivyo gharama ya usindikaji na kuhifadhi inavyoongezeka.

Fomati anuwai za faili ndani Hadoop zuliwa kutatua matatizo haya kwa usahihi. Kuchagua umbizo la faili linalofaa kunaweza kutoa manufaa kadhaa:

  1. Wakati wa kusoma kwa kasi zaidi.
  2. Muda wa kurekodi kasi zaidi.
  3. Faili zilizoshirikiwa.
  4. Msaada kwa mageuzi ya schema.
  5. Usaidizi wa ukandamizaji uliopanuliwa.

Baadhi ya fomati za faili zimekusudiwa matumizi ya jumla, zingine kwa matumizi maalum zaidi, na zingine zimeundwa kukidhi sifa mahususi za data. Kwa hivyo chaguo ni kubwa sana.

Ugani wa faili Avro

Kwa utayarishaji wa data Avro hutumiwa sana - ni msingi wa kamba, yaani, muundo wa kuhifadhi data wa kamba katika Hadoop. Huhifadhi schema katika umbizo la JSON, na kuifanya iwe rahisi kusoma na kufasiri kwa mpango wowote. Data yenyewe iko katika umbizo la binary, fupi na bora.

Mfumo wa usanifu wa Avro hauegemei lugha. Faili zinaweza kuchakatwa katika lugha mbalimbali, kwa sasa C, C++, C#, Java, Python na Ruby.

Kipengele muhimu cha Avro ni usaidizi wake thabiti kwa miundo ya data inayobadilika kwa wakati, ambayo ni, kubadilika. Avro inaelewa mabadiliko ya taratibuβ€”kufuta, kuongeza au kubadilisha sehemu.

Avro inasaidia miundo mbalimbali ya data. Kwa mfano, unaweza kuunda rekodi iliyo na safu, aina iliyoorodheshwa, na rekodi ndogo.

Miundo ya faili katika data kubwa: mpango mfupi wa elimu
Umbizo hili ni bora kwa kuandika kwa eneo la kutua (mpito) la ziwa la data (ziwa data, au ziwa la data - mkusanyiko wa matukio ya kuhifadhi aina mbalimbali za data pamoja na vyanzo vya data moja kwa moja).

Kwa hivyo, umbizo hili linafaa zaidi kwa kuandikia eneo la kutua kwa ziwa la data kwa sababu zifuatazo:

  1. Data kutoka eneo hili kwa kawaida husomwa kwa ukamilifu kwa usindikaji zaidi na mifumo ya chini ya mkondo - na umbizo la msingi-mlalo ni bora zaidi katika kesi hii.
  2. Mifumo ya mtiririko wa chini inaweza kuepua kwa urahisi jedwali la schema kutoka kwa faili-hakuna haja ya kuhifadhi michoro kando katika hifadhi ya nje ya meta.
  3. Mabadiliko yoyote kwa schema asili huchakatwa kwa urahisi (mageuzi ya schema).

Muundo wa Faili ya Parquet

Parquet ni umbizo la faili la chanzo huria la Hadoop ambalo huhifadhi miundo ya data iliyoorodheshwa katika umbizo bapa la safuwima.

Ikilinganishwa na mbinu ya kawaida ya safu mlalo, Parquet ni bora zaidi katika suala la uhifadhi na utendakazi.

Hii ni muhimu sana kwa maswali ambayo yanasoma safu wima maalum kutoka kwa jedwali pana (safu nyingi). Shukrani kwa muundo wa faili, nguzo muhimu tu zinasomwa, kwa hivyo I/O huwekwa kwa kiwango cha chini.

Kicheko kidogo na maelezo: Ili kuelewa vyema umbizo la faili la Parquet katika Hadoop, hebu tuone ni nini msingi wa safu wima - yaani columnar - umbizo. Umbizo hili huhifadhi thamani zinazofanana kwa kila safu pamoja.

Kwa mfano, rekodi inajumuisha kitambulisho, Jina, na sehemu za Idara. Katika kesi hii, maadili yote ya safu ya kitambulisho yatahifadhiwa pamoja, kama vile maadili ya safu ya Jina, na kadhalika. Jedwali litaonekana kama hii:

ID
jina
idara

1
1
d1

2
2
d2

3
3
d3

Katika muundo wa kamba, data itahifadhiwa kama ifuatavyo:

1
1
d1
2
2
d2
3
3
d3

Katika fomati ya faili ya safu, data sawa itahifadhiwa kama hii:

1
2
3
1
2
3
d1
d2
d3

Umbizo la safu wima ni bora zaidi wakati unahitaji kuuliza safu wima nyingi kutoka kwa jedwali. Itasoma tu safu wima zinazohitajika kwa sababu ziko karibu. Kwa njia hii, shughuli za I/O huwekwa kwa kiwango cha chini.

Kwa mfano, unahitaji safu wima ya NAME pekee. KATIKA umbizo la kamba Kila rekodi katika mkusanyiko wa data inahitaji kupakiwa, kuchanganuliwa kwa uga, na kisha kutoa data ya NAME. Umbizo la safu wima hukuruhusu kusogea chini moja kwa moja hadi safu wima ya Jina kwa sababu thamani zote za safu wima hiyo zimehifadhiwa pamoja. Sio lazima kuchanganua rekodi nzima.

Kwa hivyo, umbizo la safu wima huboresha utendakazi wa hoja kwa sababu inahitaji muda mfupi wa kutafuta ili kufikia safu wima zinazohitajika na kupunguza idadi ya shughuli za I/O kwa sababu ni safu wima zinazohitajika pekee zinazosomwa.

Moja ya vipengele vya kipekee Parquet ni kwamba katika muundo huu inaweza kuhifadhi data na miundo ya kiota. Hii inamaanisha kuwa katika faili ya Parquet, hata sehemu zilizowekwa kwenye kiota zinaweza kusomwa kibinafsi bila kulazimika kusoma sehemu zote za muundo uliowekwa. Parquet hutumia algorithm ya kupasua na kuunganisha ili kuhifadhi miundo iliyowekwa.

Miundo ya faili katika data kubwa: mpango mfupi wa elimu
Ili kuelewa muundo wa faili ya Parquet katika Hadoop, unahitaji kujua maneno yafuatayo:

  1. Kundi la masharti (kikundi cha safu mlalo): mgawanyo wa kimantiki wa data katika safu mlalo. Kundi la safu mlalo lina kipande cha kila safu katika seti ya data.
  2. Kipande cha safu wima (kipande cha safu wima): Kipande cha safu mahususi. Vipande hivi vya safu wima huishi katika kundi mahususi la safu mlalo na vimehakikishwa kuwa vinashikamana kwenye faili.
  3. Ukurasa (ukurasa): Vipande vya safu wima vimegawanywa katika kurasa zilizoandikwa moja baada ya nyingine. Kurasa zina kichwa cha kawaida, kwa hivyo unaweza kuruka zisizo za lazima wakati wa kusoma.

Miundo ya faili katika data kubwa: mpango mfupi wa elimu
Hapa kichwa kina nambari ya uchawi PAR1 (baiti 4) ambayo hutambulisha faili kama faili ya Parquet.

Sehemu ya chini ya ukurasa inasema hivi:

  1. Metadata ya faili iliyo na viwianishi vya kuanzia vya metadata ya kila safu. Unaposoma, lazima kwanza usome metadata ya faili ili kupata vipande vyote vya safu ya riba. Kisha vipande vya safu wima vinapaswa kusomwa kwa kufuatana. Metadata nyingine ni pamoja na toleo la umbizo, taratibu, na jozi zozote za ziada za thamani ya ufunguo.
  2. Urefu wa metadata (baiti 4).
  3. Nambari ya uchawi PAR1 (Baiti 4).

Ugani wa faili ORC

Umbizo la faili la safu mlalo lililoboreshwa (Safu Mlalo Iliyoboreshwa, ORC) inatoa njia bora sana ya kuhifadhi data na iliundwa ili kushinda vikwazo vya miundo mingine. Huhifadhi data katika fomu iliyounganishwa kikamilifu, kukuwezesha kuruka maelezo yasiyo ya lazima - bila kuhitaji ujenzi wa faharisi kubwa, ngumu au zinazotunzwa kwa mikono.

Manufaa ya umbizo la ORC:

  1. Faili moja ni pato la kila kazi, ambayo inapunguza mzigo kwenye NameNode (nodi ya jina).
  2. Usaidizi wa aina za data za Hive, ikiwa ni pamoja na DateTime, desimali na aina changamano za data (muundo, orodha, ramani na muungano).
  3. Usomaji wa wakati mmoja wa faili sawa na michakato tofauti ya RecordReader.
  4. Uwezo wa kugawanya faili bila skanning kwa alama.
  5. Ukadiriaji wa upeo wa juu unaowezekana wa mgao wa kumbukumbu ya lundo kwa michakato ya kusoma/kuandika kulingana na maelezo katika kijachini cha faili.
  6. Metadata huhifadhiwa katika umbizo la usakinishaji wa mfumo wa jozi wa Protocol Buffers, ambao huruhusu sehemu kuongezwa na kuondolewa.

Miundo ya faili katika data kubwa: mpango mfupi wa elimu
ORC huhifadhi mikusanyo ya mifuatano katika faili moja, na ndani ya mkusanyiko, data ya mfuatano huhifadhiwa katika umbizo la safu.

Faili ya ORC huhifadhi vikundi vya mistari inayoitwa mistari na maelezo yanayounga mkono katika sehemu ya chini ya faili. Maandishi ya Posta mwishoni mwa faili yana vigezo vya kubana na saizi ya kijachini iliyobanwa.

Saizi ya msingi ya mstari ni 250 MB. Kutokana na kupigwa vile kubwa, kusoma kutoka kwa HDFS kunafanywa kwa ufanisi zaidi: katika vitalu vikubwa vinavyounganishwa.

Kijachini cha faili hurekodi orodha ya njia kwenye faili, idadi ya safu mlalo kwa kila mstari, na aina ya data ya kila safu. Thamani inayotokana ya hesabu, min, max na jumla kwa kila safu pia imeandikwa hapo.

Sehemu ya chini ya ukanda ina saraka ya maeneo ya mtiririko.

Data ya safu mlalo hutumiwa wakati wa kuchanganua majedwali.

Data ya faharasa inajumuisha thamani za chini na za juu zaidi kwa kila safu na nafasi ya safu mlalo katika kila safu. Faharasa za ORC hutumiwa tu kwa kuchagua mistari na vikundi vya safu mlalo, si kwa kujibu maswali.

Ulinganisho wa muundo tofauti wa faili

Avro ikilinganishwa na Parquet

  1. Avro ni muundo wa uhifadhi wa safu mlalo, wakati Parquet huhifadhi data katika safu wima.
  2. Parquet inafaa zaidi kwa maswali ya uchanganuzi, ikimaanisha kuwa shughuli za kusoma na data ya kuuliza ni bora zaidi kuliko kuandika.
  3. Shughuli za kuandika katika Avro zinafanywa kwa ufanisi zaidi kuliko katika Parquet.
  4. Avro inashughulika na mabadiliko ya mzunguko kwa ukomavu zaidi. Parquet inasaidia tu nyongeza ya schema, wakati Avro inasaidia mageuzi ya kazi nyingi, yaani, kuongeza au kubadilisha safu.
  5. Parquet ni bora kwa kuuliza kikundi kidogo cha safu katika jedwali la safu wima nyingi. Avro inafaa kwa shughuli za ETL ambapo tunauliza safu wima zote.

ORC dhidi ya Parquet

  1. Parquet huhifadhi data iliyoorodheshwa vyema.
  2. ORC inafaa zaidi kutabiri kusukuma chini.
  3. ORC inasaidia sifa za ACID.
  4. ORC inabana data vizuri zaidi.

Nini kingine cha kusoma kwenye mada:

  1. Uchanganuzi mkubwa wa data katika wingu: jinsi kampuni inaweza kuelekeza data.
  2. Mwongozo Mnyenyekevu wa Mipangilio ya Hifadhidata.
  3. Chaneli yetu ya telegramu kuhusu mabadiliko ya kidijitali.

Chanzo: mapenzi.com

Kuongeza maoni