Teorija u prattika tal-użu tal-HBase

Il-waranofsinhar it-tajjeb Jisimni Danil Lipovoy, it-tim tagħna fi Sbertech beda juża HBase bħala ħażna għal data operattiva. Matul l-istudju tagħha, akkumulat esperjenza li xtaqt nissistematizza u niddeskrivi (nittamaw li tkun utli għal ħafna). L-esperimenti kollha hawn taħt saru bil-verżjonijiet HBase 1.2.0-cdh5.14.2 u 2.0.0-cdh6.0.0-beta1.

  1. Arkitettura ġenerali
  2. Kitba tad-dejta lil HBASE
  3. Qari tad-dejta minn HBASE
  4. Caching tad-dejta
  5. Ipproċessar tad-dejta tal-lott MultiGet/MultiPut
  6. Strateġija għall-qsim ta' tabelli f'reġjuni (qsim)
  7. Tolleranza għall-ħsarat, kompattifikazzjoni u lokalità tad-dejta
  8. Settings u prestazzjoni
  9. Ittestjar tal-istress
  10. Sejbiet

1. Arkitettura ġenerali

Teorija u prattika tal-użu tal-HBase
Il-Master backup jisma' t-taħbit tal-qalb ta 'dak attiv fuq in-node ZooKeeper u, f'każ ta' għajbien, jieħu f'idejh il-funzjonijiet tal-kaptan.

2. Ikteb data lil HBASE

L-ewwel, ejja nħarsu lejn l-aktar każ sempliċi - il-kitba ta 'oġġett ta' valur ewlieni fuq tabella billi tuża put(rowkey). Il-klijent irid l-ewwel jiskopri fejn jinsab ir-Root Region Server (RRS), li jaħżen it-tabella hbase:meta. Huwa jirċievi din l-informazzjoni mingħand ZooKeeper. Wara dan jaċċessa RRS u jaqra l-hbase:meta tabella, li minnha jiġbed informazzjoni dwar liema RegionServer (RS) huwa responsabbli għall-ħażna tad-dejta għal rowkey partikolari fit-tabella ta 'interess. Għall-użu fil-futur, it-tabella tal-meta tinħażen fil-cache mill-klijent u għalhekk is-sejħiet sussegwenti jmorru aktar malajr, direttament lil RS.

Sussegwentement, RS, wara li rċieva talba, l-ewwelnett jiktebha lil WriteAheadLog (WAL), li hija meħtieġa għall-irkupru f'każ ta 'ħabta. Imbagħad issalva d-dejta f'MemStore. Dan huwa buffer fil-memorja li fih sett ta' ċwievet magħżul għal reġjun partikolari. Tabella tista 'tinqasam f'reġjuni (diviżorji), li kull wieħed minnhom fih sett disjoint ta' ċwievet. Dan jippermettilek tpoġġi reġjuni fuq servers differenti biex tikseb prestazzjoni ogħla. Madankollu, minkejja l-ovvja ta 'din id-dikjarazzjoni, naraw aktar tard li dan ma jaħdimx fil-każijiet kollha.

Wara li tpoġġi dħul fil-MemStore, tingħata tweġiba lill-klijent li l-entrata ġiet salvata b'suċċess. Madankollu, fir-realtà hija maħżuna biss f'buffer u tasal għad-disk biss wara li jkun għadda ċertu perjodu ta 'żmien jew meta tkun mimlija b'dejta ġdida.

Teorija u prattika tal-użu tal-HBase
Meta twettaq l-operazzjoni "Ħassar", id-data ma titħassarx fiżikament. Huma sempliċement immarkati bħala mħassra, u l-qerda nnifisha sseħħ fil-mument tas-sejħa tal-funzjoni kompatta ewlenija, li hija deskritta f'aktar dettall fil-paragrafu 7.

Fajls fil-format HFile huma akkumulati f'HDFS u minn żmien għal żmien jitnieda l-proċess kompatt minuri, li sempliċement jgħaqqad fajls żgħar f'oħrajn akbar mingħajr ma jħassar xejn. Maż-żmien, dan jinbidel fi problema li tidher biss meta taqra d-dejta (nerġgħu nerġgħu għal dan ftit aktar tard).

