ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase

Aloha awakea, Aloha Auinalā ʻO Danil Lipovoy koʻu inoa, ua hoʻomaka kā mākou hui ma Sbertech e hoʻohana iā HBase ma ke ʻano he waihona no ka ʻikepili hana. I ka wā o ke aʻo ʻana, ua hōʻiliʻili ʻia ka ʻike aʻu i makemake ai e hoʻonohonoho a wehewehe (manaʻolana mākou e pono ia i nā mea he nui). Ua hana ʻia nā hoʻokolohua āpau ma lalo nei me nā mana HBase 1.2.0-cdh5.14.2 a me 2.0.0-cdh6.0.0-beta1.

  1. hale hoʻolālā maʻamau
  2. Ke kākau ʻana i ka ʻikepili iā HBASE
  3. Heluhelu i ka ʻikepili mai HBASE
  4. Ke kāʻei ʻikepili
  5. ʻO ka hoʻoili ʻikepili pūʻulu MultiGet/MultiPut
  6. Hoʻolālā no ka hoʻokaʻawale ʻana i nā papa i nā ʻāpana (māhele)
  7. ʻO ka hoʻomanawanui hewa, ka hoʻopili ʻana a me ka wahi ʻikepili
  8. Nā hoʻonohonoho a me ka hana
  9. ʻO ka hoʻāʻo ʻana
  10. haʻina

1. Hoʻolālā nui

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Hoʻolohe ka Master backup i ka puʻuwai o ka mea ikaika ma ka node ZooKeeper a, inā nalowale, lawe ʻo ia i nā hana a ka haku.

2. Kākau i ka ʻikepili i HBASE

ʻO ka mea mua, e nānā kākou i ka hihia maʻalahi loa - ke kākau ʻana i kahi mea waiwai kī i ka papa me ka hoʻohana ʻana i ka put(rowkey). Pono ka mea kūʻai aku e ʻike i kahi o ka Root Region Server (RRS), kahi e mālama ai i ka hbase: meta table. Loaʻa iā ia kēia ʻike mai ZooKeeper. Ma hope o ia e komo ai i ka RRS a heluhelu i ka papa hbase: meta, kahi e unuhi ai i ka ʻike e pili ana i ka RegionServer (RS) ke kuleana no ka mālama ʻana i ka ʻikepili no kahi rowkey i hāʻawi ʻia i ka papa o ka hoihoi. No ka hoʻohana ʻana i ka wā e hiki mai ana, mālama ʻia ka pākaukau meta e ka mea kūʻai aku a no laila e holo wikiwiki nā kelepona ma hope, pololei iā RS.

A laila, ua loaʻa iā RS kahi noi, kākau mua ʻo ia iā WriteAheadLog (WAL), pono ia no ka hoʻihoʻi ʻana i ka wā o kahi ulia. A laila mālama i ka ʻikepili i MemStore. He pahu hoʻomanaʻo kēia i loaʻa i kahi pūʻulu kī i hoʻonohonoho ʻia no kahi ʻāpana i hāʻawi ʻia. Hiki ke hoʻokaʻawale ʻia kahi papaʻaina i nā ʻāpana (nā ʻāpana), aia i kēlā me kēia o nā kī kī. ʻAe kēia iā ʻoe e kau i nā wahi ma nā kikowaena like ʻole e hoʻokō i ka hana kiʻekiʻe. Eia naʻe, ʻoiai ka maopopo o kēia ʻōlelo, e ʻike mākou ma hope ʻaʻole e hana kēia i nā hihia āpau.

Ma hope o ke kau ʻana i kahi komo i loko o ka MemStore, hoʻihoʻi ʻia kahi pane i ka mea kūʻai aku ua mālama maikaʻi ʻia ke komo. Eia naʻe, i ka ʻoiaʻiʻo, mālama ʻia ia i loko o kahi buffer a hiki i ka disk wale nō ma hope o ka hala ʻana o kekahi manawa a i ʻole ke hoʻopiha ʻia me nā ʻikepili hou.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
I ka hana ʻana i ka hana "Delete", ʻaʻole holoi ʻia ka ʻikepili. Hoʻopili wale ʻia lākou e like me ka holoi ʻana, a ʻo ka luku ʻana iā ia iho i ka manawa o ke kāhea ʻana i ka hana koʻikoʻi nui, i wehewehe ʻia i nā kikoʻī ma ka paukū 7.

Hoʻopili ʻia nā faila ma ka ʻano HFile ma HDFS a i kēlā me kēia manawa ke hoʻomaka ʻia ke kaʻina hana liʻiliʻi liʻiliʻi, e hoʻohui wale i nā faila liʻiliʻi i nā faila nui me ka ʻole e holoi i kekahi mea. Ma hope o ka manawa, lilo kēia i pilikia e ʻike wale ʻia i ka wā e heluhelu ai i ka ʻikepili (e hoʻi mākou i kēia ma hope iki).

