Teorya ug praktis sa paggamit sa HBase

Maayong hapon Ang akong ngalan mao si Danil Lipovoy, ang among team sa Sbertech nagsugod sa paggamit sa HBase isip storage alang sa operational data. Sa dagan sa pagtuon niini, ang kasinatian natipon nga gusto nakong i-systematize ug ihulagway (kami nanghinaut nga kini mapuslanon sa kadaghanan). Ang tanan nga mga eksperimento sa ubos gihimo sa HBase nga mga bersyon 1.2.0-cdh5.14.2 ug 2.0.0-cdh6.0.0-beta1.

  1. General nga arkitektura
  2. Pagsulat sa datos sa HBASE
  3. Pagbasa sa datos gikan sa HBASE
  4. Pag-cache sa datos
  5. Pagproseso sa datos sa batch MultiGet/MultiPut
  6. Estratehiya sa pagbahin sa mga lamesa ngadto sa mga rehiyon (pagbulag)
  7. Fault tolerance, compactification ug data locality
  8. Mga setting ug pasundayag
  9. Pagsulay sa Stress
  10. kaplag

1. Kinatibuk-ang arkitektura

Teorya ug praktis sa paggamit sa HBase
Ang backup nga Master naminaw sa pinitik sa kasingkasing sa aktibo sa ZooKeeper node ug, kung mawala, gikuha ang mga gimbuhaton sa agalon.

2. Isulat ang datos sa HBASE

Una, atong tan-awon ang pinakasimple nga kaso - pagsulat ug key-value nga butang sa usa ka lamesa gamit ang put(rowkey). Ang kliyente kinahanglan una nga mahibal-an kung diin ang Root Region Server (RRS), nga nagtipig sa hbase: meta table, nahimutang. Nadawat niya kini nga kasayuran gikan sa ZooKeeper. Human niana kini maka-access sa RRS ug mobasa sa hbase:meta table, diin kini mokuha sa impormasyon mahitungod sa unsa nga RegionServer (RS) ang responsable sa pagtipig sa datos alang sa usa ka gihatag nga rowkey sa table of interest. Alang sa umaabot nga paggamit, ang meta table gi-cache sa kliyente ug busa ang sunod nga mga tawag mas paspas, direkta sa RS.

Sunod, ang RS, nga nakadawat usa ka hangyo, una sa tanan gisulat kini sa WriteAheadLog (WAL), nga gikinahanglan alang sa pagbawi kung adunay usa ka crash. Dayon i-save ang datos sa MemStore. Kini usa ka buffer sa panumduman nga adunay sulud nga hut-ong sa mga yawe alang sa usa ka gihatag nga rehiyon. Ang usa ka lamesa mahimong bahinon ngadto sa mga rehiyon (mga partisyon), ang matag usa niini adunay usa ka disjoint set sa mga yawe. Gitugotan ka niini nga ibutang ang mga rehiyon sa lainlaing mga server aron makab-ot ang mas taas nga pasundayag. Bisan pa, bisan pa sa klaro nga kini nga pahayag, atong makita sa ulahi nga kini dili molihok sa tanan nga mga kaso.

Human ibutang ang usa ka entry sa MemStore, usa ka tubag ang gibalik sa kliyente nga ang entry malampuson nga naluwas. Bisan pa, sa tinuud kini gitipigan lamang sa usa ka buffer ug makuha sa disk pagkahuman sa usa ka piho nga yugto sa panahon o kung kini napuno sa bag-ong datos.

Teorya ug praktis sa paggamit sa HBase
Kung gihimo ang "Pagtangtang" nga operasyon, ang datos dili pisikal nga mapapas. Gimarkahan ra sila nga natangtang, ug ang pagkaguba mismo mahitabo sa panahon sa pagtawag sa mayor nga compact function, nga gihulagway sa mas detalyado sa parapo 7.

Ang mga file sa format nga HFile natipon sa HDFS ug matag karon ug unya ang menor de edad nga compact nga proseso gilunsad, nga yano nga naghiusa sa gagmay nga mga file ngadto sa mas dako nga wala magtangtang bisan unsa. Sa paglabay sa panahon, kini nahimo nga usa ka problema nga makita ra kung nagbasa sa datos (balikon namon kini sa ulahi).