Minbarra l-proċess tat-tagħbija deskritt hawn fuq, hemm proċedura ħafna aktar effettiva, li forsi hija l-iktar naħa b'saħħitha ta 'din id-database - BulkLoad. Hija tinsab fil-fatt li aħna niffurmaw HFiles b'mod indipendenti u npoġġuhom fuq disk, li jippermettilna nskala perfettament u niksbu veloċitajiet deċenti ħafna. Fil-fatt, il-limitazzjoni hawnhekk mhix HBase, iżda l-kapaċitajiet tal-hardware. Hawn taħt jinsabu r-riżultati tal-boot fuq cluster li jikkonsisti minn 16 RegionServers u 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads), HBase verżjoni 1.2.0-cdh5.14.2.

Teorija u prattika tal-użu tal-HBase

Hawnhekk tista 'tara li billi żżid in-numru ta' diviżorji (reġjuni) fit-tabella, kif ukoll l-eżekuturi ta 'Spark, ikollna żieda fil-veloċità tat-tniżżil. Ukoll, il-veloċità tiddependi fuq il-volum tar-reġistrazzjoni. Blokki kbar jagħtu żieda f'MB/sec, blokki żgħar fin-numru ta 'rekords mdaħħla għal kull unità ta' ħin, l-affarijiet l-oħra kollha jkunu ugwali.

Tista 'wkoll tibda tgħabbi f'żewġ tabelli fl-istess ħin u tikseb id-doppju tal-veloċità. Hawn taħt tista' tara li l-kitba ta' blokki ta' 10 KB f'żewġ tabelli f'daqqa ssir b'veloċità ta' madwar 600 MB/sec f'kull wieħed (total 1275 MB/sec), li tikkoinċidi mal-veloċità tal-kitba fuq tabella waħda 623 MB/sec (ara Nru 11 hawn fuq)

Teorija u prattika tal-użu tal-HBase
Iżda t-tieni ġirja b'rekords ta '50 KB turi li l-veloċità tat-tniżżil qed tikber ftit, li jindika li qed toqrob il-valuri ta' limitu. Fl-istess ħin, trid iżżomm f'moħħok li prattikament m'hemm l-ebda tagħbija maħluqa fuq HBASE innifsu, dak kollu li huwa meħtieġ minnu huwa li l-ewwel tagħti dejta minn hbase:meta, u wara li tforni HFiles, reset id-dejta tal-BlockCache u ssalva l- MemStore buffer għal disk, jekk ma jkunx vojt.

3. Qari tad-dejta minn HBASE

Jekk nassumu li l-klijent diġà għandu l-informazzjoni kollha minn hbase:meta (ara l-punt 2), allura t-talba tmur direttament lill-RS fejn tinħażen iċ-ċavetta meħtieġa. L-ewwel it-tfittxija ssir f'MemCache. Irrispettivament minn jekk hemmx data hemmhekk jew le, it-tfittxija titwettaq ukoll fil-buffer BlockCache u, jekk meħtieġ, f'HFiles. Jekk id-dejta nstabet fil-fajl, titqiegħed f'BlockCache u tiġi rritornata aktar malajr fuq it-talba li jmiss. It-tiftix f'HFile huwa relattivament mgħaġġel grazzi għall-użu tal-filtru Bloom, i.e. wara li taqra ammont żgħir ta 'dejta, immedjatament tiddetermina jekk dan il-fajl fihx iċ-ċavetta meħtieġa u jekk le, imbagħad jgħaddi għal dik li jmiss.

Teorija u prattika tal-użu tal-HBase
Wara li rċieva dejta minn dawn it-tliet sorsi, RS jiġġenera rispons. B'mod partikolari, tista 'tittrasferixxi diversi verżjonijiet misjuba ta' oġġett f'daqqa jekk il-klijent talab verżjonijiet.

4. Data caching

Il-buffers MemStore u BlockCache jokkupaw sa 80% tal-memorja RS allokata fuq il-borġ (il-bqija huwa riżervat għall-kompiti tas-servizz RS). Jekk il-mod ta 'użu tipiku huwa tali li l-proċessi jiktbu u jaqraw immedjatament l-istess dejta, allura jagħmel sens li jitnaqqas BlockCache u jiżdied MemStore, għaliex Meta d-dejta tal-kitba ma tidħolx fil-cache għall-qari, BlockCache se jintuża inqas ta 'spiss. Il-buffer BlockCache jikkonsisti f'żewġ partijiet: LruBlockCache (dejjem fuq il-borġ) u BucketCache (ġeneralment off-heap jew fuq SSD). BucketCache għandu jintuża meta jkun hemm ħafna talbiet għall-qari u ma jidħlux f'LruBlockCache, li jwassal għal xogħol attiv ta' Garbage Collector. Fl-istess ħin, m'għandekx tistenna żieda radikali fil-prestazzjoni mill-użu tal-cache tal-qari, iżda se nerġgħu lura għal dan fil-paragrafu 8

Teorija u prattika tal-użu tal-HBase
Hemm BlockCache wieħed għall-RS kollu, u hemm MemStore wieħed għal kull tabella (wieħed għal kull Familja tal-Kolonni).

Kif deskritt fit-teorija, meta tikteb, id-data ma tidħolx fil-cache u tabilħaqq, tali parametri CACHE_DATA_ON_WRITE għat-tabella u "Cache DATA on Write" għal RS huma ssettjati għal foloz. Madankollu, fil-prattika, jekk niktbu d-dejta lil MemStore, imbagħad laħlaħha fuq id-diska (għalhekk inaddfuha), imbagħad ħassar il-fajl li jirriżulta, imbagħad billi nwettqu talba tikseb aħna nirċievu d-dejta b'suċċess. Barra minn hekk, anki jekk tiddiżattiva kompletament BlockCache u timla t-tabella b'dejta ġdida, imbagħad reset il-MemStore fuq disk, ħassarhom u titlobhom minn sessjoni oħra, xorta se jiġu rkuprati minn x'imkien. Allura HBase jaħżen mhux biss data, iżda wkoll misteri misterjużi.

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

Il-parametru "Cache DATA on Read" huwa ssettjat bħala falz. Jekk għandek xi ideat, merħba tiddiskutiha fil-kummenti.

5. Ipproċessar tad-dejta tal-lott MultiGet/MultiPut

L-ipproċessar ta 'talbiet uniċi (Ikseb / Poġġi / Ħassar) huwa operazzjoni pjuttost għalja, għalhekk jekk possibbli, għandek tgħaqqadhom f'Lista jew Lista, li tippermettilek tikseb spinta sinifikanti fil-prestazzjoni. Dan jgħodd speċjalment għall-operazzjoni tal-kitba, iżda meta l-qari hemm il-iżvantaġġ li ġej. Il-grafika hawn taħt turi l-ħin biex taqra 50 rekord minn MemStore. Il-qari sar f'ħajt wieħed u l-assi orizzontali juri n-numru ta 'ċwievet fit-talba. Hawnhekk tista 'tara li meta tiżdied għal elf ċavetta f'talba waħda, il-ħin tal-eżekuzzjoni jonqos, i.e. tiżdied il-veloċità. Madankollu, bil-mod MSLAB attivat awtomatikament, wara dan il-limitu jibda tnaqqis radikali fil-prestazzjoni, u iktar ma jkun kbir l-ammont ta 'dejta fir-rekord, iktar ikun itwal il-ħin operattiv.

Teorija u prattika tal-użu tal-HBase

It-testijiet saru fuq magna virtwali, 8 cores, verżjoni HBase 2.0.0-cdh6.0.0-beta1.

Il-modalità MSLAB hija mfassla biex tnaqqas il-frammentazzjoni tal-borġ, li sseħħ minħabba t-taħlit ta 'dejta ta' ġenerazzjoni ġdida u qadima. Bħala soluzzjoni, meta MSLAB tkun attivata, id-dejta titqiegħed f'ċelloli relattivament żgħar (biċċiet) u tiġi pproċessata f'biċċiet. Bħala riżultat, meta l-volum fil-pakkett tad-dejta mitlub jaqbeż id-daqs allokat, il-prestazzjoni tonqos drastikament. Min-naħa l-oħra, it-tifi ta 'dan il-mod lanqas m'huwiex rakkomandabbli, peress li se jwassal għal waqfiet minħabba GC waqt mumenti ta' pproċessar intensiv tad-dejta. Soluzzjoni tajba hija li jiżdied il-volum taċ-ċelluli fil-każ ta 'kitba attiva permezz ta' put fl-istess ħin mal-qari. Ta 'min jinnota li l-problema ma sseħħx jekk, wara r-reġistrazzjoni, tmexxi l-kmand tal-flush, li jerġa' jpoġġi l-MemStore fuq disk, jew jekk tagħbija billi tuża BulkLoad. It-tabella hawn taħt turi li mistoqsijiet mill-MemStore għal data akbar (u l-istess ammont) jirriżultaw fi tnaqqis. Madankollu, billi nżidu d-daqs tal-biċċa nirritornaw il-ħin tal-ipproċessar għan-normal.

Teorija u prattika tal-użu tal-HBase
Minbarra li żżid id-daqs tal-biċċa, il-qsim tad-dejta skont ir-reġjun jgħin, i.e. qsim tal-mejda. Dan jirriżulta f'inqas talbiet li jaslu f'kull reġjun u jekk jidħlu f'ċellula, ir-rispons jibqa' tajjeb.

6. Strateġija għall-qsim ta' tabelli f'reġjuni (qsim)

Peress li HBase hija ħażna ta 'valur ewlieni u l-qsim isir permezz ta' ċavetta, huwa estremament importanti li d-dejta tinqasam b'mod ugwali fir-reġjuni kollha. Pereżempju, il-qsim ta' tabella bħal din fi tliet partijiet jirriżulta li d-dejta tinqasam fi tliet reġjuni:

Teorija u prattika tal-użu tal-HBase
Jiġri li dan iwassal għal tnaqqis qawwi jekk id-dejta mgħobbija aktar tard tidher bħal, pereżempju, valuri twal, ħafna minnhom jibdew bl-istess ċifra, pereżempju:

1000001
1000002
...
1100003

Peress li ċ-ċwievet huma maħżuna bħala firxa ta 'byte, kollha se jibdew l-istess u jappartjenu għall-istess reġjun #1 li jaħżen din il-firxa ta' ċwievet. Hemm diversi strateġiji ta 'qsim:

HexStringSplit – Dawwar iċ-ċavetta fi string kodifikata eżadeċimali fil-medda "00000000" => "FFFFFFFF" u ikkuttunar ix-xellug b'żerijiet.

UniformSplit – Dawwar iċ-ċavetta f'firxa ta 'byte b'kodifikazzjoni eżadeċimali fil-medda "00" => "FF" u padding fuq il-lemin b'żerijiet.

Barra minn hekk, tista 'tispeċifika kwalunkwe firxa jew sett ta' ċwievet għall-qsim u tikkonfigura l-qsim awtomatiku. Madankollu, wieħed mill-aktar approċċi sempliċi u effettivi huwa UniformSplit u l-użu ta 'konkatenazzjoni tal-hash, pereżempju l-aktar par sinifikanti ta' bytes milli jmexxu ċ-ċavetta permezz tal-funzjoni CRC32(rowkey) u r-rowkey innifsu:

hash + rowkey

Imbagħad id-dejta kollha titqassam b'mod ugwali bejn ir-reġjuni. Meta tinqara, l-ewwel żewġ bytes huma sempliċement mormija u ċ-ċavetta oriġinali tibqa '. RS tikkontrolla wkoll l-ammont ta 'dejta u ċwievet fir-reġjun u, jekk il-limiti jinqabżu, awtomatikament ikisserha f'partijiet.

7. It-tolleranza tal-ħsarat u l-lokalità tad-dejta

Peress li reġjun wieħed biss huwa responsabbli għal kull sett ta 'ċwievet, is-soluzzjoni għall-problemi assoċjati ma' ħabtiet RS jew dekummissjonar hija li tinħażen id-dejta kollha meħtieġa f'HDFS. Meta RS jaqa ', il-kaptan jiskopri dan permezz tan-nuqqas ta' taħbit tal-qalb fuq in-node ZooKeeper. Imbagħad tassenja r-reġjun moqdi lil RS ieħor u peress li l-HFiles huma maħżuna f'sistema ta 'fajls distribwiti, is-sid il-ġdid jaqrahom u jkompli jservi d-dejta. Madankollu, peress li xi wħud mid-dejta tista 'tkun fil-MemStore u ma kellhiex ħin biex tidħol f'HFiles, WAL, li hija wkoll maħżuna f'HDFS, tintuża biex tirrestawra l-istorja tal-operazzjonijiet. Wara li jiġu applikati l-bidliet, RS huwa kapaċi jirrispondi għat-talbiet, iżda l-mossa twassal għall-fatt li xi wħud mid-dejta u l-proċessi li jservuhom jispiċċaw fuq nodi differenti, i.e. lokalità qed tonqos.

Is-soluzzjoni għall-problema hija kompattazzjoni kbira - din il-proċedura tmexxi l-fajls lejn dawk in-nodi li huma responsabbli għalihom (fejn jinsabu r-reġjuni tagħhom), b'riżultat li matul din il-proċedura t-tagħbija fuq in-netwerk u d-diski tiżdied drastikament. Madankollu, fil-futur, l-aċċess għad-data huwa notevoli aċċellerat. Barra minn hekk, major_compaction iwettaq l-għaqda tal-HFiles kollha f'fajl wieħed f'reġjun, u wkoll inaddaf id-dejta skont is-settings tat-tabella. Pereżempju, tista' tispeċifika n-numru ta' verżjonijiet ta' oġġett li jridu jinżammu jew il-ħajja li warajha l-oġġett jitħassar fiżikament.

Din il-proċedura jista 'jkollha effett pożittiv ħafna fuq l-operat ta' HBase. L-istampa hawn taħt turi kif il-prestazzjoni ddegradat bħala riżultat tar-reġistrazzjoni attiva tad-dejta. Hawnhekk tista 'tara kif 40 ħajt kitbu fuq tabella waħda u 40 ħajt simultanjament jaqraw data. Il-ħjut tal-kitba jiġġeneraw aktar u aktar HFiles, li jinqraw minn ħjut oħra. Bħala riżultat, aktar u aktar dejta trid titneħħa mill-memorja u eventwalment il-GC jibda jaħdem, li prattikament jipparalizza x-xogħol kollu. It-tnedija ta 'kompattazzjoni kbira wasslet għall-ikklerjar tad-debris li jirriżultaw u r-restawr tal-produttività.

Teorija u prattika tal-użu tal-HBase
It-test sar fuq 3 DataNodes u 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ħajt). Verżjoni HBase 1.2.0-cdh5.14.2

Ta 'min jinnota li tnediet kompattazzjoni kbira fuq tabella "ħaj", li fiha d-dejta nkitbet u tinqara b'mod attiv. Kien hemm dikjarazzjoni onlajn li dan jista 'jwassal għal rispons żbaljat meta taqra d-dejta. Biex tiċċekkja, tnieda proċess li ġġenera data ġdida u kitebha fuq tabella. Wara dan immedjatament qrajt u ċċekkja jekk il-valur li jirriżulta kienx jikkoinċidi ma 'dak li kien miktub. Waqt li dan il-proċess kien għaddej, kompattazzjoni kbira tmexxiet madwar 200 darba u ma ġiet irreġistrata ebda ħsara waħda. Forsi l-problema tidher rari u biss waqt tagħbija għolja, għalhekk huwa aktar sikur li twaqqaf il-proċessi tal-kitba u tal-qari kif ippjanat u twettaq tindif biex tevita tali prelievi tal-GC.

Ukoll, kompattazzjoni maġġuri ma taffettwax l-istat tal-MemStore; biex titlaħlaħ fuq id-disk u tikkumpattaha, trid tuża flush (connection.getAdmin().flush(TableName.valueOf(tblName))).

8. Settings u prestazzjoni

