Nā waihona waihona ma ka ʻikepili nui: kahi papahana hoʻonaʻauao pōkole

Nā waihona waihona ma ka ʻikepili nui: kahi papahana hoʻonaʻauao pōkole
ʻO ke Akua Weather na Remarin

hui Mail.ru Cloud Solutions hāʻawi unuhi ʻatikala ʻenehana Rahul Bhatia mai Clairvoyant e pili ana i nā ʻano faila i loaʻa i ka ʻikepili nui, he aha nā hiʻohiʻona maʻamau o nā ʻano Hadoop a ʻo ke ʻano o ka ʻano e ʻoi aku ka maikaʻi o ka hoʻohana.

No ke aha e pono ai nā ʻano waihona like ʻole?

ʻO kahi bottleneck hana nui no nā noi HDFS e like me MapReduce a me Spark ka manawa e ʻimi ai, heluhelu, a kākau i ka ʻikepili. Hoʻopili ʻia kēia mau pilikia e ka paʻakikī i ka hoʻokele ʻana i nā pūʻulu ʻikepili nui inā loaʻa iā mākou kahi schema e ulu nei ma mua o kahi paʻa, a i ʻole he mau palena mālama.

ʻO ka hoʻoili ʻana i ka ʻikepili nui e hoʻonui i ka ukana ma ka subsystem waihona - Hoʻopaʻa nui ʻo Hadoop i ka ʻikepili no ka hoʻokō ʻana i ka hewa. Ma waho aʻe o nā disks, ua hoʻouka ʻia ke kaʻina hana, ka pūnaewele, ka ʻōnaehana input / output, a pēlā aku. Ke piʻi aʻe ka nui o ka ʻikepili, e piʻi aʻe ke kumukūʻai o ka hana ʻana a me ka mālama ʻana.

Nā ʻano waihona like ʻole ma Hadoop hana ʻia e hoʻoponopono pololei i kēia mau pilikia. ʻO ke koho ʻana i ke ʻano faila kūpono hiki ke hāʻawi i kekahi mau pōmaikaʻi nui:

  1. ʻOi aku ka wikiwiki o ka manawa heluhelu.
  2. ʻOi aku ka wikiwiki o ka hoʻopaʻa ʻana.
  3. Nā waihona kaʻana like.
  4. Kākoʻo no ka ulu ʻana o ka schema.
  5. Kākoʻo hoʻopiʻi hoʻonui.

Hoʻohana ʻia kekahi mau waihona waihona no ka hoʻohana maʻamau, ʻo nā mea ʻē aʻe no ka hoʻohana kikoʻī hou aku, a ua hoʻolālā ʻia kekahi e hoʻokō i nā ʻano kikoʻī kikoʻī. No laila, nui loa ka koho.

Hōʻano faila Avro

no ka mea, hoʻopili ʻikepili Hoʻohana nui ʻia ʻo Avro - ʻo ia ma ke kaula, ʻo ia hoʻi, kahi ʻano hoʻopaʻa ʻikepili string ma Hadoop. Mālama ʻo ia i ka schema ma JSON format, e maʻalahi ka heluhelu a me ka wehewehe ʻana e kekahi papahana. Aia ka ʻikepili ponoʻī ma ke ʻano binary, paʻa a maikaʻi.

ʻO ka ʻōnaehana serialization o Avro he ʻōlelo kūʻokoʻa. Hiki ke hana ʻia nā faila ma nā ʻōlelo like ʻole, i kēia manawa C, C++, C#, Java, Python a me Ruby.

ʻO kahi hiʻohiʻona koʻikoʻi o Avro kāna kākoʻo paʻa no nā schemas data e loli ana i ka manawa, ʻo ia hoʻi, evolve. Hoʻomaopopo ʻo Avro i ka hoʻololi ʻana i ka schema— holoi, hoʻohui, a hoʻololi paha i nā kahua.

Kākoʻo ʻo Avro i nā ʻano hana ʻikepili like ʻole. No ka laʻana, hiki iā ʻoe ke hana i kahi moʻolelo i loaʻa i kahi array, kahi ʻano helu helu, a me kahi subrecord.