Dugang pa sa proseso sa pagkarga nga gihulagway sa ibabaw, adunay mas epektibo nga pamaagi, nga tingali ang pinakalig-on nga bahin niini nga database - BulkLoad. Kini nahimutang sa kamatuoran nga kita independente nga naghimo sa HFiles ug gibutang kini sa disk, nga nagtugot kanato sa pag-scale sa hingpit ug pagkab-ot sa desente kaayo nga mga katulin. Sa tinuud, ang limitasyon dinhi dili HBase, apan ang mga kapabilidad sa hardware. Sa ubos mao ang mga resulta sa boot sa usa ka cluster nga naglangkob sa 16 RegionServers ug 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads), HBase version 1.2.0-cdh5.14.2.

Teorya ug praktis sa paggamit sa HBase

Dinhi imong makita nga pinaagi sa pagdugang sa gidaghanon sa mga partisyon (rehiyon) sa lamesa, ingon man sa Spark executors, kita makakuha sa usa ka pagtaas sa download speed. Usab, ang katulin nagdepende sa gidaghanon sa pagrekord. Ang dagkong mga bloke naghatag ug pagtaas sa MB/sec, gagmayng mga bloke sa gidaghanon sa gisal-ot nga mga rekord kada yunit sa panahon, ang tanang ubang butang managsama.

Mahimo ka usab magsugod sa pagkarga sa duha ka mga lamesa sa parehas nga oras ug doble ang katulin. Sa ubos imong makita nga ang pagsulat sa 10 KB nga mga bloke sa duha ka mga lamesa sa makausa mahitabo sa gikusgon nga mga 600 MB/sec sa matag usa (total 1275 MB/sec), nga motakdo sa gikusgon sa pagsulat ngadto sa usa ka lamesa nga 623 MB/sec (tan-awa ang No. 11 sa ibabaw)

Teorya ug praktis sa paggamit sa HBase
Apan ang ikaduha nga run nga adunay mga rekord nga 50 KB nagpakita nga ang katulin sa pag-download gamay ra, nga nagpakita nga kini nagkaduol sa mga kantidad sa limitasyon. Sa samang higayon, kinahanglan nimong hinumdoman nga halos walay load nga gihimo sa HBASE mismo, ang tanan nga gikinahanglan niini mao ang paghatag una og datos gikan sa hbase:meta, ug human sa paglinya sa HFiles, i-reset ang BlockCache data ug i-save ang MemStore buffer sa disk, kung kini walay sulod.

3. Pagbasa sa datos gikan sa HBASE

Kung atong hunahunaon nga ang kliyente naa na ang tanang impormasyon gikan sa hbase:meta (tan-awa ang punto 2), nan ang hangyo direktang moadto sa RS diin ang gikinahanglan nga yawe gitipigan. Una, ang pagpangita gihimo sa MemCache. Dili igsapayan kung adunay datos didto o wala, ang pagpangita gihimo usab sa BlockCache buffer ug, kung gikinahanglan, sa HFiles. Kung nakit-an ang datos sa file, ibutang kini sa BlockCache ug ibalik nga mas paspas sa sunod nga hangyo. Ang pagpangita sa HFile medyo paspas salamat sa paggamit sa Bloom filter, i.e. sa pagbasa sa usa ka gamay nga kantidad sa data, kini diha-diha dayon nagtino kon kini nga file naglangkob sa gikinahanglan nga yawe ug kon dili, unya mobalhin ngadto sa sunod nga usa.

Teorya ug praktis sa paggamit sa HBase
Nakadawat ug datos gikan niining tulo ka tinubdan, ang RS nagmugna og tubag. Sa partikular, mahimo kining ibalhin ang daghang nakit-an nga mga bersyon sa usa ka butang sa usa ka higayon kung ang kliyente nangayo og bersyon.

4. Data caching

Ang MemStore ug BlockCache buffers nag-okupar hangtod sa 80% sa gigahin nga on-heap RS memory (ang uban gitagana alang sa RS service tasks). Kung ang kasagaran nga mode sa paggamit mao nga ang mga proseso nagsulat ug gibasa dayon ang parehas nga datos, nan makatarunganon nga makunhuran ang BlockCache ug madugangan ang MemStore, tungod kay Kung ang pagsulat sa datos dili masulod sa cache alang sa pagbasa, ang BlockCache dili kaayo gamiton. Ang BlockCache buffer naglangkob sa duha ka bahin: LruBlockCache (kanunay on-heap) ug BucketCache (kasagaran off-heap o sa SSD). Ang BucketCache kinahanglan gamiton kung adunay daghang mga hangyo sa pagbasa ug dili kini mohaum sa LruBlockCache, nga mosangpot sa aktibong trabaho sa Garbage Collector. Sa parehas nga oras, dili ka magdahom nga usa ka radikal nga pagtaas sa pasundayag gikan sa paggamit sa gibasa nga cache, apan mobalik kami niini sa parapo 8

