Yii ati asa ti lilo HBase

E kaasan Orukọ mi ni Danil Lipovoy, ẹgbẹ wa ni Sbertech bẹrẹ lilo HBase bi ibi ipamọ fun data iṣẹ. Lakoko ikẹkọ rẹ, iriri ti ṣajọpọ ti Mo fẹ lati ṣe eto ati ṣalaye (a nireti pe yoo wulo fun ọpọlọpọ). Gbogbo awọn idanwo ti o wa ni isalẹ ni a ṣe pẹlu awọn ẹya HBase 1.2.0-cdh5.14.2 ati 2.0.0-cdh6.0.0-beta1.

  1. Gbogbogbo faaji
  2. Kikọ data si HBASE
  3. Awọn data kika lati HBASE
  4. Iṣakojọpọ data
  5. Ipejọpọ data processing MultiGet/MultiPut
  6. Ilana fun pipin awọn tabili si awọn agbegbe (pipin)
  7. Ifarada aṣiṣe, iwapọ ati agbegbe data
  8. Eto ati iṣẹ
  9. Idanwo Wahala
  10. awari

1. Gbogbogbo faaji

Yii ati asa ti lilo HBase
Titunto si afẹyinti tẹtisi lilu ọkan ti ọkan ti nṣiṣe lọwọ lori ipade ZooKeeper ati, ni ọran ti piparẹ, gba awọn iṣẹ ti oluwa.

2. Kọ data si HBASE

Ni akọkọ, jẹ ki a wo ọran ti o rọrun julọ - kikọ nkan-iye bọtini si tabili nipa lilo put(rowkey). Onibara gbọdọ kọkọ wa ibi ti Gbongbo Region Server (RRS), eyiti o tọju hbase: tabili meta, wa. O gba alaye yii lati ọdọ ZooKeeper. Lẹhin eyi o wọle si RRS o si ka hbase: meta tabili, lati inu eyiti o yọ alaye jade nipa eyiti RegionServer (RS) jẹ iduro fun titoju data fun rowkey ti a fun ni tabili iwulo. Fun lilo ojo iwaju, tabili meta ti wa ni ipamọ nipasẹ alabara ati nitorinaa awọn ipe ti o tẹle ni iyara, taara si RS.

Nigbamii ti, RS, ti o ti gba ibeere kan, akọkọ kọ ọ si WriteAheadLog (WAL), eyiti o jẹ dandan fun gbigba pada ni idi ti jamba. Lẹhinna fi data pamọ si MemStore. Eyi jẹ ifipamọ ni iranti ti o ni eto tito lẹsẹsẹ ti awọn bọtini fun agbegbe ti a fun. A le pin tabili kan si awọn agbegbe (awọn ipin), ọkọọkan eyiti o ni akojọpọ awọn bọtini ti a pin. Eyi n gba ọ laaye lati gbe awọn agbegbe lori awọn olupin oriṣiriṣi lati ṣaṣeyọri iṣẹ ṣiṣe ti o ga julọ. Sibẹsibẹ, pelu ifarahan ti alaye yii, a yoo rii nigbamii pe eyi ko ṣiṣẹ ni gbogbo igba.

Lẹhin fifi titẹ sii sinu MemStore, esi kan pada si alabara pe titẹ sii ti wa ni fipamọ ni aṣeyọri. Bibẹẹkọ, ni otitọ o wa ni ipamọ nikan ni ifipamọ ati gba si disk nikan lẹhin akoko kan ti o ti kọja tabi nigbati o kun fun data tuntun.

Yii ati asa ti lilo HBase
Nigbati o ba n ṣiṣẹ “Paarẹ”, data ko ni paarẹ nipa ti ara. Wọn ti samisi ni irọrun bi paarẹ, ati iparun funrararẹ waye ni akoko pipe iṣẹ iwapọ pataki, eyiti o ṣapejuwe ni awọn alaye diẹ sii ni paragi 7.

Awọn faili ni ọna kika HFile ti wa ni akojo ni HDFS ati lati akoko si akoko ilana iwapọ kekere ti ṣe ifilọlẹ, eyiti o dapọpọ awọn faili kekere sinu awọn ti o tobi laisi piparẹ ohunkohun. Ni akoko pupọ, eyi yipada si iṣoro ti o han nikan nigbati kika data (a yoo pada wa si eyi diẹ diẹ).