Ma waho aʻe o ke kaʻina hoʻoili i hōʻike ʻia ma luna nei, aia kahi kaʻina hana ʻoi aku ka maikaʻi, ʻo ia paha ka ʻaoʻao ikaika loa o kēia waihona - BulkLoad. Aia ia ma ka ʻoiaʻiʻo e hana kūʻokoʻa mākou i nā HFiles a kau iā lākou ma ka disk, kahi e hiki ai iā mākou ke hoʻohālikelike pono a hoʻokō i nā wikiwiki kūpono. ʻO ka ʻoiaʻiʻo, ʻo ka palena ma aneʻi ʻaʻole HBase, akā nā mana o ka hāmeʻa. Aia ma lalo iho nā hopena boot ma kahi hui pū me 16 RegionServers a me 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 mau kaula), HBase version 1.2.0-cdh5.14.2.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase

Maanei hiki iā ʻoe ke ʻike i ka hoʻonui ʻana i ka helu o nā ʻāpana (nā ʻāpana) i ka papaʻaina, a me nā mea hoʻokō Spark, loaʻa iā mākou ka hoʻonui ʻana i ka wikiwiki download. Eia kekahi, pili ka wikiwiki i ka leo hoʻopaʻa. Hāʻawi nā poloka nui i ka hoʻonui ʻana i ka MB/sec, nā poloka liʻiliʻi i ka helu o nā moʻolelo i hoʻokomo ʻia i kēlā me kēia manawa, ua like nā mea ʻē aʻe a pau.

Hiki iā ʻoe ke hoʻomaka i ka hoʻouka ʻana i nā papa ʻelua i ka manawa like a loaʻa pālua ka wikiwiki. Ma lalo ʻoe e ʻike ai i ka kākau ʻana i nā poloka 10 KB i ʻelua mau papa i ka manawa hoʻokahi ma kahi o 600 MB/sec i kēlā me kēia (ka huina 1275 MB/sec), e like me ka wikiwiki o ke kākau ʻana i hoʻokahi papa 623 MB/sec (e ʻike i Helu 11 ma luna)

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Akā ʻo ka lua o ka holo me nā moʻolelo o 50 KB e hōʻike ana e ulu iki ka wikiwiki o ka download, e hōʻike ana e hoʻokokoke ana i nā waiwai palena. I ka manawa like, pono ʻoe e hoʻomanaʻo ʻaʻohe mea i hana ʻia ma ka HBASE ponoʻī, ʻo ka mea e pono ai e hāʻawi mua i ka ʻikepili mai hbase: meta, a ma hope o ka hoʻopaʻa ʻana i nā HFiles, hoʻonohonoho hou i ka ʻikepili BlockCache a mālama i ka Hoʻopili ʻo MemStore i ka disk, inā ʻaʻole kaʻawale.

3. Heluhelu 'ikepili mai HBASE

Inā manaʻo mākou ua loaʻa i ka mea kūʻai aku nā ʻike āpau mai hbase: meta (e ʻike i ka helu 2), a laila hele pololei ke noi i ka RS kahi i mālama ʻia ai ke kī koi. ʻO ka mea mua, hana ʻia ka ʻimi ma MemCache. Ma waho aʻe o ka ʻikepili ma laila a ʻaʻole paha, e hana ʻia ka ʻimi ʻana ma ka blockCache buffer a, inā pono, ma HFiles. Inā loaʻa ka ʻikepili i ka faila, waiho ʻia ia ma BlockCache a e hoʻihoʻi wikiwiki ʻia i ka noi aʻe. ʻO ka ʻimi ʻana ma HFile he mea wikiwiki no ka hoʻohana ʻana i ka kānana Bloom, ʻo ia hoʻi. i ka heluhelu ʻana i kahi helu liʻiliʻi o ka ʻikepili, hoʻoholo koke ʻo ia inā loaʻa i kēia faila ke kī i koi ʻia a inā ʻaʻole, a laila neʻe i kahi aʻe.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
I ka loaʻa ʻana o ka ʻikepili mai kēia mau kumu ʻekolu, hana ʻo RS i kahi pane. ʻO ka mea kūikawā, hiki iā ia ke hoʻololi i kekahi mau mana i ʻike ʻia o kahi mea i ka manawa hoʻokahi inā noi ka mea kūʻai aku e hoʻololi.

4. Ke kāʻei ʻikepili

Noho ka MemStore a me BlockCache buffer a hiki i ka 80% o ka hoʻomanaʻo RS i hoʻokaʻawale ʻia (ʻo ke koena i mālama ʻia no nā hana lawelawe RS). Ināʻo keʻano hoʻohana maʻamau ka mea e kākau ai nā kaʻina hana a heluhelu koke i kaʻikepili like, a laila he mea kūpono e ho'ēmi i BlockCache a hoʻonui i ka MemStore, no ka mea Ke komo ʻole ka ʻikepili kākau i loko o ka waihona no ka heluhelu ʻana, e hoʻohana pinepine ʻia ʻo BlockCache. He ʻelua ʻāpana ka paʻi BlockCache: LruBlockCache (ma ka puʻu mau) a me BucketCache (maʻamau ma waho o ka puʻu a ma kahi SSD). Pono e hoʻohana ʻia ʻo BucketCache inā nui nā noi heluhelu a ʻaʻole kūpono lākou i LruBlockCache, e alakaʻi ana i ka hana ikaika a ka ʻOhi ʻōpala. I ka manawa like, ʻaʻole pono ʻoe e manaʻo i ka piʻi nui o ka hana mai ka hoʻohana ʻana i ka cache heluhelu, akā e hoʻi mākou i kēia ma ka paukū 8

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Hoʻokahi BlockCache no ka RS holoʻokoʻa, a aia hoʻokahi MemStore no kēlā me kēia pākaukau (hoʻokahi no kēlā me kēia ʻohana Column).