Teorya ug praktis sa paggamit sa HBase
Adunay usa ka BlockCache alang sa tibuok RS, ug adunay usa ka MemStore alang sa matag lamesa (usa alang sa matag Column Family).

Sa unsang paagi nga gihulagway sa teorya, sa pagsulat, ang data dili moadto sa cache ug sa pagkatinuod, ang maong mga parameter CACHE_DATA_ON_WRITE alang sa lamesa ug "Cache DATA sa Pagsulat" alang sa RS gibutang sa bakak. Bisan pa, sa praktis, kung magsulat kami og data sa MemStore, dayon i-flush kini sa disk (sa ingon paglimpyo niini), unya kuhaa ang resulta nga file, unya pinaagi sa pagpatuman sa usa ka get request madawat namo ang data. Dugang pa, bisan kung hingpit nimo nga gi-disable ang BlockCache ug pun-on ang lamesa sa bag-ong datos, unya i-reset ang MemStore sa disk, tangtangon kini ug hangyoa sila gikan sa lain nga sesyon, makuha gihapon sila gikan sa bisan diin. Busa ang HBase nagtipig dili lamang sa datos, kondili usab sa misteryosong mga misteryo.

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

Ang parameter nga "Cache DATA on Read" kay false. Kung naa kay mga ideya, welcome nga hisgutan kini sa mga komento.

5. Batch nga pagproseso sa datos nga MultiGet/MultiPut

Ang pagproseso sa usa ka hangyo (Get/Put/Delete) usa ka mahal nga operasyon, busa kung mahimo, kinahanglan nimo nga isagol kini sa usa ka Lista o Lista, nga nagtugot kanimo nga makakuha usa ka hinungdanon nga pagpauswag sa pasundayag. Tinuod kini ilabi na alang sa operasyon sa pagsulat, apan sa pagbasa adunay mosunod nga lit-ag. Ang graph sa ubos nagpakita sa oras sa pagbasa sa 50 ka mga rekord gikan sa MemStore. Ang pagbasa gihimo sa usa ka hilo ug ang pinahigda nga axis nagpakita sa gidaghanon sa mga yawe sa hangyo. Dinhi imong makita nga kung ang pagtaas sa usa ka libo nga mga yawe sa usa ka hangyo, ang oras sa pagpatuman nahulog, i.e. pagtaas sa tulin. Bisan pa, sa MSLAB mode nga gipagana pinaagi sa default, pagkahuman niini nga threshold magsugod ang usa ka radikal nga pagkunhod sa pasundayag, ug kung mas dako ang kantidad sa datos sa rekord, mas taas ang oras sa pag-operate.

Teorya ug praktis sa paggamit sa HBase

Ang mga pagsulay gihimo sa usa ka virtual nga makina, 8 ka mga core, bersyon HBase 2.0.0-cdh6.0.0-beta1.

Ang MSLAB nga mode kay gidesinyo aron mamenosan ang heap fragmentation, nga mahitabo tungod sa pagsagol sa bag-o ug daan nga henerasyon nga datos. Isip usa ka workaround, kung ma-enable ang MSLAB, ang datos ibutang sa medyo gagmay nga mga cell (mga tipak) ug giproseso sa mga tipak. Ingon usa ka sangputanan, kung ang gidaghanon sa gihangyo nga pakete sa datos molapas sa gigahin nga gidak-on, ang pasundayag mous-os pag-ayo. Sa laing bahin, ang pagpalong niini nga mode dili usab maayo, tungod kay kini mosangpot sa paghunong tungod sa GC sa mga gutlo sa intensive data processing. Ang usa ka maayo nga solusyon mao ang pagdugang sa gidaghanon sa cell sa kaso sa aktibo nga pagsulat pinaagi sa pagbutang dungan sa pagbasa. Angay nga hinumdoman nga ang problema dili mahitabo kung, pagkahuman sa pagrekord, gipadagan nimo ang flush command, nga nag-reset sa MemStore sa disk, o kung nag-load ka gamit ang BulkLoad. Ang lamesa sa ubos nagpakita nga ang mga pangutana gikan sa MemStore alang sa mas dako (ug parehas nga kantidad) nga datos moresulta sa paghinay. Bisan pa, pinaagi sa pagdugang sa chunksize gibalik namon ang oras sa pagproseso sa normal.