Kif diġà ssemma, HBase juri l-akbar suċċess tiegħu fejn m'għandux għalfejn jagħmel xejn, meta jesegwixxi BulkLoad. Madankollu, dan japplika għal ħafna sistemi u nies. Madankollu, din l-għodda hija aktar adattata għall-ħażna tad-dejta bl-ingrossa fi blokki kbar, filwaqt li jekk il-proċess jeħtieġ talbiet multipli li jikkompetu għall-qari u l-kitba, jintużaw il-kmandi Get u Put deskritti hawn fuq. Biex jiġu ddeterminati l-aħjar parametri, saru tnedijiet b'diversi kombinazzjonijiet ta 'parametri u settings tal-mejda:

  • 10 ħjut ġew imnedija simultanjament 3 darbiet wara xulxin (ejja nsejħulha blokka ta 'ħjut).
  • Il-ħin tat-tħaddim tal-ħjut kollha fi blokk kien medja u kien ir-riżultat finali tat-tħaddim tal-blokk.
  • Il-ħjut kollha ħadmu bl-istess tabella.
  • Qabel kull bidu tal-blokka tal-ħajta, saret kompattazzjoni kbira.
  • Kull blokk wettaq waħda biss mill-operazzjonijiet li ġejjin:

—Poġġi
—Ġib
—Ġib+ Poġġi

  • Kull blokka wettqet 50 iterazzjoni tal-operat tagħha.
  • Id-daqs tal-blokk ta 'rekord huwa 100 bytes, 1000 bytes jew 10000 bytes (każwali).
  • Tnedew blokki b'numri differenti ta 'ċwievet mitluba (jew ċavetta waħda jew 10).
  • Il-blokki tmexxew taħt settings differenti tal-mejda. Parametri mibdula:

— BlockCache = mixgħul jew mitfi
— BlockSize = 65 KB jew 16 KB
— Diviżorji = 1, 5 jew 30
— MSLAB = attivat jew diżattivat

Allura l-blokk jidher bħal dan:

a. Il-modalità MSLAB kienet mixgħula/mitfija.
b. Inħolqot tabella li għaliha ġew stabbiliti l-parametri li ġejjin: BlockCache = veru/xejn, BlockSize = 65/16 Kb, Partition = 1/5/30.
c. Kompressjoni kienet issettjata għal GZ.
d. Ġew imnedija 10 ħjut fl-istess ħin li jagħmlu operazzjonijiet 1/10 put/get/get+put f'din it-tabella b'rekords ta '100/1000/10000 bytes, li jwettqu 50 mistoqsija wara xulxin (keys każwali).
e. Il-punt d ġie ripetut tliet darbiet.
f. Il-ħin operattiv tal-ħjut kollha kien medja.

Il-kombinazzjonijiet kollha possibbli ġew ittestjati. Huwa prevedibbli li l-veloċità se tonqos hekk kif id-daqs tar-rekord jiżdied, jew li d-diżattivazzjoni tal-caching tikkawża tnaqqis. Madankollu, l-għan kien li wieħed jifhem il-grad u s-sinifikat ta 'l-influwenza ta' kull parametru, għalhekk id-dejta miġbura ġiet imdaħħla fid-dħul ta 'funzjoni ta' rigressjoni lineari, li tagħmilha possibbli li tiġi vvalutata s-sinifikat bl-użu ta 'statistika t. Hawn taħt jinsabu r-riżultati tal-blokki li jwettqu operazzjonijiet Put. Sett sħiħ ta 'kombinazzjonijiet 2 * 2 * 3 * 2 * 3 = 144 għażla + 72 tk. xi wħud saru darbtejn. Għalhekk, hemm 216 ġirja b'kollox:

Teorija u prattika tal-użu tal-HBase
L-ittestjar sar fuq mini-cluster li jikkonsisti minn 3 DataNodes u 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads). Verżjoni HBase 1.2.0-cdh5.14.2.

L-ogħla veloċità ta 'inserzjoni ta' 3.7 sekondi nkisbet bil-mod MSLAB mitfi, fuq mejda b'partizzjoni waħda, b'BlockCache attivat, BlockSize = 16, rekords ta '100 bytes, biċċiet 10 għal kull pakkett.
L-inqas veloċità ta 'inserzjoni ta' 82.8 sek inkisbet bil-mod MSLAB attivat, fuq tabella b'partizzjoni waħda, b'BlockCache attivat, BlockSize = 16, rekords ta '10000 bytes, 1 kull wieħed.

Issa ejja nħarsu lejn il-mudell. Naraw il-kwalità tajba tal-mudell ibbażat fuq R2, iżda huwa assolutament ċar li l-estrapolazzjoni hija kontraindikata hawn. L-imġiba attwali tas-sistema meta l-parametri jinbidlu mhux se tkun lineari; dan il-mudell huwa meħtieġ mhux għat-tbassir, iżda biex jinftiehem dak li ġara fil-parametri mogħtija. Pereżempju, hawnhekk naraw mill-kriterju tal-Istudent li l-parametri BlockSize u BlockCache ma jimpurtawx għall-operazzjoni Put (li ġeneralment hija pjuttost prevedibbli):