Ni afikun si ilana ikojọpọ ti a ṣalaye loke, ilana ti o munadoko diẹ sii wa, eyiti o jẹ boya ẹgbẹ ti o lagbara julọ ti data data yii - BulkLoad. O wa ni otitọ pe a ṣe agbekalẹ HFiles ni ominira ati fi wọn sori disiki, eyiti o fun wa laaye lati ṣe iwọn ni pipe ati ṣaṣeyọri awọn iyara to bojumu. Ni otitọ, aropin nibi kii ṣe HBase, ṣugbọn awọn agbara ti ohun elo. Ni isalẹ ni awọn abajade bata lori iṣupọ kan ti o ni 16 RegionServers ati 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 awọn okun), ẹya HBase 1.2.0-cdh5.14.2.

Yii ati asa ti lilo HBase

Nibi o le rii pe nipa jijẹ nọmba awọn ipin (awọn agbegbe) ninu tabili, ati awọn apaniyan Spark, a ni alekun iyara igbasilẹ. Paapaa, iyara da lori iwọn gbigbasilẹ. Awọn bulọọki nla n fun ilosoke ni MB / iṣẹju-aaya, awọn bulọọki kekere ni nọmba awọn igbasilẹ ti a fi sii fun ẹyọkan akoko, gbogbo awọn ohun miiran jẹ dogba.

O tun le bẹrẹ ikojọpọ sinu awọn tabili meji ni akoko kanna ati gba iyara ilọpo meji. Ni isalẹ o le rii pe kikọ awọn bulọọki 10 KB si awọn tabili meji ni ẹẹkan waye ni iyara ti iwọn 600 MB / iṣẹju-aaya ni ọkọọkan (lapapọ 1275 MB / iṣẹju-aaya), eyiti o ṣe deede pẹlu iyara kikọ si tabili kan 623 MB / iṣẹju-aaya (wo No. 11 loke)

Yii ati asa ti lilo HBase
Ṣugbọn ṣiṣe keji pẹlu awọn igbasilẹ ti 50 KB fihan pe iyara igbasilẹ n dagba diẹ, eyiti o tọka si pe o sunmọ awọn iye iye. Ni akoko kanna, o nilo lati ni lokan pe ko si ẹru ti o ṣẹda lori HBASE funrararẹ, gbogbo ohun ti o nilo fun ni lati kọkọ fun data lati hbase:meta, ati lẹhin tito HFiles, tunto data BlockCache ki o fipamọ Ifipamọ MemStore si disk, ti ​​ko ba ṣofo.

3. Kika data lati HBASE

Ti a ba ro pe alabara ti ni gbogbo alaye lati hbase:meta (wo aaye 2), lẹhinna ibeere naa lọ taara si RS nibiti bọtini ti a beere ti wa ni ipamọ. Ni akọkọ, a ṣe wiwa ni MemCache. Laibikita boya data wa nibẹ tabi rara, wiwa tun ṣe ni ifipamọ BlockCache ati, ti o ba jẹ dandan, ni HFiles. Ti a ba rii data ninu faili naa, o wa ni BlockCache ati pe yoo da pada ni iyara lori ibeere atẹle. Wiwa ni HFile jẹ iyara diẹ sii ọpẹ si lilo àlẹmọ Bloom, i.e. Lehin ti o ti ka iye kekere ti data, o pinnu lẹsẹkẹsẹ boya faili yii ni bọtini ti a beere ati ti kii ba ṣe bẹ, lẹhinna gbe lọ si ekeji.

Yii ati asa ti lilo HBase
Lehin ti o ti gba data lati awọn orisun mẹta wọnyi, RS ṣe agbekalẹ esi kan. Ni pataki, o le gbe ọpọlọpọ awọn ẹya ti a rii ti ohun kan ni ẹẹkan ti alabara ba beere ẹya.

4. Data caching

MemStore ati BlockCache buffers gba to 80% ti iranti RS lori-okiti (iyokù wa ni ipamọ fun awọn iṣẹ ṣiṣe RS). Ti ipo lilo aṣoju jẹ iru awọn ilana kọ ati lẹsẹkẹsẹ ka data kanna, lẹhinna o jẹ oye lati dinku BlockCache ati mu MemStore pọ si, nitori Nigbati kikọ data ko wọle sinu kaṣe fun kika, BlockCache yoo ṣee lo kere si nigbagbogbo. Ifipamọ BlockCache ni awọn ẹya meji: LruBlockCache (nigbagbogbo lori-okiti) ati BucketCache (nigbagbogbo pipa-okiti tabi lori SSD). BucketCache yẹ ki o lo nigbati ọpọlọpọ awọn ibeere kika ba wa ati pe wọn ko ni ibamu si LruBlockCache, eyiti o yori si iṣẹ ṣiṣe ti Akopọ idoti. Ni akoko kanna, o yẹ ki o ko nireti ilosoke ipasẹ ninu iṣẹ lati lilo kaṣe kika, ṣugbọn a yoo pada si eyi ni ìpínrọ 8