Teorya ug praktis sa paggamit sa HBase
Dugang sa pagdugang sa chunksize, ang pagbahin sa datos sa rehiyon makatabang, i.e. pagbahin sa lamesa. Nagresulta kini sa mas gamay nga mga hangyo nga moabut sa matag rehiyon ug kung kini mohaum sa usa ka cell, ang tubag nagpabilin nga maayo.

6. Estratehiya sa pagbahin sa mga lamesa ngadto sa mga rehiyon (pagbulag)

Tungod kay ang HBase usa ka key-value storage ug ang partitioning gihimo pinaagi sa yawe, importante kaayo nga bahinon ang datos nga parehas sa tanang rehiyon. Pananglitan, ang pagbahin sa maong lamesa ngadto sa tulo ka bahin moresulta sa pagkabahin sa datos ngadto sa tulo ka rehiyon:

Teorya ug praktis sa paggamit sa HBase
Nahitabo nga kini modala ngadto sa usa ka mahait nga paghinay kung ang datos nga na-load sa ulahi ingon, pananglitan, taas nga mga kantidad, kadaghanan kanila nagsugod sa parehas nga digit, pananglitan:

1000001
1000002
...
1100003

Tungod kay ang mga yawe gitipigan ingon usa ka byte array, silang tanan magsugod sa parehas ug nahisakop sa parehas nga rehiyon #1 nga nagtipig niini nga sakup sa mga yawe. Adunay daghang mga pamaagi sa pagbahinbahin:

HexStringSplit – Gihimo ang yawe ngadto sa usa ka hexadecimal nga gi-encode nga string sa han-ay nga "00000000" => "FFFFFFFF" ug padding sa wala nga adunay mga sero.

UniformSplit – Gihimo ang yawe ngadto sa byte array nga adunay hexadecimal encoding sa range nga "00" => "FF" ug padding sa tuo nga adunay mga zero.

Dugang pa, mahimo nimong ipiho ang bisan unsang range o set sa mga yawe alang sa pagbahin ug pag-configure sa auto-splitting. Bisan pa, usa sa pinakasimple ug labing epektibo nga mga pamaagi mao ang UniformSplit ug ang paggamit sa hash concatenation, pananglitan ang labing mahinungdanon nga parisan sa mga byte gikan sa pagpadagan sa yawe pinaagi sa CRC32(rowkey) function ug ang rowkey mismo:

hash + rowkey

Unya ang tanan nga datos ipang-apod-apod nga parehas sa mga rehiyon. Kung magbasa, ang unang duha ka byte ilabay lamang ug ang orihinal nga yawe magpabilin. Gikontrol usab sa RS ang gidaghanon sa datos ug mga yawe sa rehiyon ug, kung ang mga limitasyon nalapas, awtomatiko nga gibahin kini sa mga bahin.

7. Fault tolerance ug data locality

Tungod kay usa ra ka rehiyon ang responsable sa matag set sa mga yawe, ang solusyon sa mga problema nga adunay kalabotan sa mga pag-crash sa RS o pag-decommissioning mao ang pagtipig sa tanan nga kinahanglan nga datos sa HDFS. Kung nahulog ang RS, namatikdan kini sa agalon pinaagi sa pagkawala sa pinitik sa kasingkasing sa ZooKeeper node. Dayon kini nag-assign sa gisilbi nga rehiyon ngadto sa laing RS ​​ug tungod kay ang HFiles gitipigan sa usa ka gipang-apod-apod nga sistema sa file, ang bag-ong tag-iya nagbasa niini ug nagpadayon sa pag-alagad sa datos. Bisan pa, tungod kay ang pipila sa mga datos mahimong naa sa MemStore ug wala’y oras aron makasulod sa HFiles, ang WAL, nga gitipigan usab sa HDFS, gigamit aron mapasig-uli ang kasaysayan sa mga operasyon. Human ma-apply ang mga pagbag-o, ang RS makahimo sa pagtubag sa mga hangyo, apan ang paglihok nagdala ngadto sa kamatuoran nga ang pipila sa mga datos ug ang mga proseso nga nag-alagad kanila natapos sa lainlaing mga node, i.e. nagkunhod ang lokalidad.