Pehea wehewehe ʻia ma ke kumumanaʻo, i ka wā e kākau ai, ʻaʻole i komo ka ʻikepili i loko o ka hūnā a ʻoiaʻiʻo, ua hoʻonohonoho ʻia kēlā mau ʻāpana CACHE_DATA_ON_WRITE no ka papaʻaina a me "Cache DATA ma Kākau" no RS ua hoʻonohonoho ʻia i ka wahaheʻe. Eia nō naʻe, ma ka hoʻomaʻamaʻa, inā mākou e kākau i ka ʻikepili i MemStore, a laila e holoi iā ia i ka disk (pēlā e hoʻomaʻemaʻe ai), a laila holoi i ka faila hopena, a laila ma ka hoʻokō ʻana i kahi noi e loaʻa iā mākou ka ʻikepili. Eia kekahi, ʻoiai inā hoʻopau loa ʻoe iā BlockCache a hoʻopiha i ka papaʻaina me nā ʻikepili hou, a laila hoʻonohonoho hou i ka MemStore i ka disk, kāpae iā lākou a noi iā lākou mai kahi hālāwai ʻē aʻe, e kiʻi ʻia lākou mai kahi. No laila, mālama ʻo HBase i ka ʻikepili wale nō, akā i nā mea pohihihi.