Yii ati asa ti lilo HBase
BlockCache kan wa fun gbogbo RS, ati MemStore kan wa fun tabili kọọkan (ọkan fun idile Ọwọn kọọkan).

Bawo ni ṣàpèjúwe ni yii, nigba kikọ, data ko lọ sinu kaṣe ati nitootọ, iru sile CACHE_DATA_ON_WRITE fun tabili ati "kaṣe DATA on Kọ" fun RS ti ṣeto si eke. Bibẹẹkọ, ni iṣe, ti a ba kọ data si MemStore, lẹhinna fi omi ṣan si disk (bayi nu kuro), lẹhinna paarẹ faili ti o yọrisi, lẹhinna nipa ṣiṣe ibeere gbigba a yoo gba data naa ni aṣeyọri. Pẹlupẹlu, paapaa ti o ba mu BlockCache kuro patapata ki o kun tabili pẹlu data tuntun, lẹhinna tun MemStore to disk, paarẹ wọn ki o beere wọn lati igba miiran, wọn yoo tun gba lati ibikan. Nitorinaa HBase tọju kii ṣe data nikan, ṣugbọn awọn ohun ijinlẹ aramada tun.

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

“Kaṣe DATA lori Ka” paramita ti ṣeto si eke. Ti o ba ni awọn imọran eyikeyi, kaabọ lati jiroro rẹ ninu awọn asọye.

5. Batch data processing MultiGet / MultiPut

Ṣiṣe awọn ibeere ẹyọkan (Gba / Fi / Paarẹ) jẹ iṣẹ ti o gbowolori pupọ, nitorinaa ti o ba ṣeeṣe, o yẹ ki o darapọ wọn sinu Akojọ tabi Akojọ, eyiti o fun ọ laaye lati ni igbelaruge iṣẹ ṣiṣe pataki. Eyi jẹ otitọ paapaa fun iṣẹ kikọ, ṣugbọn nigbati o ba n ka iwe, ọfin atẹle wa. Aworan ti o wa ni isalẹ fihan akoko lati ka awọn igbasilẹ 50 lati MemStore. A ṣe kika kika ni okun kan ati ipo petele fihan nọmba awọn bọtini ninu ibeere naa. Nibi o le rii pe nigbati o ba pọ si awọn bọtini ẹgbẹrun kan ninu ibeere kan, akoko ipaniyan lọ silẹ, i.e. iyara pọ si. Bibẹẹkọ, pẹlu ipo MSLAB ti o ṣiṣẹ nipasẹ aiyipada, lẹhin ala-ilẹ yii isọbu isọdi ti iṣẹ bẹrẹ, ati pe iye data ti o tobi julọ ninu igbasilẹ naa, akoko iṣẹ naa gun.

Yii ati asa ti lilo HBase

Awọn idanwo ni a ṣe lori ẹrọ foju kan, awọn ohun kohun 8, ẹya HBase 2.0.0-cdh6.0.0-beta1.

Ipo MSLAB jẹ apẹrẹ lati dinku pipin okiti, eyiti o waye nitori dapọpọ data iran tuntun ati atijọ. Gẹgẹbi iṣẹ-ṣiṣe, nigbati MSLAB ba ṣiṣẹ, a gbe data naa sinu awọn sẹẹli kekere (awọn ege) ati ṣiṣe ni awọn chunks. Bi abajade, nigbati iwọn didun ninu apo data ti o beere kọja iwọn ti a pin, iṣẹ ṣiṣe ṣubu ni kiakia. Ni apa keji, pipa ipo yii ko tun ni imọran, nitori pe yoo ja si awọn iduro nitori GC lakoko awọn akoko ṣiṣe data aladanla. Ojutu ti o dara ni lati mu iwọn sẹẹli pọ si ni ọran ti kikọ ti nṣiṣe lọwọ nipasẹ fi ni akoko kanna bi kika. O tọ lati ṣe akiyesi pe iṣoro naa ko waye ti, lẹhin igbasilẹ, o ṣiṣẹ pipaṣẹ fifọ, eyiti o tun MemStore pada si disiki, tabi ti o ba fifuye nipa lilo BulkLoad. Tabili ti o wa ni isalẹ fihan pe awọn ibeere lati MemStore fun data ti o tobi (ati iye kanna) ja si awọn idinku. Sibẹsibẹ, nipa jijẹ chunksize a pada awọn processing akoko si deede.