Ang solusyon sa problema mao ang mayor nga compaction - kini nga pamaagi nagpalihok sa mga file ngadto sa mga node nga responsable alang kanila (diin nahimutang ang ilang mga rehiyon), ingon nga usa ka resulta nga sa panahon niini nga pamaagi ang load sa network ug mga disk nagdugang sa malantip. Bisan pa, sa umaabot, ang pag-access sa datos mamatikdan nga gipadali. Dugang pa, ang major_compaction naghimo sa paghiusa sa tanang HFiles ngadto sa usa ka file sulod sa usa ka rehiyon, ug paglimpyo usab sa datos depende sa mga setting sa lamesa. Pananglitan, mahimo nimong ipiho ang gidaghanon sa mga bersyon sa usa ka butang nga kinahanglan nga huptan o ang tibuok kinabuhi nga pagkahuman ang butang pisikal nga mapapas.

Kini nga pamaagi mahimong adunay positibo nga epekto sa operasyon sa HBase. Ang hulagway sa ubos nagpakita kon sa unsang paagi mius-os ang performance isip resulta sa aktibong pagrekord sa datos. Dinhi imong makita kung giunsa ang 40 nga mga hilo nagsulat sa usa ka lamesa ug 40 nga mga hilo nga dungan nga nagbasa sa datos. Ang pagsulat sa mga hilo makamugna ug mas daghang HFiles, nga gibasa sa ubang mga hilo. Ingon usa ka sangputanan, daghang mga datos ang kinahanglan nga tangtangon gikan sa panumduman ug sa kadugayan ang GC nagsugod sa pagtrabaho, nga halos maparalisa ang tanan nga trabaho. Ang paglunsad sa mayor nga compaction misangpot sa paghawan sa mga miresulta nga mga tinumpag ug pagpahiuli sa produktibidad.

Teorya ug praktis sa paggamit sa HBase
Ang pagsulay gihimo sa 3 DataNodes ug 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 nga mga hilo). HBase nga bersyon 1.2.0-cdh5.14.2

Angayan nga matikdan nga ang dagkong compaction gilunsad sa usa ka "live" nga lamesa, diin ang datos aktibo nga gisulat ug gibasa. Adunay usa ka pahayag online nga kini mahimong mosangpot sa usa ka sayup nga tubag kung nagbasa sa datos. Aron masusi, usa ka proseso ang gilunsad nga nakamugna og bag-ong datos ug gisulat kini sa usa ka lamesa. Pagkahuman gibasa dayon nako ug gisusi kung ang sangputanan nga kantidad nahiuyon sa nahisulat. Samtang kini nga proseso nagdagan, ang major compaction gipadagan mga 200 ka beses ug walay bisan usa ka kapakyasan ang natala. Tingali ang problema panagsa ra ug sa panahon lamang sa taas nga load, mao nga mas luwas nga ihunong ang pagsulat ug pagbasa nga mga proseso sama sa giplano ug paghimo sa paglimpyo aron malikayan ang ingon nga GC drawdowns.

Usab, ang major compaction dili makaapekto sa estado sa MemStore; aron ma-flush kini sa disk ug ma-compact kini, kinahanglan nimo nga gamiton ang flush (connection.getAdmin().flush(TableName.valueOf(tblName))).

8. Mga setting ug pasundayag

Sama sa nahisgotan na, ang HBase nagpakita sa labing dako nga kalampusan niini diin wala kini kinahanglana nga buhaton, kung gipatuman ang BulkLoad. Bisan pa, kini magamit sa kadaghanan sa mga sistema ug mga tawo. Bisan pa, kini nga himan mas angay alang sa pagtipig sa datos sa kadaghanan sa dagkong mga bloke, samtang kung ang proseso nanginahanglan daghang mga hangyo sa pagbasa ug pagsulat, ang mga mando nga Get and Put nga gihulagway sa ibabaw gigamit. Aron mahibal-an ang kamalaumon nga mga parameter, ang mga paglansad gihimo uban ang lainlaing mga kombinasyon sa mga parameter sa lamesa ug mga setting:

  • 10 ka mga hilo ang dungan nga gilunsad 3 ka beses sa usa ka laray (tawgon nato kini nga usa ka bloke sa mga hilo).
  • Ang oras sa pag-opera sa tanan nga mga hilo sa usa ka bloke gi-average ug mao ang katapusan nga sangputanan sa operasyon sa bloke.
  • Ang tanan nga mga hilo nagtrabaho sa parehas nga lamesa.
  • Sa wala pa ang matag pagsugod sa block sa hilo, gihimo ang usa ka dako nga compaction.
  • Ang matag block naghimo lamang sa usa sa mosunod nga mga operasyon:

-Ibutang
β€”Pagkuha
β€”Pagkuha+Pagbutang

  • Ang matag bloke naghimo sa 50 nga mga pag-usab sa operasyon niini.
  • Ang block nga gidak-on sa usa ka rekord kay 100 bytes, 1000 bytes o 10000 bytes (random).
  • Ang mga bloke gilusad uban ang lain-laing gidaghanon sa gipangayo nga mga yawe (bisan usa ka yawe o 10).
  • Ang mga bloke gipadagan ubos sa lainlaing mga setting sa lamesa. Nausab ang mga parameter:

β€” BlockCache = gi-on o gi-off
β€” BlockSize = 65 KB o 16 KB
- Mga partisyon = 1, 5 o 30
β€” MSLAB = gipaandar o gibalda

Busa ang block ingon niini:

a. Ang MSLAB mode gi-on/off.
b. Nahimo ang usa ka lamesa diin gitakda ang mosunod nga mga parameter: BlockCache = true/none, BlockSize = 65/16 Kb, Partition = 1/5/30.
c. Gitakda ang compression sa GZ.
d. 10 ka mga thread ang dungan nga gilusad sa pagbuhat sa 1/10 put/get/get+put nga mga operasyon niini nga lamesa nga adunay mga rekord nga 100/1000/10000 bytes, nga naghimo sa 50 ka mga pangutana sa usa ka laray (random nga mga yawe).
e. Ang punto d gisubli sa tulo ka beses.
f. Ang oras sa pag-opera sa tanan nga mga hilo gi-average.

Ang tanan nga posible nga mga kombinasyon gisulayan. Gitagna nga ang katulin moubos samtang ang gidak-on sa rekord nagdugang, o ang pag-disable sa caching mahimong hinungdan sa paghinay. Bisan pa, ang katuyoan mao ang pagsabut sa lebel ug kamahinungdanon sa impluwensya sa matag parameter, mao nga ang nakolekta nga datos gipakaon sa input sa usa ka linear regression function, nga nagpaposible sa pagsusi sa kamahinungdanon gamit ang t-statistics. Sa ubos mao ang mga resulta sa mga bloke nga naghimo sa mga operasyon sa Put. Bug-os nga hugpong sa mga kombinasyon 2*2*3*2*3 = 144 ka kapilian + 72 tk. ang uban gihimo kaduha. Busa, adunay 216 ka dagan sa kinatibuk-an:

Teorya ug praktis sa paggamit sa HBase
Ang pagsulay gihimo sa usa ka mini-cluster nga gilangkuban sa 3 DataNodes ug 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 nga mga hilo). HBase nga bersyon 1.2.0-cdh5.14.2.

Ang labing kataas nga katulin sa pagsal-ot sa 3.7 segundos nakuha sa MSLAB mode nga gipalong, sa usa ka lamesa nga adunay usa ka partisyon, nga gipagana ang BlockCache, BlockSize = 16, mga rekord nga 100 bytes, 10 ka piraso matag pakete.
Ang pinakaubos nga insertion speed nga 82.8 sec nakuha gamit ang MSLAB mode enabled, sa usa ka lamesa nga adunay usa ka partition, nga ang BlockCache enabled, BlockSize = 16, mga record nga 10000 bytes, 1 matag usa.

Karon atong tan-awon ang modelo. Nakita namon ang maayo nga kalidad sa modelo nga gibase sa R2, apan klaro kaayo nga ang extrapolation kontraindikado dinhi. Ang aktuwal nga pamatasan sa sistema kung ang pagbag-o sa mga parameter dili linear; kini nga modelo kinahanglan dili alang sa mga panagna, apan aron masabtan kung unsa ang nahitabo sa sulod sa gihatag nga mga parameter. Pananglitan, dinhi atong makita gikan sa sukdanan sa Estudyante nga ang BlockSize ug BlockCache nga mga parametro dili igsapayan alang sa Put nga operasyon (nga kasagarang matag-an):