Nā waihona waihona ma ka ʻikepili nui: kahi papahana hoʻonaʻauao pōkole
He kūpono kēia ʻano no ke kākau ʻana i ka pae ʻāina (transition) o kahi loko data (loko ʻikepili, a i ʻole loko ʻikepili - he hōʻiliʻili o nā manawa no ka mālama ʻana i nā ʻano ʻikepili like ʻole me ka hoʻohui pololei i nā kumu ʻikepili).

No laila, ʻoi aku ka maikaʻi o kēia ʻano no ke kākau ʻana i ka pae ʻāina o kahi loko data no nā kumu penei:

  1. Heluhelu ʻia nā ʻikepili mai kēia ʻāpana i kona holoʻokoʻa no ka hoʻomaʻamaʻa hou ʻana e nā ʻōnaehana o lalo - a ʻoi aku ka maikaʻi o ka hōʻano lālani i kēia hihia.
  2. Hiki i nā ʻōnaehana o lalo ke kiʻi maʻalahi i nā papa hoʻolālā mai nā faila-ʻaʻole pono e mālama kaʻawale i nā ʻōkuhi i loko o kahi waihona meta waho.
  3. Hoʻololi maʻalahi nā hoʻololi i ka schema kumu (schema evolution).

Hōʻano Kōnae Parquet

ʻO Parquet kahi ʻano waihona waihona waihona no Hadoop e mālama nei nā hale ʻikepili pūnana ma ke ʻano kolamu palahalaha.

Ke hoʻohālikelike ʻia i ke ala kuʻuna lālani, ʻoi aku ka maikaʻi o Parquet ma ke ʻano o ka mālama a me ka hana.

Pono kēia no nā nīnau e heluhelu ana i nā kolamu kikoʻī mai kahi pākaukau ākea (nui nā kolamu). Mahalo i ke ʻano waihona, heluhelu ʻia nā kolamu pono wale nō, no laila mālama ʻia ʻo I/O i ka liʻiliʻi.

ʻO kahi digression liʻiliʻi a me ka wehewehe: No ka hoʻomaopopo pono ʻana i ke ʻano o ka faila Parquet ma Hadoop, e ʻike kākou i ke ʻano o ke kolamu - ʻo ia hoʻi. Mālama kēia ʻano i nā waiwai like no kēlā me kēia kolamu.

Eia kekahi laʻana, aia i loko o ka moʻolelo ka ID, inoa, a me nā kahua Oihana. I kēia hihia, e mālama pū ʻia nā koina kolamu ID āpau, e like me nā waiwai kolamu Name, a pēlā aku. E like me kēia ka papaʻaina:

ID
inoa
Keʻena

1
emp1
d1

2
emp2
d2

3
emp3
d3

Ma ka hōʻano string, e mālama ʻia ka ʻikepili penei:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Ma ka waihona waihona kolamu, e mālama ʻia ka ʻikepili like me kēia:

1
2
3
emp1
emp2
emp3
d1
d2
d3

ʻOi aku ka maikaʻi o ke ʻano columnar inā pono ʻoe e nīnau i nā kolamu he nui mai ka papaʻaina. E heluhelu wale ia i nā kolamu i makemake ʻia no ka mea pili lākou. Ma kēia ala, mālama ʻia nā hana I/O i ka liʻiliʻi loa.

No ka laʻana, pono ʻoe i ke kolamu NAME. IN ʻano kaula Pono e hoʻouka ʻia kēlā me kēia moʻolelo i ka ʻikepili helu, hoʻopaʻa ʻia e ke kahua, a laila unuhi i ka ʻikepili NAME. Hāʻawi ka ʻano kolamu iā ʻoe e huki pololei i ka kolamu Name no ka mea ua mālama pū ʻia nā waiwai āpau no kēlā kolamu. ʻAʻole pono ʻoe e nānā i ka hoʻopaʻa ʻana holoʻokoʻa.

No laila, hoʻomaikaʻi ke ʻano kolamu i ka hana nīnau no ka mea ʻoi aku ka liʻiliʻi o ka manawa ʻimi e hiki ai i nā kolamu i makemake ʻia a hoʻemi i ka helu o nā hana I/O no ka mea ʻo nā kolamu makemake wale nō e heluhelu ʻia.