hbase(main):001:0> create 'ns:magic', 'cf'
Created table ns:magic
Took 1.1533 seconds
hbase(main):002:0> put 'ns:magic', 'key1', 'cf:c', 'try_to_delete_me'
Took 0.2610 seconds
hbase(main):003:0> flush 'ns:magic'
Took 0.6161 seconds
hdfs dfs -mv /data/hbase/data/ns/magic/* /tmp/trash
hbase(main):002:0> get 'ns:magic', 'key1'
 cf:c      timestamp=1534440690218, value=try_to_delete_me

Hoʻonohonoho ʻia ka ʻāpana "Cache DATA on Read" i ka wahaheʻe. Inā he mau manaʻo kāu, e ʻoluʻolu e kūkākūkā ma nā ʻōlelo.

5. ʻO ka hoʻoili ʻana i ka ʻikepili hui MultiGet/MultiPut

ʻO ka hana ʻana i nā noi hoʻokahi (E kiʻi/Put/Delete) he hana pipiʻi loa ia, no laila inā hiki, pono ʻoe e hoʻohui iā lākou i loko o kahi papa inoa a i ʻole papa inoa, e hiki ai iā ʻoe ke loaʻa ka hoʻoikaika nui. He ʻoiaʻiʻo kēia no ka hana kākau, akā i ka heluhelu ʻana aia ka lua ma hope. Hōʻike ka pakuhi ma lalo i ka manawa e heluhelu ai i nā moʻolelo 50 mai MemStore. Hana ʻia ka heluhelu ʻana i hoʻokahi kaula a hōʻike ka axis horizontal i ka helu o nā kī i ka noi. Maanei hiki iā ʻoe ke ʻike i ka wā e hoʻonui ai i hoʻokahi mau kī i hoʻokahi noi, hāʻule ka manawa hoʻokō, ʻo ia. piʻi ka wikiwiki. Eia naʻe, me ka hoʻohana ʻana o ke ʻano MSLAB ma ka paʻamau, ma hope o kēia paepae e hoʻomaka ka hāʻule ʻana o ka hana, a ʻoi aku ka nui o ka ʻikepili i ka moʻolelo, ʻoi aku ka lōʻihi o ka manawa hana.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase

Ua hana ʻia nā hoʻāʻo ma ka mīkini virtual, 8 cores, version HBase 2.0.0-cdh6.0.0-beta1.

Hoʻolālā ʻia ke ʻano MSLAB e hōʻemi i ka puʻupuʻu puʻupuʻu, i loaʻa ma muli o ka hui ʻana o ka ʻikepili o ka hanauna hou a me ka wā kahiko. Ma ke ʻano he hana hoʻoponopono, ke hoʻohana ʻia ʻo MSLAB, hoʻokomo ʻia ka ʻikepili i loko o nā ʻāpana liʻiliʻi (chunks) a hana ʻia i nā chunks. ʻO ka hopena, ke ʻoi aku ka nui o ka waihona ʻikepili i noi ʻia ma mua o ka nui i hāʻawi ʻia, hāʻule nui ka hana. Ma ka ʻaoʻao ʻē aʻe, ʻaʻole kūpono ka hoʻopau ʻana i kēia ʻano, no ka mea e alakaʻi ia i ka hoʻokuʻu ʻana ma muli o GC i nā manawa o ka hoʻoili ʻikepili koʻikoʻi. ʻO kahi hoʻonā maikaʻi ʻo ka hoʻonui ʻana i ka leo kelepona ma ke ʻano o ke kākau ikaika ma o ka waiho ʻana i ka manawa like me ka heluhelu ʻana. He mea pono e hoʻomaopopo ʻaʻole hiki mai ka pilikia inā, ma hope o ka hoʻopaʻa ʻana, holo ʻoe i ke kauoha flush, ka mea e hoʻihoʻi i ka MemStore i ka disk, a inā ʻoe e hoʻouka me ka BulkLoad. Hōʻike ka papa ma lalo nei i nā nīnau mai ka MemStore no ka ʻikepili nui (a me ka nui like) ka hopena i nā lohi. Eia naʻe, ma ka hoʻonui ʻana i ka chunksize e hoʻihoʻi mākou i ka manawa hana i ka maʻamau.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Ma waho aʻe o ka hoʻonui ʻana i ka chunksize, ʻo ka hoʻokaʻawale ʻana i ka ʻikepili ma ka ʻāina kōkua, ʻo ia hoʻi. ka wehe ʻana i ka papaʻaina. Loaʻa kēia i ka liʻiliʻi o nā noi e hele mai i kēlā me kēia wahi a inā kūpono lākou i loko o kahi kelepona, maikaʻi ka pane.

6. Hoʻolālā no ka hoʻokaʻawale ʻana i nā papa i nā ʻāpana (māhele)

No ka mea ʻo HBase kahi waihona waiwai nui a lawe ʻia ka ʻāpana e ke kī, he mea nui loa ia e puʻunaue like i ka ʻikepili ma nā wahi āpau. No ka laʻana, ʻo ka hoʻokaʻawale ʻana i kēlā papaʻaina i ʻekolu ʻāpana e hoʻokaʻawale ʻia ka ʻikepili i ʻekolu mau ʻāpana:

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Ke alakaʻi nei kēia i kahi lohi nui inā ʻike ʻia ka ʻikepili i hoʻouka ʻia ma hope, no ka laʻana, nā waiwai lōʻihi, ʻo ka hapa nui o lākou e hoʻomaka me ka huahelu hoʻokahi, no ka laʻana:

1000001
1000002
...
1100003

No ka mea, mālama ʻia nā kī ma ke ʻano he byte array, e hoʻomaka like lākou a pau a no ka ʻāina like #1 e mālama nei i kēia ʻano kī. Aia kekahi mau hoʻolālā hoʻokaʻawale:

HexStringSplit – Hoʻololi i ke kī i loko o kahi kaula i hoʻopaʻa ʻia hexadecimal ma ka laulā "00000000" => "FFFFFFFF" a hoʻopili i ka hema me nā zeros.

UniformSplit – Hoʻololi i ke kī i loko o kahi ʻano byte me ka hoʻopā ʻana hexadecimal ma ka laulā "00" => "FF" a me ka padding ma ka ʻākau me nā zeros.

Eia hou, hiki iā ʻoe ke kuhikuhi i nā ʻāpana a i ʻole nā ​​kī no ka hoʻokaʻawale a hoʻonohonoho i ka hoʻokaʻawale ʻana. Eia nō naʻe, ʻo kekahi o nā ala maʻalahi a maikaʻi hoʻi ʻo UniformSplit a me ka hoʻohana ʻana i ka hoʻohui ʻana i ka hash, no ka laʻana, ʻo nā paita koʻikoʻi loa mai ka holo ʻana i ke kī ma o ka hana CRC32(rowkey) a me ka rowkey ponoʻī:

hash + rowkey

A laila e puʻunaue like ʻia nā ʻikepili āpau ma nā wahi āpau. I ka heluhelu ʻana, hoʻolei wale ʻia nā byte mua ʻelua a waiho ʻia ke kī kumu. Mālama pū ʻo RS i ka nui o ka ʻikepili a me nā kī ma ka ʻāina a, inā ʻoi aku ka nui o nā palena, e wāwahi ʻokoʻa i nā ʻāpana.

7. Ka hoʻomanawanui hewa a me ka ʻikepili wahi

No ka mea, hoʻokahi wale nō ʻāina ke kuleana no kēlā me kēia kī, ʻo ka hoʻonā i nā pilikia e pili ana i ka RS crashes a i ʻole decommissioning ʻo ia ka mālama ʻana i nā ʻikepili pono āpau ma HDFS. Ke hāʻule ʻo RS, ʻike ka haku i kēia ma o ka loaʻa ʻole o ka puʻuwai ma ka node ZooKeeper. A laila hāʻawi ʻo ia i ka ʻāina i lawelawe ʻia i kekahi RS ​​a ʻoiai ua mālama ʻia nā HFiles i kahi ʻōnaehana faila i hoʻokaʻawale ʻia, heluhelu ka mea hou iā lākou a hoʻomau i ka lawelawe ʻana i ka ʻikepili. Eia naʻe, no ka mea aia paha kekahi o nā ʻikepili i ka MemStore a ʻaʻohe manawa e komo ai i HFiles, ua hoʻohana ʻia ʻo WAL, kahi i mālama ʻia ma HDFS, e hoʻihoʻi i ka mōʻaukala o nā hana. Ma hope o ka hoʻololiʻana i nā hoʻololi, hiki iā RS ke pane i nā noi, akāʻo ka neʻeʻana e alakaʻi i kaʻoiaʻiʻo o kekahi o nāʻikepili a me nā kaʻina hana e lawelawe ana iā lākou e hoʻopau i nā nodes likeʻole, i.e. ke emi nei ka wahi.

ʻO ka hoʻonā ʻana i ka pilikia ʻo ka compaction nui - ke neʻe nei kēia kaʻina hana i nā faila i kēlā mau nodes nona ke kuleana no lākou (kahi i loaʻa ai ko lākou mau ʻāina), ʻo ia ka hopena o kēia kaʻina hana e piʻi nui ka ukana ma ka pūnaewele a me nā disks. Eia naʻe, i ka wā e hiki mai ana, ʻike ʻia ka wikiwiki o ka loaʻa ʻana o ka ʻikepili. Eia hou, hoʻokō ka major_compaction i ka hoʻohui ʻana i nā HFiles a pau i hoʻokahi faila i loko o kahi ʻāpana, a hoʻomaʻemaʻe hoʻi i ka ʻikepili ma muli o nā hoʻonohonoho papa. No ka laʻana, hiki iā ʻoe ke kuhikuhi i ka helu o nā mana o kahi mea e pono e mālama ʻia a i ʻole ke ola ʻana ma hope o ka holoi ʻana i ke kino.

Hiki i kēia kaʻina hana ke loaʻa ka hopena maikaʻi loa i ka hana o HBase. Hōʻike ke kiʻi ma lalo i ka emi ʻana o ka hana ma muli o ka hoʻopaʻa ʻana i ka ʻikepili hana. Ma ʻaneʻi hiki iā ʻoe ke ʻike i ke kākau ʻana o nā milo 40 i ka papa hoʻokahi a me nā loina 40 i ka heluhelu ʻana i ka ʻikepili i ka manawa like. ʻO ke kākau ʻana i nā loina e hoʻonui i nā HFile, i heluhelu ʻia e nā loina ʻē aʻe. ʻO ka hopena, pono e hoʻoneʻe ʻia nā ʻikepili hou aʻe mai ka hoʻomanaʻo ʻana a hoʻomaka ka GC e hana, kahi e hoʻopau ai i nā hana āpau. ʻO ka hoʻomaka ʻana o ka hoʻopili nui i alakaʻi ʻia i ka hoʻomaʻemaʻe ʻana i nā ʻōpala i hopena a hoʻihoʻi hou i ka huahana.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Ua hana ʻia ka hoʻāʻo ma 3 DataNodes a me 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 mau kaula). HBase mana 1.2.0-cdh5.14.2

Pono e hoʻomaopopo ʻia ua hoʻokumu ʻia ka compaction nui ma kahi pākaukau "ola", kahi i kākau ikaika ʻia a heluhelu ʻia ka ʻikepili. Aia kekahi ʻōlelo ma ka pūnaewele e hiki ai i kēia ke alakaʻi i kahi pane hewa ke heluhelu ʻana i ka ʻikepili. No ka nānā ʻana, ua hoʻomaka ʻia kahi kaʻina hana i hana i ka ʻikepili hou a kākau iā ia i kahi papaʻaina. Ma hope o ia mea, heluhelu koke au a nānā inā pili ka waiwai i loaʻa me ka mea i kākau ʻia. ʻOiai e holo ana kēia kaʻina hana, ua holo ʻia ka hoʻopili nui ʻana ma kahi o 200 mau manawa a ʻaʻole i hoʻopaʻa ʻia kahi hemahema. Malia paha e ʻike ʻia ka pilikia a i ka wā haʻahaʻa kiʻekiʻe wale nō, no laila ʻoi aku ka palekana o ka hoʻōki ʻana i nā kaʻina hana kākau a me ka heluhelu ʻana e like me ka mea i hoʻolālā ʻia a hana i ka hoʻomaʻemaʻe ʻana i mea e pale ai i nā huki GC.

Eia kekahi, ʻaʻole pili ka hoʻopili nui i ka mokuʻāina o ka MemStore; no ka holoi ʻana iā ia i ka disk a hoʻopaʻa ʻia, pono ʻoe e hoʻohana i ka flush (connection.getAdmin().flush(TableName.valueOf(tblName))).

8. Nā hoʻonohonoho a me ka hana

E like me ka mea i ʻōlelo mua ʻia, hōʻike ʻo HBase i kāna kūleʻa nui loa ma kahi ʻaʻole pono e hana i kekahi mea, i ka wā e hoʻokō ai i ka BulkLoad. Eia naʻe, pili kēia i ka hapa nui o nā ʻōnaehana a me nā kānaka. Eia nō naʻe, ʻoi aku ka maikaʻi o kēia hāmeʻa no ka mālama ʻana i ka ʻikepili i loko o nā poloka nui, akā inā makemake ke kaʻina hana i nā noi heluhelu heluhelu a kākau ʻana, hoʻohana ʻia nā kauoha Get a Put i hōʻike ʻia ma luna. No ka hoʻoholo ʻana i nā ʻāpana maikaʻi loa, ua lawe ʻia nā hoʻokuʻu ʻana me nā hui like ʻole o nā ʻāpana papaʻaina a me nā hoʻonohonoho:

  • Ua hoʻokuʻu ʻia 10 mau kaula i ka manawa like 3 manawa i ka lālani (e kapa mākou i kēia he poloka o nā kaula).
  • ʻO ka manawa hana o nā lola a pau i loko o kahi poloka i ʻawelika a ʻo ia ka hopena hope o ka hana ʻana o ka poloka.
  • Ua hana nā lola a pau me ka pākaukau hoʻokahi.
  • Ma mua o kēlā me kēia hoʻomaka ʻana o ka poloka thread, ua hana ʻia kahi hoʻopili nui.
  • Ua hana kēlā me kēia poloka i hoʻokahi wale nō o kēia mau hana:

—Kau
—E kii
—E kiʻi+Put

  • Ua hana kēlā me kēia poloka i 50 mau hoʻololi o kāna hana.
  • ʻO ka nui o ka poloka o kahi moʻolelo he 100 bytes, 1000 bytes a i ʻole 10000 bytes (random).
  • Ua hoʻokuʻu ʻia nā poloka me nā helu like ʻole o nā kī i noi ʻia (hoʻokahi kī a i ʻole 10).
  • Ua holo nā poloka ma lalo o nā hoʻonohonoho papaʻaina like ʻole. Ua hoʻololi ʻia nā ʻāpana:

— BlockCache = huli a hoopau paha
— BlockSize = 65 KB a i ʻole 16 KB
— Nā ʻāpana = 1, 5 a i ʻole 30
— MSLAB = hiki a hoʻopau ʻia paha

No laila ke ʻano o ka poloka penei:

a. Ua hoʻā a pio ke ʻano MSLAB.
b. Ua hana ʻia kahi pākaukau i hoʻonohonoho ʻia ai kēia mau ʻāpana: BlockCache = ʻoiaʻiʻo/ʻaʻohe, BlockSize = 65/16 Kb, Pākuʻi = 1/5/30.
c. Ua hoʻonohonoho ʻia ke kōmike i GZ.
d. Ua hoʻomaka ʻia nā pae 10 i ka manawa like e hana ana i nā hana 1/10 put/get/get+put i loko o kēia pākaukau me nā moʻolelo o 100/1000/10000 bytes, e hana ana i 50 mau nīnau i ka lālani (nā kī kīwī).
e. Ua hana hou ʻia ka helu d i ʻekolu manawa.
f. Ua awelika ʻia ka manawa hana o nā pae a pau.

Ua hoʻāʻo ʻia nā hui like ʻole a pau. Manaʻo ʻia e hāʻule ka wikiwiki i ka piʻi ʻana o ka nui o ka moʻolelo, a i ʻole ke hoʻopau ʻia ka hoʻopaʻa ʻana i ka cache e hoʻolohi. Eia naʻe, ʻo ka pahuhopu ka hoʻomaopopo ʻana i ka degere a me ke koʻikoʻi o ka mana o kēlā me kēia ʻāpana, no laila ua hānai ʻia nā ʻikepili i hōʻiliʻili ʻia i loko o ka hoʻokomo ʻana o kahi hana regression linear, kahi e hiki ai ke loiloi i ke koʻikoʻi me ka hoʻohana ʻana i ka t-statistics. Aia ma lalo nā hopena o nā poloka e hana ana i nā hana Put. ʻO ka hui piha o nā hui 2 * 2 * 3 * 2 * 3 = 144 mau koho + 72 tk. ʻelua hana ʻia kekahi. No laila, he 216 holo i ka huina:

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Ua hana ʻia ka hoʻāʻo ʻana ma kahi mini-cluster nona ka 3 DataNodes a me 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 mau kaula). HBase mana 1.2.0-cdh5.14.2.

Loaʻa ka wikiwiki hoʻokomo kiʻekiʻe o 3.7 kekona me ka hoʻopau ʻana i ke ʻano MSLAB, ma ka papa ʻaina me hoʻokahi ʻāpana, me BlockCache i hoʻohana ʻia, BlockSize = 16, nā moʻolelo o 100 bytes, 10 mau ʻāpana i kēlā me kēia pā.
Loaʻa ka wikiwiki hoʻokomo haʻahaʻa o 82.8 sec me ka hoʻohana ʻana i ke ʻano MSLAB, ma kahi pākaukau me hoʻokahi ʻāpana, me BlockCache i hiki, BlockSize = 16, nā moʻolelo o 10000 bytes, 1 kēlā me kēia.

I kēia manawa, e nānā kākou i ke kumu hoʻohālike. ʻIke mākou i ka maikaʻi maikaʻi o ke kumu hoʻohālike e pili ana iā R2, akā maopopo loa ua contraindicated ka extrapolation ma aneʻi. ʻAʻole pono ka hana maoli o ka ʻōnaehana i ka wā e loli ai nā ʻāpana; ʻaʻole pono kēia kumu hoʻohālike no ka wānana, akā no ka hoʻomaopopo ʻana i ka mea i hana ʻia i loko o nā ʻāpana i hāʻawi ʻia. Eia kekahi laʻana, ʻike mākou mai ka ʻōlelo a ka haumāna ʻaʻole pono nā ʻāpana BlockSize a me BlockCache no ka hana Put (ʻo ia ka mea hiki ke wānana):

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Akā ʻo ka hoʻonui ʻana i ka nui o nā ʻāpana e alakaʻi i ka emi ʻana o ka hana ʻana i kahi mea i manaʻo ʻole ʻia (ua ʻike mua mākou i ka hopena maikaʻi o ka hoʻonui ʻana i ka helu o nā ʻāpana me BulkLoad), ʻoiai hiki ke hoʻomaopopo. ʻO ka mea mua, no ka hana ʻana, pono ʻoe e hoʻopuka i nā noi i 30 mau ʻāina ma kahi o hoʻokahi, a ʻaʻole like ka nui o ka ʻikepili e loaʻa ai kahi waiwai. ʻO ka lua, ʻo ka nui o ka manawa hana e hoʻoholo ʻia e ka RS lohi, a no ka mea ʻoi aku ka liʻiliʻi o ka helu DataNodes ma mua o ka helu o RS, ʻaʻohe wahi kūloko o kekahi mau wahi. ʻAe, e nānā kākou i nā ʻelima kiʻekiʻe:

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
I kēia manawa e loiloi i nā hopena o ka hoʻokō ʻana i nā poloka Get:

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Ua nalowale ka nui o nā ʻāpana, ʻo ia paha ka mea i wehewehe ʻia e ka ʻoiaʻiʻo ua hūnā maikaʻi ʻia ka ʻikepili a ʻo ka cache heluhelu ka mea nui loa (statistical). Ma keʻano maʻamau, ʻo ka hoʻonui ʻana i ka helu o nā memo i kahi noi he mea pono loa no ka hana. Nā helu kiʻekiʻe:

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
ʻAe, ʻo ka hope, e nānā kākou i ke kumu hoʻohālike o ka poloka i hana mua ʻia e loaʻa a laila kau:

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
He mea nui nā ʻāpana āpau ma ʻaneʻi. A me nā hopena o nā alakaʻi:

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase

9. Hoʻāʻo hoʻouka

ʻAe, i ka hopena, e hoʻomaka mākou i kahi ukana ʻoi aku ka maikaʻi a i ʻole, akā ʻoi aku ka hoihoi inā loaʻa iā ʻoe kahi mea e hoʻohālikelike ai. Ma ka pūnaewele o DataStax, ka mea hoʻomohala koʻikoʻi o Cassandra, aia Nā hualoaʻa NT o kekahi mau waihona NoSQL, me ka mana HBase 0.98.6-1. Lawe ʻia ka hoʻouka ʻana e 40 mau kaula, ka nui o ka ʻikepili 100 bytes, SSD disks. ʻO ka hopena o ka hoʻāʻo ʻana i nā hana Read-Modify-Write i hōʻike i nā hopena aʻe.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
E like me kaʻu i hoʻomaopopo ai, ua lawe ʻia ka heluhelu ʻana ma nā poloka o 100 mau moʻolelo a no 16 HBase nodes, hōʻike ka hōʻike DataStax i kahi hana o 10 tausani mau hana i kēlā me kēia kekona.

He mea laki i kā mākou hui pū kekahi he 16 nodes, akā ʻaʻole ia he "laki" i kēlā me kēia me 64 cores (nā kaula), ʻoiai i ka hōʻike DataStax aia wale nō 4. Ma ka ʻaoʻao ʻē aʻe, loaʻa iā lākou nā drive SSD, ʻoiai mākou i nā HDD. a ʻoi aku ka nui o ka mana hou o ka HBase a me ka hoʻohana ʻana i ka CPU i ka wā o ka hoʻouka ʻana ʻaʻole i hoʻonui nui ʻia (ʻike ʻia e 5-10 pakeneka). Eia naʻe, e hoʻomaka kākou e hoʻohana i kēia hoʻonohonoho. ʻO nā hoʻonohonoho papaʻaina paʻamau, hana ʻia ka heluhelu ʻana ma ke kī kī mai 0 a 50 miliona ma ke ʻano maʻamau (ʻo ia hoʻi, he mea hou i kēlā me kēia manawa). Aia ka papa ʻaina he 50 miliona mau moʻolelo, i māhele ʻia i 64 mau ʻāpana. Hoʻopili ʻia nā kī me ka crc32. He paʻamau ka hoʻonohonoho papa, hiki iā MSLAB. I ka hoʻomaka ʻana i nā pae 40, heluhelu kēlā me kēia pae i kahi hoʻonohonoho o 100 mau kī kīpē a kākau koke i nā 100 bytes i hana ʻia i kēia mau kī.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Kū: 16 DataNode a me 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 mau kaula). HBase mana 1.2.0-cdh5.14.2.

ʻOi aku ka hopena maʻamau i ka 40 tausani mau hana i kēlā me kēia kekona, ʻoi aku ka maikaʻi ma mua o ka hōʻike DataStax. Eia naʻe, no nā hana hoʻokolohua, hiki iā ʻoe ke hoʻololi iki i nā kūlana. ʻAʻole paha e hana ʻia nā hana a pau ma ka papa hoʻokahi wale nō, a ma nā kī kū hoʻokahi wale nō. E noʻonoʻo kākou aia kekahi "wela" o nā kī e hoʻopuka i ka ukana nui. No laila, e ho'āʻo kākou e hana i ka ukana me nā moʻolelo ʻoi aku ka nui (10 KB), a ma nā pūʻulu o 100, ma 4 mau papa ʻokoʻa a me ka kaupalena ʻana i ka laulā o nā kī i noi ʻia i 50 tausani. Hōʻike ka pakuhi ma lalo nei i ka hoʻomaka ʻana o nā kaula he 40, heluhelu ʻia kēlā me kēia pae. he 100 mau kī a kākau koke i 10 KB ma kēia mau kī.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Kū: 16 DataNode a me 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 mau kaula). HBase mana 1.2.0-cdh5.14.2.

I ka wā o ka hoʻouka ʻana, ua hoʻokuʻu ʻia ka compaction nui i nā manawa he nui, e like me ka mea i hōʻike ʻia ma luna, me ka ʻole o kēia kaʻina hana, e hoʻohaʻahaʻa haʻahaʻa ka hana, akā naʻe, piʻi aʻe ka ukana hou i ka wā o ka hoʻokō. Hoʻokumu ʻia ka huki ʻana e nā kumu like ʻole. I kekahi manawa ua pau ka hana ʻana o nā kaula a ua hoʻomaha ʻia i ka wā e hoʻomaka hou ana, i kekahi manawa ua hana nā noi ʻaoʻao ʻekolu i kahi ukana ma ka pūpū.

ʻO ka heluhelu a kākau koke ʻana kekahi o nā hiʻohiʻona hana paʻakikī loa no HBase. Inā hana ʻoe i nā noi liʻiliʻi liʻiliʻi, no ka laʻana 100 bytes, e hui pū ana iā lākou i loko o nā ʻāpana o 10-50 tausani mau ʻāpana, hiki iā ʻoe ke loaʻa i nā haneli haneli o nā hana i kēlā me kēia kekona, a ua like ke kūlana me nā noi heluhelu wale nō. He mea pono e hoʻomaopopo he ʻoi aku ka maikaʻi o nā hopena ma mua o nā mea i loaʻa e DataStax, ʻoi loa ma muli o nā noi i nā poloka o 50 tausani.

ʻO ke kumumanaʻo a me ka hana o ka hoʻohana ʻana iā HBase
Kū: 16 DataNode a me 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 mau kaula). HBase mana 1.2.0-cdh5.14.2.

10. Manao

Hoʻonohonoho ʻia kēia ʻōnaehana, akā ʻaʻole ʻike ʻia ka mana o ka nui o nā ʻāpana. Ua ho'āʻoʻia kekahi o lākou, akā,ʻaʻole i hoʻokomoʻia i loko o ka hopena ho'āʻo. No ka laʻana, ua hōʻike ʻia nā hoʻokolohua mua i ke ʻano koʻikoʻi o kahi ʻāpana e like me DATA_BLOCK_ENCODING, ka mea e hoʻopili ai i ka ʻike me ka hoʻohana ʻana i nā waiwai mai nā cell e pili ana, hiki ke hoʻomaopopo ʻia no ka ʻikepili i hana ʻia. Inā hoʻohana ʻoe i kahi helu nui o nā mea ʻelua, hiki ke loaʻa ka waiwai. Ma ka laulā, hiki iā mākou ke ʻōlelo e hāʻawi ʻo HBase i ka manaʻo o kahi waihona koʻikoʻi koʻikoʻi a noʻonoʻo maikaʻi ʻia, hiki ke hoʻohua nui i ka wā e hana ai i nā hana me nā poloka nui o ka ʻikepili. ʻOi loa inā hiki ke hoʻokaʻawale i nā kaʻina heluhelu a me ke kākau ʻana i ka manawa.

Inā aia kekahi mea i kou manaʻo ʻaʻole i hōʻike ʻia, ua mākaukau wau e haʻi aku iā ʻoe i nā kikoʻī hou aku. Ke kono nei mākou iā ʻoe e kaʻana like i kāu ʻike a kūkākūkā paha inā ʻae ʻole ʻoe i kekahi mea.

Source: www.habr.com

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