Teorya ug praktis sa paggamit sa HBase
Apan ang kamatuoran nga ang pagdugang sa gidaghanon sa mga partisyon mosangpot sa pagkunhod sa pasundayag medyo wala damha (nakita na namo ang positibo nga epekto sa pagdugang sa gidaghanon sa mga partisyon nga adunay BulkLoad), bisan kung masabtan. Una, alang sa pagproseso, kinahanglan ka nga maghimo mga hangyo sa 30 nga mga rehiyon imbis sa usa, ug ang gidaghanon sa datos dili ingon nga kini makahatag usa ka ganansya. Ikaduha, ang kinatibuk-ang oras sa pag-opera gitino sa pinakahinay nga RS, ug tungod kay ang gidaghanon sa DataNodes mas ubos kay sa gidaghanon sa mga RS, ang ubang mga rehiyon adunay zero lokalidad. Aw, atong tan-awon ang top five:

Teorya ug praktis sa paggamit sa HBase
Karon atong susihon ang mga resulta sa pagpatuman sa Get blocks:

Teorya ug praktis sa paggamit sa HBase
Ang gidaghanon sa mga partisyon nawad-an sa kahinungdanon, nga lagmit gipatin-aw sa kamatuoran nga ang datos maayo nga naka-cache ug ang gibasa nga cache mao ang labing mahinungdanon (statistika) nga parameter. Natural, ang pagdugang sa gidaghanon sa mga mensahe sa usa ka hangyo mapuslanon usab alang sa pasundayag. Top score:

Teorya ug praktis sa paggamit sa HBase
Aw, sa katapusan, atong tan-awon ang modelo sa block nga una nga gihimo get ug dayon ibutang:

Teorya ug praktis sa paggamit sa HBase
Ang tanan nga mga parameter hinungdanon dinhi. Ug ang mga resulta sa mga lider:

Teorya ug praktis sa paggamit sa HBase

9. Pagsulay sa load

Aw, sa katapusan maglansad kami usa ka labi pa o dili kaayo disente nga karga, apan kanunay nga labi ka makapaikag kung naa kay butang nga itandi. Sa website sa DataStax, ang yawe nga developer sa Cassandra, adunay Resulta NT sa usa ka gidaghanon sa NoSQL storages, lakip na ang HBase nga bersyon 0.98.6-1. Ang pagkarga gihimo sa 40 ka mga hilo, gidak-on sa datos nga 100 ka byte, mga disk sa SSD. Ang resulta sa pagsulay sa Read-Modify-Write nga mga operasyon nagpakita sa mosunod nga mga resulta.

Teorya ug praktis sa paggamit sa HBase
Sa akong nasabtan, ang pagbasa gihimo sa mga bloke sa 100 ka mga rekord ug alang sa 16 ka HBase nodes, ang DataStax test nagpakita sa usa ka pasundayag sa 10 ka libo nga mga operasyon kada segundo.

Maayo na lang kay ang among cluster aduna usab 16 ka node, pero dili kaayo β€œswerte” nga ang matag usa adunay 64 ka mga cores (threads), samtang sa DataStax test aduna lang 4. Sa laing bahin, sila adunay mga SSD drive, samtang kami adunay mga HDD. o labaw pa ang bag-ong bersyon sa HBase ug paggamit sa CPU sa panahon sa pagkarga halos wala kaayo motaas (bisan sa 5-10 porsyento). Bisan pa, sulayan naton nga sugdan ang paggamit niini nga pag-configure. Default nga mga setting sa lamesa, ang pagbasa gihimo sa yawe nga han-ay gikan sa 0 ngadto sa 50 milyon nga random (pananglitan, bag-o matag higayon). Ang lamesa adunay 50 milyon nga mga rekord, gibahin sa 64 nga mga partisyon. Ang mga yawe gi-hash gamit ang crc32. Ang mga setting sa lamesa kay default, ang MSLAB gi-enable. Paglusad sa 40 ka mga hilo, ang matag hilo nagbasa sa usa ka set sa 100 ka random nga mga yawe ug diha-diha dayon isulat ang namugna nga 100 ka byte balik niini nga mga yawe.