Teorija u prattika tal-użu tal-HBase
Iżda l-fatt li ż-żieda fin-numru ta 'diviżorji twassal għal tnaqqis fil-prestazzjoni huwa kemmxejn mhux mistenni (diġà rajna l-impatt pożittiv li jiżdied in-numru ta' diviżorji b'BulkLoad), għalkemm jinftiehem. L-ewwelnett, għall-ipproċessar, trid tiġġenera talbiet lil 30 reġjun minflok wieħed, u l-volum tad-dejta mhuwiex tali li dan jagħti qligħ. It-tieni nett, il-ħin totali operattiv huwa ddeterminat mill-aktar bil-mod RS, u peress li n-numru ta 'DataNodes huwa inqas min-numru ta' RSs, xi reġjuni għandhom lokalità żero. Ukoll, ejja nħarsu lejn l-aqwa ħamsa:

Teorija u prattika tal-użu tal-HBase
Issa ejja nevalwaw ir-riżultati tal-eżekuzzjoni tal-blokki Get:

Teorija u prattika tal-użu tal-HBase
In-numru ta 'diviżorji tilef is-sinifikat, li probabbilment huwa spjegat mill-fatt li d-dejta hija miżmuma fil-cache tajjeb u l-cache tal-qari huwa l-aktar parametru sinifikanti (statistikament). Naturalment, iż-żieda fin-numru ta 'messaġġi f'talba hija wkoll utli ħafna għall-prestazzjoni. L-aqwa punteġġi:

Teorija u prattika tal-użu tal-HBase
Ukoll, fl-aħħarnett, ejja nħarsu lejn il-mudell tal-blokk li l-ewwel wettaq tikseb u mbagħad poġġi:

Teorija u prattika tal-użu tal-HBase
Il-parametri kollha huma sinifikanti hawnhekk. U r-riżultati tal-mexxejja:

Teorija u prattika tal-użu tal-HBase

9. Ittestjar tat-tagħbija

Ukoll, fl-aħħar se nniedu tagħbija xi ftit jew wisq deċenti, iżda dejjem ikun aktar interessanti meta jkollok xi ħaġa x'tqabbel magħha. Fuq il-websajt ta 'DataStax, l-iżviluppatur ewlieni ta' Cassandra, hemm ir-riżultati NT ta 'numru ta' ħażniet NoSQL, inkluża l-verżjoni HBase 0.98.6-1. It-tagħbija twettqet minn 40 ħajt, daqs tad-data 100 bytes, diski SSD. Ir-riżultat tal-ittestjar tal-operazzjonijiet Read-Modify-Write wera r-riżultati li ġejjin.

Teorija u prattika tal-użu tal-HBase
Sa fejn nifhem, il-qari sar fi blokki ta 'rekords 100 u għal nodi HBase 16, it-test DataStax wera prestazzjoni ta' 10 elf operazzjoni kull sekonda.

Huwa ixxurtjat li l-cluster tagħna għandu wkoll 16-il node, iżda mhuwiex "xortik tajba" ħafna li kull wieħed għandu 64 core (threads), filwaqt li fit-test DataStax hemm biss 4. Min-naħa l-oħra, għandhom drives SSD, filwaqt li għandna HDDs jew aktar il-verżjoni l-ġdida tal-HBase u l-użu tas-CPU waqt it-tagħbija prattikament ma żdiedx b'mod sinifikanti (viżwalment b'5-10 fil-mija). Madankollu, ejja nippruvaw nibdew nużaw din il-konfigurazzjoni. L-issettjar tal-mejda default, il-qari jitwettaq fil-medda ewlenija minn 0 sa 50 miljun b'mod każwali (jiġifieri, essenzjalment ġdid kull darba). It-tabella fiha 50 miljun rekord, maqsuma f'64 diviżorju. Iċ-ċwievet huma hashed bl-użu ta 'crc32. Is-settings tal-mejda huma default, MSLAB huwa attivat. Tnedija ta '40 ħajta, kull ħajta jaqra sett ta' 100 ċwievet każwali u immedjatament jikteb il-100 byte iġġenerat lura għal dawn iċ-ċwievet.