ʻO kekahi o nā hiʻohiʻona kūikawā Pū ʻIla ʻo ia ma kēia ʻano hiki mālama i ka ʻikepili me nā hale pūnana. ʻO ia hoʻi, i loko o kahi faila Parquet, hiki ke heluhelu pākahi ʻia nā kahua pūnana me ka ʻole o ka heluhelu ʻana i nā kahua āpau i ka hale pūnana. Hoʻohana ʻo Parquet i kahi algorithm shredding a hui e mālama i nā hale pūnana.

Nā waihona waihona ma ka ʻikepili nui: kahi papahana hoʻonaʻauao pōkole
No ka hoʻomaopopo ʻana i ka format file Parquet ma Hadoop, pono ʻoe e ʻike i kēia mau ʻōlelo:

  1. Hui lālani (hui lālani): ka mahele ʻana o ka ʻikepili i nā lālani. Aia kekahi pūʻulu lālani i ʻāpana o kēlā me kēia kolamu i ka pūʻulu ʻikepili.
  2. ʻāpana kolamu (column chunk): He ʻāpana o kahi kolamu kikoʻī. Noho kēia mau ʻāpana kolamu i kahi pūʻulu kikoʻī o nā lālani a paʻa pono e pili pū i ka faila.
  3. ʻAoʻao (ʻaoʻao): Ua māhele ʻia nā ʻāpana kolamu i nā ʻaoʻao i kākau ʻia kekahi ma hope o kekahi. He poʻo inoa maʻamau nā ʻaoʻao, no laila hiki iā ʻoe ke lele i nā mea pono ʻole ke heluhelu.

Nā waihona waihona ma ka ʻikepili nui: kahi papahana hoʻonaʻauao pōkole
Aia i loko o ke poʻo inoa ka helu kupua PAR1 (4 bytes) ka mea e ʻike ai i ka faila ma ke ʻano he faila Parquet.

Wahi a ka footer penei:

  1. waihona metadata i loaʻa nā hoʻonohonoho hoʻomaka o kēlā me kēia kolamu metadata. I ka heluhelu ʻana, pono ʻoe e heluhelu mua i ka metadata o ka faila e ʻike i nā ʻāpana kolamu āpau o ka hoihoi. Heluhelu pū ʻia nā ʻāpana kolamu. Loaʻa nā metadata ʻē aʻe i ka mana hōpili, schema, a me nā hui waiwai kī hou.
  2. Ka lōʻihi o ka metadata (4 bytes).
  3. helu kupua PAR1 (4 bytes).

Hōʻano waihona ORC

Hoʻopono ʻia ka ʻano waihona lālani-koluma (Kola Lalani Hooponoia, CRO) hāʻawi i kahi ala maikaʻi loa e mālama i ka ʻikepili a ua hoʻolālā ʻia e lanakila i nā palena o nā ʻano ʻē aʻe. E mālama i ka ʻikepili i kahi ʻano paʻa paʻa, e ʻae iā ʻoe e hoʻokuʻu i nā kikoʻī pono ʻole - me ka ʻole e koi ʻia ke kūkulu ʻana i nā ʻōlelo kuhikuhi nui, paʻakikī a mālama lima paha.

Nā pōmaikaʻi o ka ʻano ORC:

  1. Hoʻokahi faila ka hoʻopuka o kēlā me kēia hana, e hōʻemi ana i ka ukana ma ka NameNode (name node).
  2. Kākoʻo no nā ʻano ʻikepili Hive, me DateTime, decimal a me nā ʻano ʻikepili paʻakikī (struct, list, map and union).
  3. ʻO ka heluhelu like ʻana o ka faila hoʻokahi e nā kaʻina RecordReader like ʻole.
  4. Hiki ke hoʻokaʻawale i nā faila me ka nānā ʻole ʻana i nā māka.
  5. Ka manaʻo o ka nui o ka hoʻokaʻawale hoʻomanaʻo puʻu no nā kaʻina heluhelu/kākau ma muli o ka ʻike ma ka footer file.
  6. Mālama ʻia ka metadata ma ke ʻano serialization binary Protocol Buffers, kahi e hiki ai ke hoʻohui a wehe ʻia nā māla.