Teorya ug praktis sa paggamit sa HBase
Pagbarug: 16 DataNode ug 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 nga mga hilo). HBase nga bersyon 1.2.0-cdh5.14.2.

Ang kasagaran nga resulta mas duol sa 40 ka libo nga mga operasyon matag segundo, nga mas maayo kay sa pagsulay sa DataStax. Bisan pa, alang sa mga katuyoan sa eksperimento, mahimo nimong usbon gamay ang mga kondisyon. Dili gyud tingali nga ang tanan nga trabaho himuon nga eksklusibo sa usa ka lamesa, ug usab sa talagsaon nga mga yawe. Ibutang nato nga adunay usa ka "init" nga hugpong sa mga yawe nga nagmugna sa nag-unang karga. Busa, atong sulayan ang paghimo og usa ka load nga adunay mas dagkong mga rekord (10 KB), usab sa mga batch nga 100, sa 4 ka lain-laing mga lamesa ug gilimitahan ang han-ay sa gihangyo nga mga yawe ngadto sa 50 ka libo. Ang graph sa ubos nagpakita sa paglunsad sa 40 ka mga thread, ang matag thread mabasa usa ka set sa 100 ka mga yawe ug diha-diha dayon nagsulat ug random 10 KB niini nga mga yawe balik.

Teorya ug praktis sa paggamit sa HBase
Pagbarug: 16 DataNode ug 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 nga mga hilo). HBase nga bersyon 1.2.0-cdh5.14.2.

Atol sa pagkarga, daghang beses nga gilunsad ang dagkong compaction, sama sa gipakita sa ibabaw, kung wala kini nga pamaagi, ang pasundayag anam-anam nga madaot, bisan pa, ang dugang nga pagkarga usab motungha sa panahon sa pagpatuman. Ang mga pagkubkob tungod sa lainlaing mga hinungdan. Usahay ang mga hilo nahuman sa pagtrabaho ug adunay usa ka paghunong samtang sila gi-restart, usahay ang mga aplikasyon sa ikatulo nga partido naghimo og usa ka load sa cluster.

Ang pagbasa ug pagsulat dayon usa sa labing lisud nga mga senaryo sa trabaho alang sa HBase. Kung maghimo ka lamang og gagmay nga mga hangyo, pananglitan 100 bytes, nga gihiusa kini ngadto sa mga pakete nga 10-50 ka libo nga mga piraso, mahimo nimong makuha ang gatusan ka libo nga mga operasyon kada segundo, ug ang sitwasyon susama sa mga read-only nga mga hangyo. Angay nga matikdan nga ang mga resulta mas maayo kay sa nakuha sa DataStax, labaw sa tanan tungod sa mga hangyo sa mga bloke sa 50 ka libo.

Teorya ug praktis sa paggamit sa HBase
Pagbarug: 16 DataNode ug 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 nga mga hilo). HBase nga bersyon 1.2.0-cdh5.14.2.

10. Mga konklusyon

Ang kini nga sistema dali nga na-configure, apan ang impluwensya sa daghang mga parameter nagpabilin nga wala mahibal-an. Ang uban kanila gisulayan, apan wala maapil sa resulta nga set sa pagsulay. Pananglitan, ang pasiuna nga mga eksperimento nagpakita sa dili hinungdanon nga kahulogan sa usa ka parameter sama sa DATA_BLOCK_ENCODING, nga nag-encode sa impormasyon gamit ang mga bili gikan sa silingang mga selula, nga masabtan alang sa random nga namugna nga datos. Kung mogamit ka og daghang gidaghanon sa mga duplicate nga mga butang, ang ganansya mahimong mahinungdanon. Sa kinatibuk-an, makaingon kita nga ang HBase naghatag sa impresyon sa usa ka medyo seryoso ug maayo nga gihunahuna nga database, nga mahimong mabungahon kung maghimo mga operasyon nga adunay daghang mga bloke sa datos. Ilabi na kung posible nga mabulag ang mga proseso sa pagbasa ug pagsulat sa oras.

Kung adunay usa ka butang sa imong opinyon nga dili igo nga gibutyag, andam ako nga isulti kanimo sa mas detalyado. Gidapit ka namo nga ipaambit ang imong kasinatian o hisgutan kung dili ka mouyon sa usa ka butang.

Source: www.habr.com

Idugang sa usa ka comment