Teorija u prattika tal-użu tal-HBase
Stand: 16 DataNode u 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ħajt). Verżjoni HBase 1.2.0-cdh5.14.2.

Ir-riżultat medju huwa eqreb għal 40 elf operazzjoni kull sekonda, li huwa ferm aħjar milli fit-test DataStax. Madankollu, għal skopijiet sperimentali, tista 'tbiddel ftit il-kundizzjonijiet. Huwa pjuttost improbabbli li x-xogħol kollu se jsir esklussivament fuq mejda waħda, u wkoll biss fuq ċwievet uniċi. Ejja nassumu li hemm ċertu sett "taħraq" ta 'ċwievet li jiġġenera t-tagħbija prinċipali. Għalhekk, ejja nippruvaw noħolqu tagħbija b'rekords akbar (10 KB), ukoll f'lottijiet ta '100, f'4 tabelli differenti u tillimita l-firxa ta' ċwievet mitluba għal elf 50. Il-graff hawn taħt turi t-tnedija ta 'ħajt 40, kull ħajt jaqra sett ta '100 ċwievet u immedjatament jikteb każwali 10 KB fuq dawn iċ-ċwievet lura.

Teorija u prattika tal-użu tal-HBase
Stand: 16 DataNode u 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ħajt). Verżjoni HBase 1.2.0-cdh5.14.2.

Matul it-tagħbija, il-kompattazzjoni maġġuri ġiet imnedija diversi drabi, kif muri hawn fuq, mingħajr din il-proċedura, il-prestazzjoni se tiddegrada gradwalment, madankollu, tqum ukoll tagħbija addizzjonali waqt l-eżekuzzjoni. Il-ġbid huma kkawżati minn diversi raġunijiet. Xi drabi l-ħjut spiċċaw jaħdmu u kien hemm pawża waqt li reġgħu bdew, xi drabi applikazzjonijiet ta 'partijiet terzi ħolqu tagħbija fuq il-cluster.

Il-qari u l-kitba immedjatament huwa wieħed mill-aktar xenarji ta’ xogħol diffiċli għal HBase. Jekk tagħmel talbiet żgħar biss, pereżempju 100 bytes, li tgħaqqadhom f'pakketti ta '10-50 elf biċċa, tista' tikseb mijiet ta 'eluf ta' operazzjonijiet kull sekonda, u s-sitwazzjoni hija simili b'talbiet li jinqraw biss. Ta 'min jinnota li r-riżultati huma radikalment aħjar minn dawk miksuba minn DataStax, l-aktar minħabba talbiet fi blokki ta' 50 elf.

Teorija u prattika tal-użu tal-HBase
Stand: 16 DataNode u 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ħajt). Verżjoni HBase 1.2.0-cdh5.14.2.

10. Konklużjonijiet

Din is-sistema hija kkonfigurata b'mod pjuttost flessibbli, iżda l-influwenza ta 'numru kbir ta' parametri għadha mhix magħrufa. Xi wħud minnhom ġew ittestjati, iżda ma ġewx inklużi fis-sett tat-test li rriżulta. Pereżempju, esperimenti preliminari wrew sinifikat insinifikanti ta 'parametru bħal DATA_BLOCK_ENCODING, li jikkodifika informazzjoni bl-użu ta' valuri minn ċelloli ġirien, li tinftiehem għal data ġġenerata b'mod każwali. Jekk tuża numru kbir ta 'oġġetti duplikati, il-qligħ jista' jkun sinifikanti. B'mod ġenerali, nistgħu ngħidu li HBase tagħti l-impressjoni ta 'database pjuttost serja u maħsuba sew, li tista' tkun pjuttost produttiva meta twettaq operazzjonijiet bi blokki kbar ta 'dejta. Speċjalment jekk ikun possibbli li l-proċessi tal-qari u tal-kitba jiġu separati fil-ħin.

Jekk hemm xi ħaġa fl-opinjoni tiegħek li mhix żvelata biżżejjed, lest ngħidlek f'aktar dettall. Nistednuk taqsam l-esperjenza tiegħek jew tiddiskuti jekk ma taqbilx ma 'xi ħaġa.

Sors: www.habr.com

Żid kumment