Yii ati asa ti lilo HBase
Ni afikun si jijẹ chunksize, pipin data nipasẹ agbegbe iranlọwọ, i.e. tabili pipin. Eyi ṣe abajade awọn ibeere diẹ ti o nbọ si agbegbe kọọkan ati pe ti wọn ba wọ inu sẹẹli kan, idahun si dara.

6. Ilana fun pipin awọn tabili si awọn agbegbe (pipin)

Niwọn igba ti HBase jẹ ibi ipamọ iye-bọtini ati ipin ni a ṣe nipasẹ bọtini, o ṣe pataki pupọ lati pin data ni boṣeyẹ kọja gbogbo awọn agbegbe. Fun apẹẹrẹ, pipin iru tabili kan si awọn ẹya mẹta yoo mu ki data naa pin si awọn agbegbe mẹta:

Yii ati asa ti lilo HBase
O ṣẹlẹ pe eyi nyorisi idinku didasilẹ ti data ti kojọpọ nigbamii dabi, fun apẹẹrẹ, awọn iye gigun, pupọ julọ wọn bẹrẹ pẹlu nọmba kanna, fun apẹẹrẹ:

1000001
1000002
...
1100003

Niwọn igba ti awọn bọtini ti wa ni ipamọ bi titobi baiti, gbogbo wọn yoo bẹrẹ kanna ati pe wọn jẹ ti agbegbe kanna #1 ti o tọju ibiti awọn bọtini. Awọn ọgbọn ipin pupọ lo wa:

HexStringSplit – Yi bọtini pada si okun ti a fi koodu hexadecimal kan ni sakani "00000000" => "FFFFFFFF" ati fifẹ apa osi pẹlu awọn odo.

UniformSplit – Yi bọtini pada si ọna baiti kan pẹlu fifi koodu hexadecimal ni sakani "00" => "FF" ati padding si apa ọtun pẹlu awọn odo.

Ni afikun, o le pato eyikeyi ibiti tabi ṣeto ti awọn bọtini fun pipin ati tunto auto-pipin. Bibẹẹkọ, ọkan ninu awọn ọna ti o rọrun julọ ati ti o munadoko julọ ni UniformSplit ati lilo isọdọkan hash, fun apẹẹrẹ bata meji ti o ṣe pataki julọ lati ṣiṣe bọtini nipasẹ iṣẹ CRC32(rowkey) ati rowkey funrararẹ:

elile + rowkey

Lẹhinna gbogbo data yoo pin kaakiri ni awọn agbegbe. Nigbati o ba nka, awọn baiti meji akọkọ jẹ asonu nirọrun ati pe bọtini atilẹba wa. RS tun ṣakoso iye data ati awọn bọtini ni agbegbe naa ati, ti awọn opin ba ti kọja, yoo fọ laifọwọyi si awọn apakan.

7. Ifarada aṣiṣe ati agbegbe data

Niwọn igba ti agbegbe kan nikan ni o ni iduro fun ṣeto awọn bọtini kọọkan, ojutu si awọn iṣoro ti o ni nkan ṣe pẹlu awọn ipadanu RS tabi pipasilẹ ni lati tọju gbogbo data pataki ni HDFS. Nigbati RS ba ṣubu, oluwa ṣe awari eyi nipasẹ isansa ti ọkan ọkan lori ipade ZooKeeper. Lẹhinna o fi agbegbe ti o ṣiṣẹ si RS miiran ati pe niwọn igba ti awọn HFiles ti wa ni ipamọ sinu eto faili pinpin, oniwun tuntun ka wọn ati tẹsiwaju lati sin data naa. Sibẹsibẹ, niwọn bi diẹ ninu awọn data le wa ninu MemStore ati pe ko ni akoko lati wọle si HFiles, WAL, eyiti o tun wa ni ipamọ ni HDFS, ni a lo lati mu itan-akọọlẹ awọn iṣẹ pada. Lẹhin ti awọn ayipada ti wa ni lilo, RS ni anfani lati dahun si awọn ibeere, ṣugbọn awọn gbigbe nyorisi si ni otitọ wipe diẹ ninu awọn ti awọn data ati awọn ilana sise wọn pari soke lori orisirisi awọn apa, i.e. agbegbe ti n dinku.

Ojutu si iṣoro naa jẹ iṣiro pataki - ilana yii gbe awọn faili lọ si awọn apa ti o jẹ iduro fun wọn (nibiti awọn agbegbe wọn wa), nitori abajade eyiti lakoko ilana yii fifuye lori nẹtiwọọki ati awọn disiki pọ si ni didasilẹ. Bibẹẹkọ, ni ọjọ iwaju, iraye si data jẹ iyara ni akiyesi. Ni afikun, major_compaction n ṣe idapọ ti gbogbo HFiles sinu faili kan laarin agbegbe kan, ati tun sọ di mimọ data ti o da lori awọn eto tabili. Fun apẹẹrẹ, o le pato nọmba awọn ẹya ti ohun kan ti o gbọdọ wa ni idaduro tabi igbesi aye lẹhin eyiti ohun naa ti paarẹ ni ti ara.

Ilana yii le ni ipa ti o dara pupọ lori iṣẹ ti HBase. Aworan ti o wa ni isalẹ fihan bi iṣẹ ṣe bajẹ bi abajade ti gbigbasilẹ data ti nṣiṣe lọwọ. Nibi o le rii bii awọn okun 40 ṣe kowe si tabili kan ati awọn okun 40 ni nigbakannaa ka data. Awọn okun kikọ n ṣe agbekalẹ awọn HFiles siwaju ati siwaju sii, eyiti o jẹ kika nipasẹ awọn okun miiran. Bi abajade, data siwaju ati siwaju sii nilo lati yọkuro lati iranti ati nikẹhin GC bẹrẹ iṣẹ, eyiti o rọ gbogbo iṣẹ. Ifilọlẹ iwapọ pataki yori si imukuro awọn idoti ti o yọrisi ati imupadabọ iṣẹ-ṣiṣe.

Yii ati asa ti lilo HBase
A ṣe idanwo naa lori 3 DataNodes ati 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 awọn okun). HBase version 1.2.0-cdh5.14.2

O tọ lati ṣe akiyesi pe a ṣe ifilọlẹ iwapọ pataki lori tabili “ifiweranṣẹ” kan, eyiti a ti kọ data ni agbara ati ka. Alaye kan wa lori ayelujara pe eyi le ja si esi ti ko tọ nigba kika data. Lati ṣayẹwo, ilana kan ti ṣe ifilọlẹ ti o ṣe ipilẹṣẹ data tuntun ati kọ si tabili kan. Lẹhin eyi ni mo ka lẹsẹkẹsẹ ati ṣayẹwo boya iye abajade ni ibamu pẹlu ohun ti a kọ silẹ. Lakoko ti ilana yii n ṣiṣẹ, iṣakojọpọ pataki ni a ṣiṣẹ nipa awọn akoko 200 ati pe ko ṣe igbasilẹ ikuna kan. Boya iṣoro naa han ṣọwọn ati pe lakoko fifuye giga nikan, nitorinaa o jẹ ailewu lati da kikọ silẹ ati awọn ilana kika bi a ti pinnu ati ṣiṣe mimọ lati ṣe idiwọ iru awọn iyaworan GC.

Paapaa, iṣiro pataki ko ni ipa lori ipo MemStore; lati fi omi ṣan si disk ki o si ṣe ipọpọ, o nilo lati lo ṣan (connection.getAdmin () . flush (TableName.valueOf(tblName))).

8. Eto ati iṣẹ

Gẹgẹbi a ti sọ tẹlẹ, HBase ṣe afihan aṣeyọri nla julọ nibiti ko nilo lati ṣe ohunkohun, nigba ṣiṣe BulkLoad. Sibẹsibẹ, yi kan si julọ awọn ọna šiše ati awọn eniyan. Bibẹẹkọ, ọpa yii dara julọ fun titoju data ni olopobobo ni awọn bulọọki nla, lakoko ti ilana naa ba nilo kika idije pupọ ati kikọ, awọn aṣẹ Gba ati Fi sii ti a ṣalaye loke ni a lo. Lati pinnu awọn aye ti o dara julọ, awọn ifilọlẹ ni a ṣe pẹlu ọpọlọpọ awọn akojọpọ ti awọn ipilẹ tabili ati awọn eto:

  • Awọn okun 10 ni a ṣe ifilọlẹ ni akoko kanna ni igba mẹta ni ọna kan (jẹ ki a pe eyi ni bulọọki ti awọn okun).
  • Akoko iṣẹ ti gbogbo awọn okun ti o wa ninu bulọki jẹ aropin ati pe o jẹ abajade ikẹhin ti iṣẹ-ṣiṣe Àkọsílẹ.
  • Gbogbo awọn okun ṣiṣẹ pẹlu tabili kanna.
  • Ṣaaju ki o to bẹrẹ kọọkan ti idina o tẹle ara, iṣọpọ pataki kan ti ṣe.
  • Bulọọki kọọkan ṣe ọkan ninu awọn iṣẹ wọnyi:

— Fi
-Gba
—Gba + Fi sii

  • Àkọsílẹ kọọkan ṣe 50 iterations ti iṣẹ rẹ.
  • Iwọn bulọọki ti igbasilẹ jẹ 100 baiti, 1000 baiti tabi 10000 awọn baiti (ID).
  • Awọn bulọọki ti ṣe ifilọlẹ pẹlu awọn nọmba oriṣiriṣi ti awọn bọtini ti o beere (boya bọtini kan tabi 10).
  • Awọn bulọọki naa ni a ṣiṣẹ labẹ awọn eto tabili oriṣiriṣi. Awọn paramita ti yipada:

- BlockCache = titan tabi paa
- BlockSize = 65 KB tabi 16 KB
- Awọn ipin = 1, 5 tabi 30
- MSLAB = ṣiṣẹ tabi alaabo

Nitorinaa bulọki naa dabi eyi:

a. Ipo MSLAB ti wa ni titan/paa.
b. A ṣẹda tabili fun eyiti a ṣeto awọn aye atẹle wọnyi: BlockCache = otitọ/ko si, BlockSize = 65/16 Kb, Partition = 1/5/30.
c. Funmorawon ti ṣeto si GZ.
d. Awọn okun 10 ni a ṣe ifilọlẹ ni igbakanna ṣiṣe 1/10 fi / gba / gba + fi awọn iṣẹ sinu tabili yii pẹlu awọn igbasilẹ ti 100/1000/10000 awọn baiti, ṣiṣe awọn ibeere 50 ni ọna kan (awọn bọtini ID).
e. Point d tun ni igba mẹta.
f. Akoko iṣẹ ti gbogbo awọn okun jẹ aropin.

Gbogbo awọn akojọpọ ti o ṣeeṣe ni idanwo. O jẹ asọtẹlẹ pe iyara yoo lọ silẹ bi iwọn igbasilẹ ti n pọ si, tabi pe piparẹ caching yoo fa idinku. Bibẹẹkọ, ibi-afẹde ni lati loye iwọn ati pataki ti ipa ti paramita kọọkan, nitorinaa data ti a gba ni ifunni sinu kikọ sii ti iṣẹ ipadasẹhin laini, eyiti o jẹ ki o ṣee ṣe lati ṣe iṣiro pataki nipa lilo t-statistiki. Ni isalẹ wa awọn abajade ti awọn bulọọki ti n ṣe awọn iṣẹ Fi. Eto kikun ti awọn akojọpọ 2*2*3*2*3 = 144 awọn aṣayan + 72 tk. diẹ ninu awọn ti a ṣe lemeji. Nitorinaa, awọn ṣiṣe 216 wa lapapọ:

Yii ati asa ti lilo HBase
Idanwo ni a ṣe lori iṣupọ-kekere kan ti o ni 3 DataNodes ati 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 awọn okun). HBase version 1.2.0-cdh5.14.2.

Iyara ifibọ ti o ga julọ ti awọn aaya 3.7 ni a gba pẹlu ipo MSLAB ni pipa, lori tabili pẹlu ipin kan, pẹlu BlockCache ṣiṣẹ, BlockSize = 16, awọn igbasilẹ ti awọn baiti 100, awọn ege 10 fun idii.
Iyara ifibọ ti o kere julọ ti 82.8 iṣẹju-aaya ni a gba pẹlu ipo MSLAB ṣiṣẹ, lori tabili pẹlu ipin kan, pẹlu BlockCache ṣiṣẹ, BlockSize = 16, awọn igbasilẹ ti awọn baiti 10000, 1 kọọkan.

Bayi jẹ ki a wo awoṣe naa. A ri awọn ti o dara didara awoṣe da lori R2, sugbon o jẹ Egba ko o pe extrapolation ti wa ni contraindicated nibi. Ihuwasi gangan ti eto nigbati awọn paramita yipada kii yoo jẹ laini; awoṣe yii ko nilo fun awọn asọtẹlẹ, ṣugbọn fun oye ohun ti o ṣẹlẹ laarin awọn aye ti a fun. Fun apẹẹrẹ, nibi ti a rii lati ami-ami ọmọ ile-iwe pe awọn iwọn BlockSize ati BlockCache ko ṣe pataki fun iṣẹ Fi (eyiti o jẹ asọtẹlẹ ni gbogbogbo):

Yii ati asa ti lilo HBase
Ṣugbọn otitọ pe jijẹ nọmba awọn ipin ti o yori si idinku ninu iṣẹ jẹ airotẹlẹ diẹ (a ti rii ipa rere ti jijẹ nọmba awọn ipin pẹlu BulkLoad), botilẹjẹpe oye. Ni akọkọ, fun sisẹ, o ni lati ṣe agbekalẹ awọn ibeere si awọn agbegbe 30 dipo ọkan, ati iwọn didun data kii ṣe pe eyi yoo mu ere kan. Ni ẹẹkeji, apapọ akoko iṣẹ ni ipinnu nipasẹ RS ti o lọra, ati pe niwọn igba ti nọmba DataNodes kere si nọmba awọn RS, diẹ ninu awọn agbegbe ni agbegbe odo. O dara, jẹ ki a wo awọn oke marun:

Yii ati asa ti lilo HBase
Bayi jẹ ki a ṣe iṣiro awọn abajade ti ṣiṣe Gba awọn bulọọki:

Yii ati asa ti lilo HBase
Nọmba awọn ipin ti padanu pataki, eyiti o ṣee ṣe alaye nipasẹ otitọ pe data ti wa ni ipamọ daradara ati kaṣe kika jẹ pataki julọ (iṣiro). Nipa ti, jijẹ nọmba awọn ifiranṣẹ ninu ibeere kan tun wulo pupọ fun iṣẹ ṣiṣe. Awọn ikun ti o ga julọ:

Yii ati asa ti lilo HBase
O dara, nikẹhin, jẹ ki a wo awoṣe ti bulọọki ti o ṣe akọkọ gba ati lẹhinna fi:

Yii ati asa ti lilo HBase
Gbogbo awọn paramita jẹ pataki nibi. Ati awọn abajade ti awọn oludari:

Yii ati asa ti lilo HBase

9. Igbeyewo fifuye

O dara, nikẹhin a yoo ṣe ifilọlẹ ẹru to dara diẹ sii tabi kere si, ṣugbọn o jẹ igbadun nigbagbogbo nigbati o ni nkan lati ṣe afiwe pẹlu. Lori oju opo wẹẹbu ti DataStax, olupilẹṣẹ bọtini ti Cassandra, wa Awọn esi NT ti nọmba awọn ibi ipamọ NoSQL, pẹlu ẹya HBase 0.98.6-1. Ikojọpọ ni a ṣe nipasẹ awọn okun 40, iwọn data 100 awọn baiti, awọn disiki SSD. Abajade ti idanwo awọn iṣẹ ṣiṣe Ka-Ṣatunkọ-Kọ fihan awọn abajade atẹle.

Yii ati asa ti lilo HBase
Niwọn bi mo ti ye mi, a ṣe kika kika ni awọn bulọọki ti awọn igbasilẹ 100 ati fun awọn apa HBase 16, idanwo DataStax fihan iṣẹ ṣiṣe ti 10 ẹgbẹrun awọn iṣẹ fun iṣẹju kan.

O ni orire pe iṣupọ wa tun ni awọn apa 16, ṣugbọn kii ṣe “orire” pupọ pe ọkọọkan ni awọn ohun kohun 64 (awọn o tẹle), lakoko ti idanwo DataStax nikan wa 4. Ni apa keji, wọn ni awọn awakọ SSD, lakoko ti a ni HDDs. tabi diẹ sii ẹya tuntun ti HBase ati iṣamulo Sipiyu lakoko fifuye ni adaṣe ko pọ si ni pataki (oju nipasẹ 5-10 ogorun). Sibẹsibẹ, jẹ ki a gbiyanju lati bẹrẹ lilo iṣeto yii. Awọn eto tabili aiyipada, kika ni a ṣe ni iwọn bọtini lati 0 si 50 milionu laileto (ie, pataki ni gbogbo igba). Tabili naa ni awọn igbasilẹ miliọnu 50, pin si awọn ipin 64. Awọn bọtini ti wa ni hashed nipa lilo crc32. Eto tabili jẹ aiyipada, MSLAB ti ṣiṣẹ. Ifilọlẹ awọn okun 40, o tẹle ara kọọkan ka akojọpọ awọn bọtini ID 100 ati lẹsẹkẹsẹ kọ awọn baiti 100 ti ipilẹṣẹ pada si awọn bọtini wọnyi.

Yii ati asa ti lilo HBase
Iduro: 16 DataNode ati 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 awọn okun). HBase version 1.2.0-cdh5.14.2.

Abajade apapọ jẹ isunmọ si awọn iṣẹ ẹgbẹrun 40 fun iṣẹju kan, eyiti o dara ni pataki ju ninu idanwo DataStax. Sibẹsibẹ, fun awọn idi idanwo, o le yi awọn ipo pada diẹ. Ko ṣeeṣe pe gbogbo iṣẹ yoo ṣee ṣe ni iyasọtọ lori tabili kan, ati tun lori awọn bọtini alailẹgbẹ nikan. Jẹ ki a ro pe awọn bọtini “gbona” kan wa ti o ṣe agbejade fifuye akọkọ. Nitorina, jẹ ki a gbiyanju lati ṣẹda fifuye pẹlu awọn igbasilẹ ti o tobi ju (10 KB), tun ni awọn ipele ti 100, ni awọn tabili oriṣiriṣi mẹrin 4 ati idiwọn awọn bọtini ti a beere si 50 ẹgbẹrun. Awọn aworan ti o wa ni isalẹ fihan ifilọlẹ ti awọn okun 40, okun kọọkan ka kika. ṣeto awọn bọtini 100 ati lẹsẹkẹsẹ kọ ID 10 KB lori awọn bọtini wọnyi pada.

Yii ati asa ti lilo HBase
Iduro: 16 DataNode ati 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 awọn okun). HBase version 1.2.0-cdh5.14.2.

Lakoko ẹru naa, a ti ṣe ifilọlẹ ikọlu nla ni ọpọlọpọ igba, bi a ti han loke, laisi ilana yii, iṣẹ ṣiṣe yoo dinku diẹdiẹ, sibẹsibẹ, ẹru afikun tun dide lakoko ipaniyan. Drawdowns ti wa ni ṣẹlẹ nipasẹ orisirisi idi. Nigba miiran awọn okun naa pari iṣẹ ati idaduro duro lakoko ti wọn tun bẹrẹ, nigbakan awọn ohun elo ẹnikẹta ṣẹda fifuye lori iṣupọ naa.

Kika ati kikọ lẹsẹkẹsẹ jẹ ọkan ninu awọn oju iṣẹlẹ iṣẹ ti o nira julọ fun HBase. Ti o ba ṣe awọn ibeere kekere nikan, fun apẹẹrẹ awọn baiti 100, apapọ wọn sinu awọn akopọ ti 10-50 ẹgbẹrun awọn ege, o le gba awọn ọgọọgọrun egbegberun awọn iṣẹ fun iṣẹju keji, ati pe ipo naa jẹ iru pẹlu awọn ibeere kika-nikan. O ṣe akiyesi pe awọn abajade dara julọ ju awọn ti o gba nipasẹ DataStax, pupọ julọ nitori awọn ibeere ni awọn bulọọki ti 50 ẹgbẹrun.

Yii ati asa ti lilo HBase
Iduro: 16 DataNode ati 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 awọn okun). HBase version 1.2.0-cdh5.14.2.

10. Awọn ipari

Eto yii jẹ tunto ni irọrun, ṣugbọn ipa ti nọmba nla ti awọn paramita si tun jẹ aimọ. Diẹ ninu wọn ni idanwo, ṣugbọn wọn ko wa ninu eto idanwo abajade. Fun apẹẹrẹ, awọn adanwo alakọbẹrẹ ṣe afihan pataki ti ko ṣe pataki ti iru paramita bii DATA_BLOCK_ENCODING, eyiti o ṣe koodu alaye nipa lilo awọn iye lati awọn sẹẹli adugbo, eyiti o jẹ oye fun data ti ipilẹṣẹ laileto. Ti o ba lo nọmba nla ti awọn nkan ẹda, ere le jẹ pataki. Ni gbogbogbo, a le sọ pe HBase n funni ni iwunilori ti iṣẹtọ to ṣe pataki ati ibi ipamọ data ti a ti ronu daradara, eyiti o le jẹ iṣelọpọ pupọ nigbati o ba n ṣiṣẹ pẹlu awọn bulọọki nla ti data. Paapa ti o ba ṣee ṣe lati ya awọn ilana kika ati kikọ ni akoko.

Ti ohun kan ba wa ninu ero rẹ ti ko ṣe afihan to, Mo ṣetan lati sọ fun ọ ni awọn alaye diẹ sii. A pe o lati pin iriri rẹ tabi jiroro ti o ko ba gba nkan kan.

orisun: www.habr.com

Fi ọrọìwòye kun