Nā waihona waihona ma ka ʻikepili nui: kahi papahana hoʻonaʻauao pōkole
Mālama ʻo ORC i nā hōʻiliʻili o nā kaula i hoʻokahi faila, a i loko o ka hōʻiliʻili, mālama ʻia ka ʻikepili string ma kahi ʻano kolamu.

Mālama ka waihona ORC i nā pūʻulu laina i kapa ʻia ʻo stripes a me nā ʻike kākoʻo ma ka wāwae o ka faila. Aia ka Postscript ma ka hope o ka faila i nā ʻāpana hoʻopili a me ka nui o ka footer i hoʻopili ʻia.

ʻO 250 MB ka nui o ka laina paʻamau. Ma muli o ia mau kaha nui, ʻoi aku ka maikaʻi o ka heluhelu ʻana mai HDFS: ma nā poloka pili nui.

Hoʻopaʻa ka footer waihona i ka papa inoa o nā alahele ma ka faila, ka helu o nā lālani ma kēlā me kēia ala, a me ke ʻano ʻikepili o kēlā me kēia kolamu. Ua kākau pū ʻia ka waiwai o ka helu, min, max a me ka huina no kēlā me kēia kolamu.

Aia ka papa kuhikuhi o nā wahi kahawai ma ka wāwae o ka ʻili.

Hoʻohana ʻia ka ʻikepili lālani i ka nānā ʻana i nā papa.

Loaʻa i ka ʻikepili helu ka helu liʻiliʻi a me ka nui o kēlā me kēia kolamu a me ke kūlana o nā lālani i kēlā me kēia kolamu. Hoʻohana ʻia nā papa kuhikuhi ORC no ke koho ʻana i nā kaha a me nā hui lālani, ʻaʻole no ka pane ʻana i nā nīnau.

Hoʻohālikelike o nā ʻano waihona like ʻole

Hoʻohālikelike ʻia ʻo Avro me Parquet

  1. ʻO Avro kahi hōʻano mālama lālani, ʻoiai ʻo Parquet e mālama i ka ʻikepili ma nā kolamu.
  2. ʻOi aku ka maikaʻi o Parquet no nā nīnau noiʻi, ʻo ia hoʻi, ʻoi aku ka maikaʻi o ka heluhelu ʻana a me ka noiʻi ʻikepili ma mua o ke kākau ʻana.
  3. ʻOi aku ka maikaʻi o nā hana kākau ma Avro ma mua o Parquet.
  4. Kūleʻa ʻo Avro i ka hoʻomohala kaapuni ʻoi aku ka makua. Kākoʻo wale ʻo Parquet i ka hoʻohui schema, ʻoiai ʻo Avro e kākoʻo ana i ka evolution multifunctional, ʻo ia hoʻi, hoʻohui a hoʻololi i nā kolamu.
  5. He kūpono ʻo Parquet no ka nīnau ʻana i kahi ʻāpana o nā kolamu i loko o ka pākaukau multi-column. Ua kūpono ʻo Avro no nā hana ETL kahi e nīnau ai mākou i nā kolamu āpau.

ORC vs Parquet

  1. ʻOi aku ka maikaʻi o ka hale kūʻai ʻo Parquet i ka ʻikepili.
  2. ʻOi aku ka maikaʻi o ka ORC i ka predicate pushdown.
  3. Kākoʻo ʻo ORC i nā waiwai ACID.
  4. Hoʻopili maikaʻi ʻo ORC i ka ʻikepili.

He aha hou aʻe e heluhelu ai ma ke kumuhana:

  1. ʻIke ʻikepili nui i ke ao: pehea e hiki ai i kahi ʻoihana ke lilo i ka ʻikepili.
  2. He alakaʻi haʻahaʻa i nā ʻōnaehana waihona.
  3. ʻO kā mākou pūnaewele telegram e pili ana i ka hoʻololi kikohoʻe.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka