Aragtida iyo dhaqanka isticmaalka HBase

Galab wanaagsan Magacaygu waa Danil Lipovoy, kooxdayada Sbertech waxay bilaabeen isticmaalka HBase kayd ahaan xogta hawlgalka. Inta lagu guda jiro daraasadda, waayo-aragnimada ayaa urursatay oo aan rabay in aan nidaamiyo oo qeexo (waxaan rajeyneynaa in ay faa'iido u yeelan doonto qaar badan). Dhammaan tijaabooyinka hoose waxaa lagu sameeyay noocyada HBase 1.2.0-cdh5.14.2 iyo 2.0.0-cdh6.0.0-beta1.

  1. Dhismaha guud
  2. Xogta loo qorayo HBASE
  3. Akhrinta xogta HBASE
  4. Kaydinta xogta
  5. Dufcaddii xogta habaynta MultiGet/MultiPut
  6. Istaraatiijiyad lagu kala qaybiyo miisaska gobollada (kala qaybinta)
  7. Dulqaadka qaladka, isafgaradka iyo xogta deegaanka
  8. Dejinta iyo waxqabadka
  9. Tijaabada Cadaadiska
  10. natiijooyinka

1. Dhismaha guud

Aragtida iyo dhaqanka isticmaalka HBase
Master-ka kaydka ahi waxa uu dhegeystaa garaaca wadnaha kan firfircoon ee noodhka ZooKeeper oo, haddii la waayo, waxa uu la wareegayaa hawlaha sayidkiisa.

2. U qor xogta HBASE

Marka hore, aan eegno kiiska ugu fudud - qorista shay-qiimo muhiim ah miiska iyadoo la isticmaalayo put(rowkey). Macmiilku waa inuu marka hore ogaadaa halka uu ku yaallo rootiga Gobolka Root (RRS), kaasoo kaydiya hbase: meta table. Wuxuu xogtan ka helaa ZooKeeper. Intaa ka dib waxay gasho RRS oo akhridaa hbase:meta table, kaas oo ay ka soo saarayso macluumaadka ku saabsan RegionServer (RS) ka masuulka ah kaydinta xogta safafka la bixiyay ee shaxda xiisaha. Isticmaalka mustaqbalka, miiska meta waxaa kaydiyay macmiilka sidaas darteed wicitaanada xiga waxay u socdaan si degdeg ah, si toos ah RS.

Marka xigta, RS, oo helay codsi, ugu horreyntii waxay u qortaa WriteAheadLog (WAL), taas oo lagama maarmaan u ah soo kabashada haddii shil dhaco. Kadibna waxay ku kaydisaa xogta MemStore. Kani waa kayd kayd ah oo ka kooban furayaal la kala soocay ee gobol gaar ah. Shaxda waxaa loo qaybin karaa gobollo (qaybo), mid kastaa wuxuu ka kooban yahay furayaal kala duwan. Tani waxay kuu ogolaaneysaa inaad ku dhejiso gobollada server-yada kala duwan si aad u gaarto waxqabad sare. Si kastaba ha ahaatee, inkastoo ay caddahay hadalkan, waxaan arki doonaa dambe in tani aysan shaqeynin dhammaan kiisaska.

Ka dib marka la soo geliyo MemStore, jawaabta waxa lagu soo celinayaa macmiilka in gelitaanka si guul leh loo badbaadiyay. Si kastaba ha ahaatee, xaqiiqadu waxay ku kaydsan tahay oo keliya kaydka waxayna gashaa saxanka kaliya ka dib marka wakhti go'an ay dhaafto ama marka ay buuxiso xog cusub.

Aragtida iyo dhaqanka isticmaalka HBase
Markaad samaynayso hawlgalka "Delete", xogta jidh ahaan lama tirtiro. Waxaa si fudud loogu calaamadeeyay inay yihiin kuwo la tirtiray, burburka laftiisana wuxuu dhacaa xilliga la wacayo shaqada weyn ee is haysta, kaas oo si faahfaahsan loogu qeexay cutubka 7aad.

Faylasha ku jira qaabka HFile waxay ku urursan yihiin HDFS oo waqti ka waqti ayaa la bilaabayaa habka yar yar ee isafgaradka ah, kaas oo si fudud ugu daraya faylalka yaryar kuwa waaweyn iyada oo aan waxba la tirtirin. Waqti ka dib, tani waxay isu beddeshaa dhibaato soo ifbaxda kaliya marka la akhrinayo xogta (wax yar ka dib ayaan tan ku soo laaban doonaa).

Marka lagu daro habka rarista ee kor lagu sharaxay, waxaa jira nidaam aad waxtar u leh, kaas oo laga yaabo inuu yahay dhinaca ugu xoogan ee xogtan - BulkLoad. Waxay ku jirtaa xaqiiqda ah in aan si madaxbanaan u samayno HFiles oo aan ku dhejino diskka, taas oo noo ogolaanaysa inaan si fiican u cabbirno oo aan gaarno xawaare aad u wanaagsan. Dhab ahaantii, xaddidaadda halkan maaha HBase, laakiin awoodaha qalabka. Hoos waxaa ah natiijooyinka bootinta ee kutlada ka kooban 16 RegionServers iyo 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads), nooca HBase 1.2.0-cdh5.14.2.

Aragtida iyo dhaqanka isticmaalka HBase

Halkan waxaad ku arki kartaa in kordhinta tirada qaybaha (gobolada) ee miiska, iyo sidoo kale Spark executors, waxaan helnaa korodhka xawaaraha soo dejinta. Sidoo kale, xawaaruhu wuxuu ku xiran yahay mugga duubista. Baloogyada waaweyni waxay bixiyaan korodhka MB/sek, baloogyada yaryar ee tirada diiwaannada la geliyo halbeeg kasta, dhammaan waxyaabaha kale waa siman yihiin.

Waxa kale oo aad bilaabi kartaa inaad ku shubto laba miis isku mar oo aad hesho labanlaab xawaaraha. Hoos waxa aad arki kartaa in 10 KB baloog loo qoro laba miis hal mar ay ku dhacdo xawaare dhan 600 MB/sek midkiiba (wadarta 1275 MB/sek), taas oo ku beegan xawaaraha qorista hal miis 623 MB/sec (eeg. Lambarka 11 ee sare)

Aragtida iyo dhaqanka isticmaalka HBase
Laakiin orodka labaad ee diiwaanka 50 KB wuxuu muujinayaa in xawaaraha soo dejintu uu wax yar korayo, taas oo muujinaysa inay ku soo dhowaanayso qiyamka xaddidan. Isla mar ahaantaana, waxaad u baahan tahay inaad maskaxda ku hayso in dhab ahaantii uusan jirin wax culeys ah oo lagu abuuray HBASE laftiisa, waxa kaliya ee looga baahan yahay waa in marka hore laga bixiyo xogta hbase:meta, iyo ka dib marka la daboolo HFiles, dib u dajinta xogta BlockCache oo badbaadi MemStore kaydinta saxanka, haddii aanay madhnayn.

3. Akhrinta xogta HBASE

Haddii aan u maleyno in macmiilku uu horey u haystay dhammaan macluumaadka hbase:meta (eeg barta 2), markaa codsigu wuxuu si toos ah ugu socdaa RS halkaasoo furaha loo baahan yahay lagu kaydiyo. Marka hore, raadinta waxaa lagu sameeyaa MemCache. Iyadoo aan loo eegin haddii ay jirto xog ama haddii kale, baaritaanka waxaa sidoo kale lagu sameeyaa BlockCache buffer iyo, haddii loo baahdo, gudaha HFiles. Haddii xogta laga helay faylka, waxa la dhigayaa BlockCache oo si degdeg ah ayaa loo soo celin doonaa codsiga xiga. Raadinta HFile aad ayey u dhakhso badan tahay iyadoo ay ugu wacan tahay adeegsiga shaandhada Bloomka, i.e. Marka la akhriyo xog yar, waxay isla markiiba go'aaminaysaa in faylkani uu ku jiro furaha loo baahan yahay iyo haddii kale, ka dib wuxuu u gudbaa midka xiga.

Aragtida iyo dhaqanka isticmaalka HBase
Ka dib markii xogta laga helay saddexdan ilo, RS waxay abuurtaa jawaab. Gaar ahaan, waxay wareejin kartaa dhowr nooc oo shay la helay hal mar haddii macmiilku codsado nuqul ka mid ah.

4. Kaydinta Xogta

MemStore iyo BlockCache kaydiyayaashu waxay hayaan ilaa 80% xusuusta RS-ga dul-sare ee loo qoondeeyay (inta soo hadhay waxaa loo hayaa hawlaha adeegga RS). Haddii habka isticmaalka caadiga ah uu yahay habka qorista oo isla markiiba akhri xogta isku mid ah, markaa waxa macno ah in la yareeyo BlockCache oo la kordhiyo MemStore, sababtoo ah Marka xogta la qorayo aysan u galin kaydka si wax loo akhriyo, BlockCache waxaa loo isticmaali doonaa in ka yar si joogto ah. Buffer-ka BlockCache wuxuu ka kooban yahay laba qaybood: LruBlockCache (had iyo jeer-tuulo) iyo BucketCache (caadiyan meel-tulan ama SSD). BucketCache waa in la isticmaalo marka ay jiraan codsiyo badan oo wax-akhris ah oo ayan ku habboonayn LruBlockCache, taas oo horseedaysa shaqada firfircoon ee ururiyaha qashinka. Isla mar ahaantaana, waa inaadan filaynin korodhka waxqabadka ee isticmaalka kaydinta akhriska, laakiin waxaan ku soo laaban doonaa kan cutubka 8

Aragtida iyo dhaqanka isticmaalka HBase
Waxaa jira hal BlockCache oo loogu talagalay RS-ga oo dhan, waxaana jira hal MemStore miis kasta (hal qoys kasta)

Sidee lagu tilmaamay Aragti ahaan, marka la qorayo, xogtu ma gasho kaydka oo runtii, cabbirradan CACHE_DATA_ON_WRITE ee miiska iyo "Cache DATA on Write" ee RS ayaa loo dejiyay inay been yihiin. Si kastaba ha noqotee, ficil ahaan, haddii aan u qorno xogta MemStore, ka dibna ku daadi diskka (sidaas darteed nadiifinta), ka dibna tirtir faylka natiijada, ka dibna fulinta codsiga helitaanka waxaan si guul leh u heli doonaa xogta. Waxaa intaa dheer, xitaa haddii aad gebi ahaanba joojiso BlockCache oo aad miiska ka buuxiso xog cusub, ka dibna dib u deji MemStore si aad u saxdo, tirtirto oo aad ka codsato fadhi kale, weli waa laga soo saari doonaa meel. Markaa HBase ma kaydiso xogta oo keliya, laakiin sidoo kale waxay kaydisaa siraha qarsoon.

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

Halbeegga "Cache DATA on Read" waxa loo dejiyay been. Haddii aad hayso wax fikrado ah, ku soo dhawow inaad ka hadasho faallooyinka.

5. Dufcaddii xogta habaynta MultiGet/MultiPut

Hagaajinta codsiyada kali ah (Hel/ Geli/Delete) waa hawl qaali ah, markaa haddii ay suurtogal tahay, waa inaad ku dartaa Liis ama Liis, kaas oo kuu ogolaanaya inaad hesho kor u kaca waxqabadka. Tani waxay si gaar ah run ugu tahay qalliinka qoraalka, laakiin marka aad wax akhrinayso waxaa jira godka soo socda. Jaantuska hoose waxa uu tusinayaa wakhtiga lagu akhriyo 50 diiwaanka MemStore. Akhrinta waxaa lagu sameeyay hal dun oo dhidibka jiifa wuxuu muujinayaa tirada furayaasha codsiga. Halkan waxaad ka arki kartaa in marka la kordhiyo kun furayaasha hal codsi, wakhtiga fulinta hoos u dhaco, i.e. xawligu wuu kordhiyaa. Si kastaba ha ahaatee, qaabka MSLAB ee si toos ah loo kartiyeeyay, ka dib heerkan hoos u dhaca xagjirka ah ee waxqabadka ayaa bilaabmaya, oo inta badan tirada xogta ku jirta diiwaanka, ayaa dheeraysa wakhtiga hawlgalka.

Aragtida iyo dhaqanka isticmaalka HBase

Tijaabooyin ayaa lagu sameeyay mashiinka farsamada, 8 cores, nooca HBase 2.0.0-cdh6.0.0-beta1.

Habka MSLAB waxaa loogu talagalay in lagu dhimo tafaraaruqa, taasoo ay ugu wacan tahay isku darka xogta jiilka cusub iyo kan duugga ah. Ka-hortag ahaan, marka MSLAB karti loo yeesho, xogta waxaa la geeyaa unugyo yar yar (qaybo) waxaana lagu farsameeyaa qaybo. Natiijo ahaan, marka mugga ku jira xirmada xogta la codsaday uu ka bato cabbirka loo qoondeeyay, waxqabadka ayaa si aad ah hoos ugu dhacaya. Dhanka kale, daminta qaabkan sidoo kale laguma talinayo, maadaama ay u horseedi doonto joogsi sababtoo ah GC inta lagu jiro daqiiqadaha habaynta xogta degdega ah. Xalka wanaagsani waa in la kordhiyo mugga unugga marka laga hadlayo qorista firfircoon iyadoo la iskula meel dhigayo akhrinta. Waxaa xusid mudan in dhibaatadu aysan dhicin haddii, ka dib duubista, aad maamusho amarka qulqulka, kaas oo dib u dejinaya MemStore si disk ah, ama haddii aad isticmaasho BulkLoad. Jadwalka hoose wuxuu muujinayaa in weydiimaha MemStore ee xogta ka weyn (iyo qadar isku mid ah) ay keenayso gaabis. Si kastaba ha ahaatee, marka la kordhiyo jajabka waxaan ku soo celinaa wakhtiga habaynta si caadi ah.

Aragtida iyo dhaqanka isticmaalka HBase
Marka lagu daro kordhinta jajabnaanta, kala qaybinta xogta gobolku waxay caawisaa, i.e. miiska kala qaybsanaan. Tani waxay keenaysaa in codsiyo yar oo yimaada gobol kasta iyo haddii ay ku habboon yihiin unug, jawaabtu weli way wanaagsan tahay.

6. Istaraatiijiyada shaxaha loo kala qaybinayo gobollo (kala qaybsanaan)

Maadaama HBase ay tahay kaydka qiimaha muhiimka ah iyo qaybinta lagu fuliyo furaha, aad bay muhiim u tahay in si siman xogta loogu qaybiyo dhammaan gobollada. Tusaale ahaan, in shaxdan oo kale loo qaybiyo saddex qaybood waxay keenaysaa in xogta loo qaybiyo saddex gobol:

Aragtida iyo dhaqanka isticmaalka HBase
Waxay dhacdaa in tani ay keento hoos u dhac fiiqan haddii xogta la raro hadhow ay u ekaato, tusaale ahaan, qiyamka dheer, intooda badan waxay ku bilaabmaan isla lambar, tusaale ahaan:

1000001
1000002
...
1100003

Mar haddii furayaasha loo kaydiyo qaab byte ah, kulligood isku si ayay u wada bilaaban doonaan oo waxay ka tirsan yihiin isla gobolka #1 kaydinta furayaashan kala duwan. Waxaa jira dhowr xeelado qaybin:

HexStringSplit – Waxa uu furaha u rogaa xadhkaha xarriiqda saddex-geesoodka ah ee xarriiqda "00000000" => "FFFFFFFF" iyo suufka bidix ee eber.

UniformSplit – Waxa uu furaha u rogaa array byte ah oo leh koodka hexadecimal ee u dhexeeya "00" => "FF" oo ku dhejinaya midig eber.

Intaa waxaa dheer, waxaad cayimi kartaa kala duwanaansho kasta ama furayaasha furayaasha kala-goynta iyo habaynta otomaatig-qaybinta. Si kastaba ha ahaatee, mid ka mid ah hababka ugu fudud uguna waxtarka badan waa UniformSplit iyo isticmaalka isku-xidhka xashiishka, tusaale ahaan lamaanaha ugu muhiimsan ee bytes ee ka socda furaha iyada oo loo marayo CRC32(rowkey) shaqada iyo safafka laftiisa:

xashiish + rowkey

Markaa xogta oo dhan si siman ayaa loogu qaybin doonaa gobollada oo dhan. Markaad akhrinayso, labadii bytes ee hore si fudud ayaa loo tuuray oo furihii asalka ahaa ayaa hadhay. RS ayaa sidoo kale maamusha cadadka xogta iyo furayaasha gobolka iyo, haddii xadka la dhaafo, si toos ah u jebiya qaybo.

7. Dulqaadashada qaladka iyo xogta deegaanka

Maadaama hal gobol oo kaliya uu mas'uul ka yahay furayaal kasta, xalka dhibaatooyinka la xiriira shilalka RS ama joojinta waa in lagu kaydiyo dhammaan xogta lagama maarmaanka ah HDFS. Marka RS-gu dhaco, sayidku waxa uu taas ku ogaanayaa maqnaanshaha garaaca wadnaha ee noodhka ZooKeeper. Kadibna waxay ku meeleysaa gobolka loo adeego RS kale iyo tan iyo HFiles-yada lagu kaydiyo nidaamka faylka la qaybiyey, milkiilaha cusubi wuu akhriyaa oo sii wadaa inuu u adeego xogta. Si kastaba ha ahaatee, maadaama xogta qaar ay ku jiraan MemStore oo aysan haysan wakhti ay ku galaan HFiles, WAL, oo ​​sidoo kale lagu kaydiyo HDFS, ayaa loo isticmaalaa in lagu soo celiyo taariikhda hawlgallada. Ka dib marka isbeddelada la isticmaalo, RS waxay awood u leedahay inay ka jawaabto codsiyada, laakiin dhaqaaqa ayaa horseedaya xaqiiqda ah in qaar ka mid ah xogta iyo hababka u adeegaya ay ku dhamaanayaan qanjidhada kala duwan, i.e. deegaanka ayaa sii yaraanaya.

Xalka dhibaatadu waa isugeyn weyn - nidaamkani wuxuu u guuraa faylasha loo yaqaan 'nodes' kuwaas oo ka masuul ah iyaga (meesha ay gobolladoodu ku yaalaan), taas oo keentay in inta lagu jiro nidaamkan culeyska shabakada iyo saxanadaha ay si aad ah u kordho. Si kastaba ha ahaatee, mustaqbalka, helitaanka xogta ayaa si muuqata loo dardargeliyay. Intaa waxaa dheer, major_compaction waxay qabataa isku darka dhammaan HFiles ee hal fayl gudaha gobolka, iyo sidoo kale nadiifinta xogta iyadoo ku xiran goobaha miiska. Tusaale ahaan, waxaad cayimi kartaa tirada noocyada shay ee ay tahay in la sii hayo ama inta uu nool yahay shayga jir ahaan la tirtiro.

Habkani wuxuu saameyn aad u wanaagsan ku yeelan karaa hawlgalka HBase. Sawirka hoose wuxuu muujinayaa sida waxqabadku hoos ugu dhacay natiijada duubista xogta firfircoon awgeed. Halkan waxa aad ka arki kartaa sida 40 threads u qoray hal miis iyo 40 dunta isku mar u akhriyaan xogta. Mawduucyada qorista ayaa soo saara HFiles aad iyo aad u badan, kuwaas oo ay akhriyaan mawduucyo kale. Natiijo ahaan, xog aad iyo aad u badan ayaa loo baahan yahay in laga saaro xusuusta oo ugu dambeyntii GC uu bilaabo shaqada, taas oo dhab ahaantii curyaamisa dhammaan shaqada. Daah-furka isku-xidhka weyni wuxuu horseeday nadiifinta qashinka ka dhashay iyo soo celinta wax-soo-saarka.

Aragtida iyo dhaqanka isticmaalka HBase
Imtixaanka waxaa lagu sameeyay 3 DataNodes iyo 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads). Nooca HBase 1.2.0-cdh5.14.2

Waxaa xusid mudan in isugeynta weyn lagu bilaabay miiska "live", kaas oo xogta si firfircoon loo qoray oo loo akhriyay. Waxaa jiray bayaan online ah oo sheegaya in tani ay horseedi karto jawaab aan sax ahayn marka la akhrinayo xogta. Si loo hubiyo, waxaa la bilaabay hannaan soo saaray xog cusub oo ku qoray miis. Intaa ka dib waxaan isla markiiba akhriyay oo hubiyay in qiimihii ka dhashay uu ku soo beegmay wixii la qoray iyo in kale. Intii hawshani socotay, isugaynta weyn ayaa la orday ilaa 200 jeer, hal guuldarro lama diwaangelin. Waxaa laga yaabaa in dhibaatadu ay u muuqato mid dhif ah oo kaliya inta lagu jiro culeyska sareeyo, sidaas darteed way ka badbaado badan tahay in la joojiyo qorista iyo hababka wax-akhrinta sida la qorsheeyay oo loo sameeyo nadiifinta si looga hortago hoos u dhigista GC-ga.

Sidoo kale, isugeynta weyni ma saameynayso xaaladda MemStore; si aad ugu daadiso diskka oo aad isku koobto, waxaad u baahan tahay inaad isticmaasho dareeraha (connection.getAdmin().flush(TableName.valueOf(tblName))).

8. Dejinta iyo waxqabadka

Sidii aan horayba u soo sheegnay, HBase waxay muujinaysaa guusheeda ugu weyn halka aysan u baahnayn inay wax qabato, marka la fulinayo BulkLoad. Si kastaba ha ahaatee, tani waxay khusaysaa nidaamyada iyo dadka intooda badan. Si kastaba ha ahaatee, qalabkani wuxuu aad ugu habboon yahay in lagu kaydiyo xogta guud ahaan baloogyada waaweyn, halka haddii nidaamku u baahan yahay akhrin iyo qoraalo badan oo tartan ah, amarrada Get and Put ee kor lagu sharaxay ayaa la isticmaalaa. Si loo go'aamiyo cabbirrada ugu wanaagsan, soo-bandhigyo ayaa lagu sameeyay isku-dhafka kala duwan ee cabbirrada miiska iyo dejinta:

  • 10 dunood ayaa isku mar la furay 3 jeer oo xidhiidh ah
  • Wakhtiga shaqada ee dhammaan dunta ku jirta block ayaa la isku celceliyay oo ahayd natiijada ugu dambaysa ee hawlgalka block.
  • Dhammaan duntadu waxay ku shaqaynayeen miis isku mid ah.
  • Kahor bilowga kasta ee xannibaadda dunta, isafgarad weyn ayaa la sameeyay.
  • Baloog kasta waxa uu sameeyay mid ka mid ah hawlgallada soo socda:

-Ku dheji
- Hel
β€” Hel+Ku rid

  • Baloog kastaa wuxuu sameeyay 50 ku celcelin hawleedkeeda.
  • Cabirka block ee diiwaanku waa 100 bytes, 1000 bytes ama 10000 bytes ( random).
  • Baloogyada waxaa lagu bilaabay tirooyin kala duwan oo fureyaal la codsaday (mid fure ah ama 10 midkood).
  • Baloogyada waxaa lagu hoos orday jaangooyo miis oo kala duwan. Halbeegyada ayaa isbedelay:

- BlockCache = shid ama dami
- BlockSize = 65 KB ama 16 KB
- Qaybaha = 1, 5 ama 30
- MSLAB = karti ama naafo

Haddaba block-ku wuxuu u eg yahay sidan:

a. Habka MSLAB waa la damiyay/damiyay.
b. Shax ayaa la sameeyay kaas oo loo dejiyay halbeegyada soo socda: BlockCache = run/maya, BlockSize = 65/16 Kb, Partition = 1/5/30.
c. Cadaadiska ayaa loo dejiyay GZ.
d. 10 threads ayaa si isku mid ah loo bilaabay samaynta 1/10 gelin/hel/hel+ka hawlgalinta miiskan oo wata diiwaanka 100/1000/10000 bytes, iyaga oo fulinaya 50 weydiimood oo isku xigta (furayaal random).
e. Dhibcaha d ayaa lagu soo celiyay saddex jeer.
f. Wakhtiga shaqada ee dhammaan dunta ayaa la isku celceliyay.

Dhammaan isku darka suurtagalka ah waa la tijaabiyay. Waxaa la saadaalin karaa in xawaaruhu hoos u dhici doono marka cabbirka rikoodhadu kordho, ama kaydinta curyaaminta waxay sababi doontaa gaabis. Si kastaba ha ahaatee, ujeedadu waxay ahayd in la fahmo heerka iyo muhiimada saamaynta halbeeg kasta, sidaas darteed xogta la ururiyey waxaa lagu shubay gelinta shaqada dib u celinta toosan, taas oo suurtogal ka dhigaysa in la qiimeeyo muhiimadda iyadoo la adeegsanayo t-statistics. Hoos waxaa ku yaal natiijooyinka baloogyada fulinaya hawlgallada Put. Isku darka buuxa 2*2*3*2*3 = 144 doorasho + 72 tk. qaar ayaa la sameeyay laba jeer. Sidaa darteed, waxaa jira 216 wadarta guud:

Aragtida iyo dhaqanka isticmaalka HBase
Tijaabada waxaa lagu sameeyay koox-yar oo ka kooban 3 DataNodes iyo 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads). Nooca HBase 1.2.0-cdh5.14.2.

Xawaaraha ugu sarreeya ee gelinta 3.7 ilbiriqsi ayaa la helay iyadoo qaabka MSLAB la damiyay, miiska saaran hal qayb, oo leh BlockCache karti u leh, BlockSize = 16, diiwaannada 100 bytes, 10 xabbo oo baakidhkiiba.
Xawaaraha gelinta ugu hooseeya ee 82.8 sek waxa lagu helay habka MSLAB oo karti leh, miis leh hal qayb, oo leh BlockCache karti u leh, BlockSize = 16, diiwaannada 10000 bytes, 1 midkiiba.

Hadda aynu eegno qaabka. Waxaan aragnaa tayada wanaagsan ee qaabka ku saleysan R2, laakiin gabi ahaanba way caddahay in ka-saarista ka-hortagga halkan. Habdhaqanka dhabta ah ee nidaamka marka cabbiradu isbeddelayaan ma noqon doonaan kuwo toosan; Tusaale ahaan, halkan waxaan ka aragnaa shuruudaha Ardayga in BlockSize iyo BlockCache aysan wax macno ah u lahayn hawl-gelinta (taas oo guud ahaan aad loo saadaalin karo):

Aragtida iyo dhaqanka isticmaalka HBase
Laakiin xaqiiqda ah in kordhinta tirada qaybaha ay keenayso hoos u dhac ku yimaada waxqabadka waa wax aan la filayn (waxaan horay u aragnay saameynta wanaagsan ee kordhinta tirada qaybaha BulkLoad), inkastoo la fahmi karo. Marka hore, si loo habeeyo, waa inaad soo saartaa codsiyo 30 gobol halkii aad ka heli lahayd hal, iyo mugga xogtu maahan in tani ay dhali doonto faa'iido. Marka labaad, wadarta wakhtiga hawlgalka waxaa go'aamiya RS-ga ugu gaabis ah, iyo maadaama tirada DataNodes ay ka yar tahay tirada RS-yada, gobollada qaarkood waxay leeyihiin meel eber ah. Hagaag, aan eegno shanta ugu sareysa:

Aragtida iyo dhaqanka isticmaalka HBase
Hadda aan qiimeyno natiijooyinka fulinta Get blocks:

Aragtida iyo dhaqanka isticmaalka HBase
Tirada qaybaha ayaa lumiyay muhiimada, taas oo laga yaabo in lagu macneeyo xaqiiqda ah in xogta si fiican loo kaydiyay iyo kaydka akhrinta ayaa ah midka ugu muhiimsan (tirakoobka). Dabcan, kordhinta tirada fariimaha codsiga sidoo kale aad bay waxtar ugu leedahay waxqabadka. Dhibcaha ugu sarreeya:

Aragtida iyo dhaqanka isticmaalka HBase
Hagaag, ugu dambeyntii, aan eegno qaabka block-ka ee markii hore sameeyay hel ka dibna dhig:

Aragtida iyo dhaqanka isticmaalka HBase
Dhammaan halbeegyada halkan ayaa muhiim ah. Iyo natiijada madaxda:

Aragtida iyo dhaqanka isticmaalka HBase

9. Imtixaanka culeyska

Hagaag, ugu dambeyntii waxaan bilaabi doonaa culeys badan ama ka yar, laakiin had iyo jeer aad ayey u xiiso badan tahay markaad haysato wax la barbar dhigo. Bogga internetka ee DataStax, horumariyaha muhiimka ah ee Cassandra, waxaa jira muuqaal NT ee tiro kayd ah oo NoSQL ah, oo uu ku jiro nooca HBase 0.98.6-1. Soo dejinta waxaa lagu fuliyay 40 xadhig, cabbirka xogta 100 bytes, saxannada SSD. Natiijadii tijaabinta hawlgallada Wax-ka-beddel-Qor waxay muujisay natiijooyinka soo socda.

Aragtida iyo dhaqanka isticmaalka HBase
Ilaa hadda inta aan fahmayo, akhrinta waxaa lagu fuliyay baloogyada 100 diiwaanka iyo 16 HBase nodes, imtixaanka DataStax wuxuu muujiyay waxqabadka 10 kun oo hawlgal ilbiriqsi kasta.

Waa nasiib wanaag in kooxdeenu ay sidoo kale leedahay 16 nodes, laakiin "nasiib" maahan in mid kastaa leeyahay 64 cores (threads), halka imtixaanka DataStax uu jiro 4 kaliya. Dhanka kale, waxay leeyihiin SSD-yada, halka aan haysano HDDs. ama ka badan nooca cusub ee HBase iyo ka faa'iidaysiga CPU inta lagu jiro rarka si dhab ah uma kordhinin (muuqaal ahaan 5-10 boqolkiiba). Si kastaba ha ahaatee, aan isku dayno inaan bilowno isticmaalka qaabeyntan. Dejinta miiska caadiga ah, akhrinta waxaa lagu sameeyaa inta u dhaxaysa 0 ilaa 50 milyan si aan kala sooc lahayn (ie, dhab ahaantii cusub mar kasta). Jadwalku wuxuu ka kooban yahay 50 milyan oo diiwaan, oo loo qaybiyay 64 qaybood. Furayaasha waxaa lagu daaray iyadoo la isticmaalayo crc32. Dejinta miiska waa default, MSLAB waa la dajiyay. Daahfurka 40 xadhig, dun kastaa waxa ay akhridaa 100 furayaal random ah oo isla markiiba 100ka bytes ee la sameeyay dib ugu soo celiyaa furayaashan.

Aragtida iyo dhaqanka isticmaalka HBase
Istaag: 16 DataNode iyo 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads). Nooca HBase 1.2.0-cdh5.14.2.

Natiijadu celcelis ahaan waxay ku dhowdahay 40 kun oo hawlgal ilbiriqsikiiba, taas oo aad uga wanaagsan marka loo eego imtixaanka DataStax. Si kastaba ha ahaatee, ujeedooyin tijaabo ah, waxaad wax yar ka beddeli kartaa shuruudaha. Aad bay u adag tahay in dhammaan shaqada lagu fuliyo hal miis oo keliya, iyo sidoo kale furayaasha gaarka ah oo keliya. Aynu ka soo qaadno inay jiraan furayaal "kulul" gaar ah oo soo saara culeyska ugu weyn. Sidaa darteed, aan isku dayno inaan abuurno culeys leh diiwaanno waaweyn (10 KB), sidoo kale 100 qaybood, 4 miis oo kala duwan oo xaddidaya tirada furayaasha la codsaday ilaa 50 kun garaafka hoose wuxuu muujinayaa furitaanka 40 xadhig, dun kasta ayaa akhrinaysa 100 furayaal ah oo isla markiiba ku qoraya 10 KB random furayaashan dib.

Aragtida iyo dhaqanka isticmaalka HBase
Istaag: 16 DataNode iyo 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads). Nooca HBase 1.2.0-cdh5.14.2.

Inta lagu jiro culeyska, isugeynta weyn ayaa la bilaabay dhowr jeer, sida kor ku xusan, nidaamkan la'aanteed, waxqabadka ayaa si tartiib tartiib ah hoos u dhigaya, si kastaba ha ahaatee, culeys dheeraad ah ayaa sidoo kale soo baxa inta lagu jiro fulinta. Dareen-celinta xasaasiyadda waxaa sababi kara sababo kala duwan. Mararka qaarkood duntu way dhammaatay shaqada waxaana jiray hakad markii dib loo bilaabay, mararka qaarkood codsiyada qolo saddexaad ayaa culays ku abuuray kooxda.

Akhriska iyo qorista isla markiiba waa mid ka mid ah xaaladaha shaqada ugu adag ee HBase. Haddii aad sameyso codsiyo yar yar, tusaale ahaan 100 bytes, iyaga oo isku daraya xirmo 10-50 kun ah, waxaad heli kartaa boqollaal kun oo hawlgal ah ilbiriqsi kasta, xaaladuna waxay la mid tahay codsiyada akhrinta. Waxaa xusid mudan in natiijadu ay aad uga fiican tahay kuwa ay heshay DataStax, inta badan waxaa sabab u ah codsiyada ku jira 50 kun.

Aragtida iyo dhaqanka isticmaalka HBase
Istaag: 16 DataNode iyo 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads). Nooca HBase 1.2.0-cdh5.14.2.

10. Gabagabo

Nidaamkan si aad ah ayaa loo habeeyey, laakiin saamaynta tiro badan oo cabbirro ah ayaa weli ah mid aan la garanayn. Qaarkood waa la tijaabiyay, laakiin laguma darin tijaabada natiijada ka soo baxday. Tusaale ahaan, tijaabooyinkii horudhaca ahaa waxay tuseen muhiimad aan qiimo lahayn oo ah halbeeggan oo kale sida DATA_BLOCK_ENCODING, kaas oo kaydiya macluumaadka isticmaalaya qiyamka unugyada deriska, kaas oo la fahmi karo xogta si aan kala sooc lahayn loo soo saaray. Haddii aad isticmaasho tiro badan oo walxo nuqul ah, faa'iidada ayaa noqon karta mid muhiim ah. Guud ahaan, waxaan dhihi karnaa HBase waxay ku siinaysaa aragtida xog-ururin si caddaalad ah oo halis ah oo si wanaagsan looga fikiray, taas oo noqon karta mid waxtar leh marka la fulinayo hawlgallada xogta ballaaran. Gaar ahaan haddii ay suurtagal tahay in la kala saaro habka wax-akhrinta iyo qorista waqtigeeda.

Haddii ay jiraan wax fikraddaada ah oo aan si ku filan loo shaacin, waxaan diyaar u ahay inaan si faahfaahsan kuugu sheego. Waxaan kugu martiqaadeynaa inaad la wadaagto khibradaada ama aad ka hadasho haddii aad wax khilaafsan tahay.

Source: www.habr.com

Add a comment