{"id":55302,"date":"2020-01-17T00:00:00","date_gmt":"2020-01-16T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/teoriya-i-praktika-ispolzovaniya-hbase"},"modified":"2020-02-18T14:03:24","modified_gmt":"2020-02-18T11:03:24","slug":"teoriya-i-praktika-ispolzovaniya-hbase","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-hbase","title":{"rendered":"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje! Emri im \u00ebsht\u00eb Danil Lipovoy, ekipi yn\u00eb n\u00eb Sbertech ka filluar t\u00eb p\u00ebrdor\u00eb HBase si depozita p\u00ebr t\u00eb dh\u00ebnat operative. Gjat\u00eb studimit t\u00eb tij, \u00ebsht\u00eb grumbulluar p\u00ebrvoja, t\u00eb cil\u00ebn desh\u00ebm ta sistematizojm\u00eb dhe ta p\u00ebrshkruajm\u00eb (shpresojm\u00eb se do t\u00eb jet\u00eb e dobishme p\u00ebr shum\u00ebk\u00ebnd). T\u00eb gjitha eksperimentet e m\u00ebposhtme jan\u00eb kryer me versionet HBase 1.2.0-cdh5.14.2 dhe 2.0.0-cdh6.0.0-beta1. <\/p>\n<ol>\n<li>Arkitektura e p\u00ebrgjithshme <\/li>\n<li>Shkrimi i t\u00eb dh\u00ebnave n\u00eb HBASE<\/li>\n<li>Leximi i t\u00eb dh\u00ebnave nga HBASE<\/li>\n<li>Keshimi i t\u00eb dh\u00ebnave<\/li>\n<li>Procesimi i paketave t\u00eb t\u00eb dh\u00ebnave MultiGet\/MultiPut<\/li>\n<li>Strategjia e ndarjes s\u00eb tabelave n\u00eb rajone (shp\u00ebrndarja)<\/li>\n<li>Koh\u00ebzgjatja, kompakti dhe lokaliteti i t\u00eb dh\u00ebnave<\/li>\n<li>C\u00ebshtjet dhe performanca<\/li>\n<li>Testimi i ngarkes\u00ebs<\/li>\n<li>P\u00ebrfundimet<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>1. Arkitektura e p\u00ebrgjithshme<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/30800d8a48de4c52ff1650a4f1dec4c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMaster-i rezerv\u00eb d\u00ebgjon heartbeat-in e aktiv n\u00eb nodin ZooKeeper dhe n\u00eb rast se zhduket merr funksionet e master-it mbi vete. <\/p>\n<h2>2. Shkrimi i t\u00eb dh\u00ebnave n\u00eb HBASE<\/h2>\n<p>\nM\u00eb par\u00eb, le t\u00eb shqyrtojm\u00eb rastin m\u00eb t\u00eb thjesht\u00eb \u2013 shkrimin e nj\u00eb objekti \u00e7el\u00ebs-vler\u00eb n\u00eb nj\u00eb tabel\u00eb me an\u00eb t\u00eb put(rowkey). Klienti fillimisht duhet t\u00eb kuptoj\u00eb se ku ndodhet rajoni rr\u00ebnj\u00ebsor i serverit (Root Region Server \u2013 RRS), i cili ruan tabel\u00ebn hbase:meta. K\u00ebt\u00eb informacion e merr nga ZooKeeper. Pas k\u00ebsaj, ai drejtohet te RRS dhe lexon tabel\u00ebn hbase:meta, nga e cila nxjerr informacionin, se cili RegionServer (RS) \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr ruajtjen e t\u00eb dh\u00ebnave p\u00ebr \u00e7el\u00ebsin e caktuar rowkey n\u00eb tabel\u00ebn q\u00eb e intereson. P\u00ebr q\u00ebllime p\u00ebrdorimi n\u00eb t\u00eb ardhmen, tabela meta keshon nga klienti dhe prandaj subvencionet e m\u00ebvonshme shkojn\u00eb m\u00eb shpejt, direkt te RS.<\/p>\n<p>M\u00eb pas, RS, duke marr\u00eb k\u00ebrkes\u00ebn, fillimisht e shkruan at\u00eb n\u00eb WriteAheadLog (WAL), q\u00eb \u00ebsht\u00eb e nevojshme p\u00ebr rikuperimin n\u00eb rast r\u00ebnie. Pastaj ruan t\u00eb dh\u00ebnat n\u00eb MemStore. Ky \u00ebsht\u00eb nj\u00eb tampon n\u00eb kujtes\u00eb, i cili p\u00ebrmban nj\u00eb grup t\u00eb renditur t\u00eb \u00e7el\u00ebsave t\u00eb k\u00ebtij rajoni. Tabela mund t\u00eb ndahet n\u00eb rajone (partita), secili prej t\u00eb cil\u00ebve p\u00ebrmban nj\u00eb grup t\u00eb pandryshuesh\u00ebm \u00e7el\u00ebsh. Kjo lejon, duke vendosur rajonet n\u00eb server\u00eb t\u00eb ndrysh\u00ebm, t\u00eb arrihet nj\u00eb performanc\u00eb m\u00eb e lart\u00eb. Megjithat\u00eb, pavar\u00ebsisht qart\u00ebsis\u00eb s\u00eb k\u00ebtij pohimi, m\u00eb pas do t\u00eb shohim se kjo nuk funksionon n\u00eb t\u00eb gjitha rastet.<\/p>\n<p>Pasi t\u00eb vendoset regjistrimi n\u00eb MemStore, klienti merr nj\u00eb p\u00ebrgjigje se regjistrimi \u00ebsht\u00eb ruajtur me sukses. Nd\u00ebrkoh\u00eb, n\u00eb t\u00eb v\u00ebrtet\u00eb ai ruhet vet\u00ebm n\u00eb tampon dhe do t\u00eb kaloj\u00eb n\u00eb disk vet\u00ebm pas kalimit t\u00eb nj\u00eb intervali t\u00eb caktuar kohe ose kur mbushet me t\u00eb dh\u00ebna t\u00eb reja. <\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/10f4d5d600a20882690f5cc81322bc41.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKur operacioni \"Fshi\" ekzekutohet, nuk ndodh nj\u00eb eliminim fizik i t\u00eb dh\u00ebnave. Ato thjesht sh\u00ebnohen si t\u00eb fshira, nd\u00ebrsa shkat\u00ebrrimi ndodh n\u00eb momentin e thirrjes s\u00eb funksionit major compact, p\u00ebr t\u00eb cilin \u00ebsht\u00eb shkruar m\u00eb shum\u00eb n\u00eb p.7.<\/p>\n<p>Skedar\u00ebt n\u00eb formatin HFile grumbullohen n\u00eb HDFS dhe nga koha n\u00eb koh\u00eb nis nj\u00eb proces minor compact, i cili thjesht ngjitesh skedar\u00ebt e vegj\u00ebl n\u00eb m\u00eb t\u00eb m\u00ebdhenj, pa fshir\u00eb asgj\u00eb. Me kalimin e koh\u00ebs, kjo b\u00ebhet nj\u00eb problem q\u00eb shfaqet vet\u00ebm gjat\u00eb leximit t\u00eb t\u00eb dh\u00ebnave (p\u00ebr k\u00ebt\u00eb do t\u00eb kthehemi m\u00eb von\u00eb). <\/p>\n<p>P\u00ebrve\u00e7 procesit t\u00eb ngarkes\u00ebs t\u00eb p\u00ebrshkruar m\u00eb sip\u00ebr, ekziston nj\u00eb procedur\u00eb shum\u00eb m\u00eb efikase, e cila p\u00ebrmban ndoshta pik\u00ebn m\u00eb t\u00eb fort\u00eb t\u00eb k\u00ebsaj DB - BulkLoad. Ajo konsiston n\u00eb faktin se ne vet\u00eb formojm\u00eb HFiles dhe i vendosim n\u00eb disk, q\u00eb na lejon t\u00eb shkall\u00ebzojm\u00eb mjaft mir\u00eb dhe t\u00eb arrijm\u00eb shpejt\u00ebsi t\u00eb konsiderueshme. N\u00eb thelb, kufizimi k\u00ebtu nuk \u00ebsht\u00eb HBase, por mund\u00ebsit\u00eb e harduerit. M\u00eb posht\u00eb jan\u00eb rezultatet e ngarkes\u00ebs n\u00eb nj\u00eb klaster q\u00eb p\u00ebrb\u00ebhet nga 16 RegionServers dhe 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 procese), versioni HBase 1.2.0-cdh5.14.2. <\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/4e4452b216eda3269a364ea97c49120f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00ebtu shihet se duke rritur numrin e particioneve (rajoneve) n\u00eb tabel\u00eb, si dhe ekzekutor\u00ebt e Spark, arrijm\u00eb nj\u00eb rritje t\u00eb shpejt\u00ebsis\u00eb s\u00eb ngarkes\u00ebs. Gjithashtu, shpejt\u00ebsia varet nga volumi i shkruar. Blloqet e m\u00ebdha japin nj\u00eb rritje n\u00eb matjen MB\/sek, nd\u00ebrsa ato t\u00eb vogla n\u00eb numrin e sh\u00ebnimeve t\u00eb futur n\u00eb nj\u00eb nj\u00ebsi kohe, n\u00ebn kushte t\u00eb barabarta. <\/p>\n<p>Gjithashtu, mund t\u00eb nisim ngarkimin n\u00eb dy tabela nj\u00ebkoh\u00ebsisht dhe t\u00eb marrim dyfishin e shpejt\u00ebsis\u00eb. M\u00eb posht\u00eb shihet se shkruarja e blloqeve 10 KB menj\u00ebher\u00eb n\u00eb dy tabela shkon me nj\u00eb shpejt\u00ebsi prej rreth 600 Mb\/sek n\u00eb secil\u00ebn (shuma 1275 Mb\/sek), q\u00eb p\u00ebrputhet me shpejt\u00ebsin\u00eb e shkruarjes n\u00eb nj\u00eb tabel\u00eb 623 MB\/sek (shih \u211611 m\u00eb sip\u00ebr)<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/9f1b4fc0c80b797111494d400e9ce332.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNd\u00ebrsa, ekzekutimi i dyt\u00eb me sh\u00ebnime n\u00eb 50 KB tregon se shpejt\u00ebsia e ngarkes\u00ebs rritet tashm\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb vog\u00ebl, q\u00eb flet p\u00ebr afrim ndaj vlerave maksimale. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, duhet t\u00eb merret parasysh se sam\u00eb HBASE k\u00ebtu nuk krijon ngarkes\u00eb t\u00eb r\u00ebnd\u00eb, gjith\u00e7ka q\u00eb k\u00ebrkohet prej tij \u00ebsht\u00eb s\u00eb pari t\u00eb dor\u00ebzoj\u00eb t\u00eb dh\u00ebnat nga hbase:meta, dhe pas vendosjes s\u00eb HFiles, t\u00eb shkarkoj\u00eb t\u00eb dh\u00ebnat BlockCache dhe t\u00eb ruaj\u00eb tamponin MemStore n\u00eb disk, n\u00ebse ai nuk \u00ebsht\u00eb bosh.<\/p>\n<h2>3. Leximi i t\u00eb dh\u00ebnave nga HBASE<\/h2>\n<p>\nN\u00ebse merret parasysh se t\u00eb gjitha informacionet nga hbase:meta tashm\u00eb i ka klienti (shih. p.2), at\u00ebher\u00eb k\u00ebrkesa shkon menj\u00ebher\u00eb n\u00eb at\u00eb RS, ku ruhet \u00e7el\u00ebsi i nevojsh\u00ebm. Fillimisht, k\u00ebrkimi kryhet n\u00eb MemCache. Pavar\u00ebsisht n\u00ebse atje ka t\u00eb dh\u00ebna apo jo, k\u00ebrkimi kryhet gjithashtu n\u00eb tamponin BlockCache dhe, n\u00ebse \u00ebsht\u00eb e nevojshme, n\u00eb HFiles. N\u00ebse t\u00eb dh\u00ebnat jan\u00eb gjetur n\u00eb skedarin, ato vendosen n\u00eb BlockCache dhe p\u00ebr k\u00ebrkes\u00ebn e ardhshme do t\u00eb kthehen m\u00eb shpejt. K\u00ebrkimi n\u00eb HFile ndodh mjaft shpejt p\u00ebr shkak t\u00eb p\u00ebrdorimit t\u00eb filtrit Bloom, dmth duke lexuar nj\u00eb volum t\u00eb vog\u00ebl t\u00eb dh\u00ebnash, ai e p\u00ebrcakton menj\u00ebher\u00eb n\u00ebse ky skedar p\u00ebrmban \u00e7el\u00ebsin e nevojsh\u00ebm dhe, n\u00ebse nuk ka, kalon te i siguiente.<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/a21b1b825a84cfd02507ec334e9452fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDuke marr\u00eb t\u00eb dh\u00ebnat nga k\u00ebto tre burime, RS formon p\u00ebrgjigjen. N\u00eb ve\u00e7anti, ai mund t\u00eb transmetoj\u00eb menj\u00ebher\u00eb disa versione t\u00eb gjetura t\u00eb objektit n\u00ebse klienti ka k\u00ebrkuar versionim.<\/p>\n<h2>4. Keshimi i t\u00eb dh\u00ebnave<\/h2>\n<p>\nBuffers MemStore dhe BlockCache z\u00ebn\u00eb deri n\u00eb 80% t\u00eb memories s\u00eb rezervuar on-heap t\u00eb RS (pjesa tjet\u00ebr \u00ebsht\u00eb rezervuar p\u00ebr detyra sh\u00ebrbimi t\u00eb RS). N\u00ebse modelet tipike t\u00eb p\u00ebrdorimit jan\u00eb t\u00eb tilla q\u00eb proceset shkruajn\u00eb dhe menj\u00ebher\u00eb lexojn\u00eb t\u00eb nj\u00ebjtat t\u00eb dh\u00ebna, ka kuptim t\u00eb ulet BlockCache dhe t\u00eb rritet MemStore, pasi gjat\u00eb shkrimit t\u00eb dh\u00ebnat n\u00eb cache nuk hyjn\u00eb p\u00ebr lexim, k\u00ebshtu q\u00eb p\u00ebrdorimi i BlockCache do t\u00eb ndodh\u00eb m\u00eb rrall\u00eb. Buffer BlockCache p\u00ebrb\u00ebhet nga dy pjes\u00eb: LruBlockCache (p\u00ebrher\u00eb on-heap) dhe BucketCache (n\u00eb p\u00ebrgjith\u00ebsi off-heap ose n\u00eb SSD). BucketCache duhet t\u00eb p\u00ebrdoret kur ka shum\u00eb k\u00ebrkesa p\u00ebr lexim dhe ato nuk hyjn\u00eb n\u00eb LruBlockCache, gj\u00eb q\u00eb rezulton n\u00eb nj\u00eb pun\u00eb aktive t\u00eb Garbage Collector. Megjithat\u00eb, nuk duhet pritur nj\u00eb rritje dramatike t\u00eb performanc\u00ebs nga p\u00ebrdorimi i cache p\u00ebr lexim, por p\u00ebr k\u00ebt\u00eb do t\u00eb kthehemi p\u00ebrs\u00ebri n\u00eb p. 8.<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/17d7791a998dd7da747cb7089dce1f10.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nBlockCache \u00ebsht\u00eb nj\u00eb p\u00ebr t\u00eb gjith\u00eb RS, nd\u00ebrsa MemStore \u00ebsht\u00eb specifike p\u00ebr secil\u00ebn tabel\u00eb (nj\u00eb p\u00ebr \u00e7do Column Family).<\/p>\n<p>Si <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.cloudera.com\/blog\/2012\/06\/hbase-write-path\/\">p\u00ebrshkruhet<\/a><\/noindex> N\u00eb teori, gjat\u00eb shkrimit, t\u00eb dh\u00ebnat nuk hyjn\u00eb n\u00eb cache, dhe me t\u00eb v\u00ebrtet\u00eb, parametrat e till\u00eb CACHE_DATA_ON_WRITE p\u00ebr tabel\u00ebn dhe \"Cache DATA on Write\" p\u00ebr RS jan\u00eb vendosur n\u00eb false. Megjithat\u00eb, n\u00eb praktik\u00eb, n\u00ebse shkruani t\u00eb dh\u00ebna n\u00eb MemStore, m\u00eb pas e shfryni at\u00eb n\u00eb disk (duke e pastruar k\u00ebshtu), pastaj fshini skedarin q\u00eb \u00ebsht\u00eb krijuar, duke realizuar nj\u00eb k\u00ebrkes\u00eb get, ne e marrim me sukses t\u00eb dh\u00ebnat. Madje, edhe n\u00ebse e fikni krejt BlockCache dhe mbushni tabel\u00ebn me t\u00eb dh\u00ebna t\u00eb reja, m\u00eb pas arritni t\u00eb shfryni MemStore n\u00eb disk, duke i fshir\u00eb ato dhe k\u00ebrkuar nga nj\u00eb sesion tjet\u00ebr, ato do t\u00eb nxirren s\u00ebrish nga diku. Pra, HBase ruan n\u00eb vetvete jo vet\u00ebm t\u00eb dh\u00ebna, por edhe misteret e \u00e7uditshme.<\/p>\n<pre><code class=\"bash\">hbase(main):001:0&gt; krijo 'ns:magic', 'cf'\nTabela ns:magic u krijua\nMori 1.1533 sekonda\nhbase(main):002:0&gt; vendos 'ns:magic', 'key1', 'cf:c', 'provo_t\u00eb_fshihem'\nMori 0.2610 sekonda\nhbase(main):003:0&gt; flush 'ns:magic'\nMori 0.6161 sekonda\nhdfs dfs -mv \/data\/hbase\/data\/ns\/magic\/* \/tmp\/trash\nhbase(main):002:0&gt; merr 'ns:magic', 'key1'\n cf:c      timestamp=1534440690218, vlera=provo_t\u00eb_fshihem\n<\/code><\/pre>\n<p>\nParametri \"Cache DATA on Read\" \u00ebsht\u00eb vendosur false. N\u00ebse keni ide, mir\u00ebpriteni t\u00eb diskutojm\u00eb k\u00ebt\u00eb n\u00eb komentet.<\/p>\n<h2>5. P\u00ebrpunimi i grupeve t\u00eb t\u00eb dh\u00ebnave MultiGet\/MultiPut<\/h2>\n<p>\nP\u00ebrpunimi i k\u00ebrkesave t\u00eb vetme (Get\/Put\/Delete) \u00ebsht\u00eb nj\u00eb operacion mjaft i kushtuesh\u00ebm, prandaj \u00ebsht\u00eb e rekomandueshme t'i gruposh sa m\u00eb shum\u00eb t\u00eb jet\u00eb e mundur n\u00eb List ose List, duke lejuar k\u00ebshtu nj\u00eb rritje t\u00eb konsiderueshme t\u00eb performanc\u00ebs. Kjo ve\u00e7an\u00ebrisht vlen p\u00ebr operacionin e shkrimit, nd\u00ebrsa n\u00eb lexim ka nj\u00eb penges\u00eb tjet\u00ebr. N\u00eb grafikun m\u00eb posht\u00eb \u00ebsht\u00eb treguar koha e leximit t\u00eb 50,000 regjistrimeve nga MemStore. Leximi \u00ebsht\u00eb b\u00ebr\u00eb n\u00eb nj\u00eb t\u00eb vet\u00ebm dhe n\u00eb boshtin horizontal \u00ebsht\u00eb treguar numri i \u00e7el\u00ebsave n\u00eb k\u00ebrkes\u00eb. K\u00ebtu shihet se me rritjen deri n\u00eb nj\u00eb mij\u00eb \u00e7el\u00ebsa n\u00eb nj\u00eb k\u00ebrkes\u00eb, koha e ekzekutimit bie, pra shpejt\u00ebsia rritet. Megjithat\u00eb, me modalitetin MSLAB t\u00eb aktivizuar n\u00eb m\u00ebnyr\u00eb t\u00eb paracaktuar, pas k\u00ebtij prag, fillon nj\u00eb r\u00ebnien dramatike t\u00eb performanc\u00ebs, nd\u00ebrsa m\u00eb shum\u00eb \u00ebsht\u00eb volumi i t\u00eb dh\u00ebnave n\u00eb regjist\u00ebr, aq m\u00eb shum\u00eb \u00ebsht\u00eb koha e pun\u00ebs. <\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/42d3a77d66770a7fed03f83fecdca470.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTestet jan\u00eb kryer n\u00eb nj\u00eb virtualka, 8 b\u00ebrthama, versioni HBase 2.0.0-cdh6.0.0-beta1.<\/p>\n<p>Modaliteti MSLAB \u00ebsht\u00eb krijuar p\u00ebr t\u00eb zvog\u00ebluar fragmentimin e heap-it, q\u00eb ndodh p\u00ebr shkak t\u00eb p\u00ebrzierjes s\u00eb t\u00eb dh\u00ebnave t\u00eb brezit t\u00eb ri dhe atyre t\u00eb vjet\u00ebr. Si zgjidhje e problemit, kur aktivizohet MSLAB, t\u00eb dh\u00ebnat vendosen n\u00eb qeliza (chunk) relativisht t\u00eb vogla dhe p\u00ebrpunohen n\u00eb grupe. Si rezultat, kur volumi n\u00eb paket\u00ebn e t\u00eb dh\u00ebnave t\u00eb k\u00ebrkuara tejkalon madh\u00ebsin\u00eb e caktuar, performanca bie n\u00eb m\u00ebnyr\u00eb drastike. N\u00eb an\u00ebn tjet\u00ebr, \u00e7aktivizimi i k\u00ebtij modaliteti gjithashtu nuk \u00ebsht\u00eb i d\u00ebshiruesh\u00ebm, pasi do t\u00eb \u00e7oj\u00eb n\u00eb ndalime p\u00ebr shkak t\u00eb GC n\u00eb momentet e pun\u00ebs intensive me t\u00eb dh\u00ebna. Nj\u00eb zgjidhje e mir\u00eb \u00ebsht\u00eb rritja e madh\u00ebsive t\u00eb qelizave, n\u00eb rastin e shkrimit aktiv p\u00ebrmes put-it n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb me leximin. Duhet t\u00eb theksohet se problemi nuk ndodh n\u00ebse pas shkrimit ekzekutohet komand\u00eb flush, e cila d\u00ebrgon MemStore n\u00eb disk ose n\u00ebse b\u00ebhet ngarkesa p\u00ebrmes BulkLoad. N\u00eb tabel\u00ebn m\u00eb posht\u00eb tregohet se k\u00ebrkesat nga MemStore p\u00ebr t\u00eb dh\u00ebna t\u00eb m\u00ebdha (dhe n\u00eb t\u00eb nj\u00ebjtin num\u00ebr) \u00e7ojn\u00eb n\u00eb ngadal\u00ebsim. Megjithat\u00eb, duke rritur chunksize, rikthejm\u00eb koh\u00ebn e p\u00ebrpunimit n\u00eb norm\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/0076215bd171257548f8a4c4d4229ba0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nP\u00ebrve\u00e7 rritjes s\u00eb chunksize, ndihmon ndarja e t\u00eb dh\u00ebnave sipas rajoneve, pra, ndarja e tabelave. Kjo \u00e7on n\u00eb at\u00eb q\u00eb n\u00eb \u00e7do rajon vijn\u00eb m\u00eb pak k\u00ebrkesa dhe n\u00ebse ato vendosen n\u00eb nj\u00eb qeliz\u00eb, p\u00ebrgjigja mbetet e mir\u00eb.<\/p>\n<h2>6. Strategjia e ndarjes s\u00eb tabelave n\u00eb rajone (splitting)<\/h2>\n<p>\nDuke qen\u00eb se HBase \u00ebsht\u00eb nj\u00eb magazin\u00eb \u00e7el\u00ebs-vler\u00eb dhe ndarja b\u00ebhet sipas \u00e7el\u00ebsit, \u00ebsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme t\u00eb ndahet t\u00eb dh\u00ebnat n\u00eb m\u00ebnyr\u00eb t\u00eb barabart\u00eb n\u00eb t\u00eb gjitha rajonet. P\u00ebr shembull, ndarja e nj\u00eb tabele t\u00eb till\u00eb n\u00eb tre pjes\u00eb do t\u00eb \u00e7onte n\u00eb at\u00eb q\u00eb t\u00eb dh\u00ebnat do t\u00eb ishin t\u00eb ndara n\u00eb tri rajone:<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/a811ae81e77b48dbf28ed86dbdc35739.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNdodh q\u00eb kjo t\u00eb \u00e7oj\u00eb n\u00eb ngadal\u00ebsim t\u00eb menj\u00ebhersh\u00ebm, n\u00ebse t\u00eb dh\u00ebnat q\u00eb do t\u00eb ngarkohen m\u00eb pas kan\u00eb form\u00eb p\u00ebr shembull vlerash t\u00eb gjata, shumica e t\u00eb cilave fillojn\u00eb me t\u00eb nj\u00ebjt\u00ebn shif\u00ebr, p\u00ebr shembull:<\/p>\n<p>1000001<br \/>\n1000002<br \/>\n\u2026<br \/>\n1100003<\/p>\n<p>Duke qen\u00eb se \u00e7el\u00ebsat ruhen si nj\u00eb array bajtesh, t\u00eb gjith\u00eb do t\u00eb fillojn\u00eb nj\u00ebsoj dhe do t'i p\u00ebrkasin nj\u00eb rajoni t\u00eb vet\u00ebm #1 q\u00eb ruan k\u00ebt\u00eb gam\u00eb \u00e7el\u00ebsash. Ka disa strategji ndarje:<\/p>\n<p>HexStringSplit \u2013 Kthen \u00e7el\u00ebsin n\u00eb nj\u00eb varg me kodim gjasht\u00ebmb\u00ebdhjet\u00ebshe n\u00eb gam\u00ebn \u00ab00000000\u00bb =&gt; \u00abFFFFFFFF\u00bb dhe e mbush at\u00eb nga e majta me zero.<\/p>\n<p>UniformSplit \u2013 Kthen \u00e7el\u00ebsin n\u00eb nj\u00eb array bajtesh me kodim gjasht\u00ebmb\u00ebdhjet\u00ebshe n\u00eb gam\u00ebn \u00ab00\u00bb =&gt; \u00abFF\u00bb dhe e mbush at\u00eb nga e djathta me zero.<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, mund t\u00eb specifikoni \u00e7do gam\u00eb ose set \u00e7el\u00ebsash p\u00ebr ndarje dhe t\u00eb konfiguroni ndarjen automatike. Megjithat\u00eb, nj\u00eb nga qasjet m\u00eb t\u00eb thjeshta dhe efikase \u00ebsht\u00eb UniformSplit dhe p\u00ebrdorimi i konkatenimit t\u00eb hash-it, p\u00ebr shembull, \u00e7ifti m\u00eb i lart\u00eb i bajt\u00ebve nga ekzekutimi i \u00e7el\u00ebsit p\u00ebrmes funksionit CRC32(rowkey) dhe vet\u00eb rowkey:<\/p>\n<p>hash + rowkey<\/p>\n<p>At\u00ebher\u00eb t\u00eb gjitha t\u00eb dh\u00ebnat do t\u00eb shp\u00ebrndahen n\u00eb m\u00ebnyr\u00eb t\u00eb barabart\u00eb n\u00eb rajone. Gjat\u00eb leximit, dy bajt\u00ebt e par\u00eb thjesht hiqen dhe mbetet \u00e7el\u00ebsi origjinal. Gjithashtu, RS kontrollon sasin\u00eb e t\u00eb dh\u00ebnave dhe \u00e7el\u00ebsave n\u00eb rajon dhe n\u00eb rast t\u00eb tejkalimit t\u00eb kufijve, automatikisht e ndan at\u00eb n\u00eb pjes\u00eb. <\/p>\n<h2>7. Q\u00ebndrueshm\u00ebria dhe lokaliteti i t\u00eb dh\u00ebnave<\/h2>\n<p>\nDukeq\u00eb \u00e7do grup \u00e7el\u00ebsash menaxhohet nga nj\u00eb rajon i vet\u00ebm, zgjidhja e problemeve q\u00eb lidhen me r\u00ebniet e RS ose me daljen nga p\u00ebrdorimi \u00ebsht\u00eb ruajtja e t\u00eb dh\u00ebnave t\u00eb nevojshme n\u00eb HDFS. Kur ndodh nj\u00eb r\u00ebnie e RS, masteri e zbulon k\u00ebt\u00eb p\u00ebrmes munges\u00ebs s\u00eb heartbeat n\u00eb nyj\u00ebn ZooKeeper. At\u00ebher\u00eb ai i cakton nj\u00eb rajon tjet\u00ebr t\u00eb menaxhuar nj\u00eb RS t\u00eb ri dhe pasi q\u00eb HFiles ruhen n\u00eb sistemin e skedar\u00ebve t\u00eb shp\u00ebrndar\u00eb, pronari i ri i lexon dhe vazhdon t\u00eb sh\u00ebrbej\u00eb t\u00eb dh\u00ebnat. Megjithat\u00eb, pasi nj\u00eb pjes\u00eb e t\u00eb dh\u00ebnave mund t\u00eb jet\u00eb n\u00eb MemStore dhe nuk \u00ebsht\u00eb ruajtur ende n\u00eb HFiles, p\u00ebr rikthimin e historis\u00eb s\u00eb operacioneve p\u00ebrdoret WAL, i cili gjithashtu ruhet n\u00eb HDFS. Pas vendosjes s\u00eb ndryshimeve, RS \u00ebsht\u00eb n\u00eb gjendje t\u00eb p\u00ebrgjigjet ndaj k\u00ebrkesave, megjithat\u00eb kalimi \u00e7on n\u00eb faktin se nj\u00eb pjes\u00eb e t\u00eb dh\u00ebnave dhe proceset q\u00eb i sh\u00ebrbejn\u00eb atyre jan\u00eb n\u00eb nyja t\u00eb ndryshme, dmth, lokaliteti zvog\u00eblohet. <\/p>\n<p>Zgjidhja p\u00ebr k\u00ebt\u00eb problem \u00ebsht\u00eb major compaction \u2013 kjo procedur\u00eb transferon skedar\u00ebt n\u00eb ato nyja q\u00eb jan\u00eb p\u00ebrgjegj\u00ebse p\u00ebr ta (aty ku ndodhen rajonet e tyre), si rezultat i t\u00eb cil\u00ebs gjat\u00eb k\u00ebsaj procedure ngarkesa n\u00eb rrjet dhe disqet rritet ndjesh\u00ebm. Megjithat\u00eb, m\u00eb von\u00eb, qasja n\u00eb t\u00eb dh\u00ebna p\u00ebrmir\u00ebsohet ndjesh\u00ebm. P\u00ebr m\u00eb tep\u00ebr, major_compaction kombinon t\u00eb gjitha HFiles n\u00eb nj\u00eb skedar t\u00eb vet\u00ebm n\u00eb kuad\u00ebr t\u00eb rajonit, si dhe pastron t\u00eb dh\u00ebnat n\u00eb var\u00ebsi t\u00eb cil\u00ebsimeve t\u00eb tabel\u00ebs. P\u00ebr shembull, mund t\u00eb caktohet numri i versioneve t\u00eb objektit q\u00eb duhet t\u00eb ruhen ose koha e jet\u00ebs s\u00eb tij, pas kalimit t\u00eb s\u00eb cil\u00ebs objekti fshihet fizikisht.<\/p>\n<p>Kjo procedur\u00eb mund t\u00eb ket\u00eb nj\u00eb ndikim shum\u00eb pozitiv n\u00eb funksionimin e HBase. N\u00eb imazhin m\u00eb posht\u00eb shihet si degradoi performanca si rezultat i shkrimit aktiv t\u00eb t\u00eb dh\u00ebnave. K\u00ebtu shihet si 40 rrjedha shkruajn\u00eb n\u00eb nj\u00eb tabel\u00eb dhe 40 rrjedha lexojn\u00eb t\u00eb dh\u00ebna nj\u00ebkoh\u00ebsisht. Rrjedhat shkruese formojn\u00eb gjithnj\u00eb e m\u00eb shum\u00eb HFiles, t\u00eb cilat lexohen nga rrjedhat e tjera. Si rezultat, gjithnj\u00eb e m\u00eb shum\u00eb t\u00eb dh\u00ebna duhet t\u00eb fshihen nga memoria dhe n\u00eb fund fillon t\u00eb funksionoj\u00eb GC, q\u00eb pothuajse paralizon t\u00eb gjith\u00eb pun\u00ebn. Aktivizimi i major compaction \u00e7oi n\u00eb pastrimin e mbetjeve t\u00eb krijuara dhe rikthimin e performanc\u00ebs.<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/6c93b2c10c197663785d3de0bb185481.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTesti u krye n\u00eb 3 DataNode dhe 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 rrjedha). Versioni HBase 1.2.0-cdh5.14.2<\/p>\n<p>\u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb theksohet se lan\u00e7imi i major compaction u krye n\u00eb nj\u00eb tav\u00ebll \"live\", n\u00eb t\u00eb cil\u00ebn ishin duke u shkruar dhe lexuar t\u00eb dh\u00ebna aktivisht. N\u00eb internet ka pasur deklarata q\u00eb sugjerojn\u00eb se kjo mund t\u00eb \u00e7oj\u00eb n\u00eb p\u00ebrgjigje t\u00eb gabuar gjat\u00eb leximit t\u00eb t\u00eb dh\u00ebnave. P\u00ebr t\u00eb verifikuar, u aktivizua nj\u00eb proces q\u00eb gjeneronte t\u00eb dh\u00ebna t\u00eb reja dhe i shkruante ato n\u00eb tav\u00ebll. Pas k\u00ebsaj, menj\u00ebher\u00eb lexonte dhe krahasonte n\u00ebse vlera e marr\u00eb p\u00ebrputhej me at\u00eb q\u00eb ishte shkruar. Gjat\u00eb pun\u00ebs s\u00eb k\u00ebtij procesi, major compaction u lan\u00e7ua rreth 200 her\u00eb dhe asnj\u00eb d\u00ebshtim nuk u regjistrua. Ndoshta problemi shfaqet s\u00eb shpejti dhe vet\u00ebm gjat\u00eb ngarkes\u00ebs s\u00eb lart\u00eb, prandaj \u00ebsht\u00eb m\u00eb e sigurt t\u00eb ndaloni procedurat e shkrimit dhe leximit n\u00eb m\u00ebnyr\u00eb planifikuese dhe t\u00eb kryeni pastrimin pa lejuar r\u00ebniet e tilla GC.<\/p>\n<p>Po ashtu, major compaction nuk ndikon n\u00eb gjendjen e MemStore, p\u00ebr t\u00eb hedhur at\u00eb n\u00eb disk dhe p\u00ebr kompaktim duhet t\u00eb p\u00ebrdoret flush (connection.getAdmin().flush(TableName.valueOf(tblName))).<\/p>\n<h2>8. Cil\u00ebsimet dhe Performanca<\/h2>\n<p>\nSi\u00e7 \u00ebsht\u00eb th\u00ebn\u00eb m\u00eb par\u00eb, HBase tregon suksesin m\u00eb t\u00eb madh atje ku nuk ka nevoj\u00eb t\u00eb b\u00ebj\u00eb asgj\u00eb, gjat\u00eb realizimit t\u00eb BulkLoad. Megjithat\u00eb, kjo i p\u00ebrket shumic\u00ebs s\u00eb sistemeve dhe njer\u00ebzve. Sidoqoft\u00eb, ky instrument \u00ebsht\u00eb m\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr vendosjen masive t\u00eb t\u00eb dh\u00ebnave n\u00eb blloqe t\u00eb m\u00ebdha, nd\u00ebrsa n\u00ebse procesi k\u00ebrkon realizimin e shum\u00eb k\u00ebrkesave konkurruese p\u00ebr lexim dhe shkrim, p\u00ebrdoren komandat e p\u00ebrshkruara m\u00eb sip\u00ebr Get dhe Put. P\u00ebr t\u00eb p\u00ebrcaktuar parametrat optimal\u00eb, u zhvilluan lan\u00e7ime me kombinime t\u00eb ndryshme t\u00eb parametrave t\u00eb tavllave dhe cil\u00ebsimeve:<\/p>\n<ul>\n<li>U lan\u00e7uan 10 rrjedha nj\u00ebkoh\u00ebsisht 3 her\u00eb radhazi (t\u00eb quajm\u00eb k\u00ebt\u00eb nj\u00eb bllok rrjedhash). <\/li>\n<li>Koha e pun\u00ebs s\u00eb t\u00eb gjitha rrjedhave n\u00eb bllok u mesataua dhe ishte rezultati p\u00ebrfundimtar i pun\u00ebs s\u00eb bllokut.<\/li>\n<li>T\u00eb gjitha rrjedhat punuan me t\u00eb nj\u00ebjt\u00ebn tav\u00ebll. <\/li>\n<li>Para \u00e7do lan\u00e7imi t\u00eb bllokut t\u00eb rrjedhave, u krye nj\u00eb major compaction.<\/li>\n<li>\u00c7do bllok kryente vet\u00ebm nj\u00eb nga operacionet e m\u00ebposhtme: <\/li>\n<\/ul>\n<p>\n \u2014 Put<br \/>\n \u2014 Get<br \/>\n \u2014 Get+Put<\/p>\n<ul>\n<li>\u00c7do bllok kryente 50,000 p\u00ebrs\u00ebritje t\u00eb operacionit t\u00eb tij.<\/li>\n<li>Madh\u00ebsia e regjistrimit n\u00eb bllok ishte 100 byte, 1000 byte ose 10000 byte (random).<\/li>\n<li>Blloqet u lan\u00e7uan me sasi t\u00eb ndryshme t\u00eb \u00e7el\u00ebsave t\u00eb k\u00ebrkuar (ose nj\u00eb \u00e7el\u00ebs ose 10).<\/li>\n<li>Blloqet u lan\u00e7uan n\u00ebn cil\u00ebsime t\u00eb ndryshme t\u00eb tavll\u00ebs. Parametrat u nd\u00ebrruan:<\/li>\n<\/ul>\n<p>\n \u2014 BlockCache = u aktivizua ose u deaktivizua<br \/>\n \u2014 BlockSize = 65 Kb ose 16 Kb<br \/>\n \u2014 Pjes\u00ebt = 1, 5 ose 30<br \/>\n \u2014 MSLAB = aktivizuar ose deaktivizuar<\/p>\n<p>K\u00ebshtu, blloku duket k\u00ebshtu:<\/p>\n<p>a. M\u00ebnyra MSLAB u aktivizua\/aktivizua.<br \/>\nb. U krijua nj\u00eb tabel\u00eb, p\u00ebr t\u00eb cil\u00ebn u vendos\u00ebn parametrat e m\u00ebposht\u00ebm: BlockCache = true\/n\u00eb, BlockSize = 65\/16 Kb, Partita = 1\/5\/30. <br \/>\nc. U vendos kompresimi GZ.<br \/>\nd. U nis\u00ebn 10 p\u00ebrcjell\u00ebs n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb q\u00eb kryenin 1\/10 operacione put\/get\/get+put n\u00eb k\u00ebt\u00eb tabel\u00eb me sh\u00ebnime prej 100\/1000\/10000 byte, duke realizuar 50,000 k\u00ebrkesa radhazi (\u00e7el\u00ebsat ishin t\u00eb rast\u00ebsish\u00ebm).<br \/>\ne. Pika d u p\u00ebrs\u00ebrit tri her\u00eb.<br \/>\nf. Koha e pun\u00ebs s\u00eb t\u00eb gjitha p\u00ebrcjell\u00ebsve u mesatua. <\/p>\n<p>U kontrolluan t\u00eb gjitha kombinimet e mundshme. \u00cbsht\u00eb e parashikueshme se me rritjen e madh\u00ebsis\u00eb s\u00eb sh\u00ebnimit, shpejt\u00ebsia do t\u00eb bjer\u00eb ose se deaktivizimi i kapjes do t\u00eb \u00e7oj\u00eb n\u00eb ngadal\u00ebsim. Megjithat\u00eb, q\u00ebllimi ishte t\u00eb kuptohej shkalla dhe r\u00ebnd\u00ebsia e ndikimit t\u00eb secilit parametr, prandaj t\u00eb dh\u00ebnat e mbledhura u jap\u00ebn si input n\u00eb funksionin e regresionit linear, q\u00eb ofron mund\u00ebsin\u00eb p\u00ebr t\u00eb vler\u00ebsuar sakt\u00ebsin\u00eb p\u00ebrmes statistik\u00ebs t. M\u00eb posht\u00eb jan\u00eb rezultatat e pun\u00ebs s\u00eb bllok\u00ebve q\u00eb kryejn\u00eb operacionet Put. Grupi i plot\u00eb i kombinimeve 2*2*3*2*3 = 144 variante + 72 p\u00ebr shkak se disa u realizuan dy her\u00eb. Prandaj, n\u00eb total jan\u00eb 216 nisje:<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/7a13c7a9b3ff1859976800f5d45cd51b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTestimi u krye n\u00eb nj\u00eb mini-klaster q\u00eb p\u00ebrb\u00ebhej nga 3 DataNode dhe 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 p\u00ebrcjell\u00ebs). Versioni HBase 1.2.0-cdh5.14.2.<\/p>\n<p>Shpejt\u00ebsia m\u00eb e lart\u00eb e futjes, 3.7 sekonda, u arrit kur nuk ishte aktivizuar moda MSLAB, n\u00eb nj\u00eb tabel\u00eb me nj\u00eb parti, me BlockCache t\u00eb aktivizuar, BlockSize = 16, sh\u00ebnime prej 100 byte n\u00eb 10 cop\u00eb n\u00eb paket\u00eb.<br \/>\nShpejt\u00ebsia m\u00eb e ul\u00ebt e futjes, 82.8 sekonda, u arrit kur ishte aktivizuar moda MSLAB, n\u00eb nj\u00eb tabel\u00eb me nj\u00eb parti, me BlockCache t\u00eb aktivizuar, BlockSize = 16, sh\u00ebnime prej 10000 byte n\u00eb 1 cop\u00eb.<\/p>\n<p>Tani le t\u00eb shohim modelin. Ne shohim cil\u00ebsi t\u00eb mir\u00eb t\u00eb modelit sipas R2, por plot\u00ebsisht e qart\u00eb se ekstrapolimi k\u00ebtu \u00ebsht\u00eb i pad\u00ebshiruar. Sjellja e v\u00ebrtet\u00eb e sistemit gjat\u00eb ndryshimit t\u00eb parametreve do t\u00eb jet\u00eb jo lineare, ky model \u00ebsht\u00eb i nevojsh\u00ebm, jo p\u00ebr prognoza, por p\u00ebr t\u00eb kuptuar se \u00e7far\u00eb ndodhi brenda parametrave t\u00eb caktuara. P\u00ebr shembull, k\u00ebtu ne shohim sipas kritereve t\u00eb Studentit, q\u00eb p\u00ebr operacionin Put, parametrat BlockSize dhe BlockCache nuk kan\u00eb r\u00ebnd\u00ebsi (\u00e7ka \u00ebsht\u00eb n\u00eb p\u00ebrgjith\u00ebsi krejt e parashikueshme):<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/2fb65d1809d53f2b47f4f8829a9efc65.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nE megjithat\u00eb, rritja e numrit t\u00eb particioneve \u00e7on n\u00eb nj\u00eb ulje t\u00eb performanc\u00ebs, q\u00eb \u00ebsht\u00eb disi befasuese (ne kemi par\u00eb nj\u00eb ndikim pozitiv nga rritja e numrit t\u00eb particioneve gjat\u00eb BulkLoad), ndon\u00ebse \u00ebsht\u00eb e shpjegueshme. S\u00eb pari, p\u00ebr p\u00ebrpunim duhet t\u00eb formohen k\u00ebrkesa p\u00ebr 30 rajone n\u00eb vend t\u00eb nj\u00eb si\u00e7 ishte m\u00eb par\u00eb, dhe volumi i t\u00eb dh\u00ebnave nuk \u00ebsht\u00eb i till\u00eb q\u00eb t\u00eb ofroj\u00eb p\u00ebrfitime. S\u00eb dyti, koha total e pun\u00ebs p\u00ebrcaktohet nga RS m\u00eb i ngadalsh\u00ebm, dhe pasi numri i DataNode \u00ebsht\u00eb m\u00eb i vog\u00ebl se numri i RS, disa rajone kan\u00eb lokalitet zero. Tani le t\u00eb shikojm\u00eb pes\u00eb lider\u00ebt:<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/8ad7e832879156eaa96e630458405cdc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nTani le t\u00eb vler\u00ebsojm\u00eb rezultatet e ekzekutimit t\u00eb blloqeve Get:<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/8a5dd45422c74e8815011d7e9b805ccb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNumri i particioneve ka humbur r\u00ebnd\u00ebsin\u00eb, gj\u00eb q\u00eb ndoshta shpjegohet nga fakti se t\u00eb dh\u00ebnat jan\u00eb t\u00eb mir\u00eb-kesh dhe ke\u0161i p\u00ebr lexim \u00ebsht\u00eb parametrat m\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm (statistikisht). Natyrisht, rritja e numrit t\u00eb mesazheve n\u00eb k\u00ebrkes\u00eb \u00ebsht\u00eb gjithashtu shum\u00eb e dobishme p\u00ebr performanc\u00ebn. Rezultatet m\u00eb t\u00eb mira:<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/9d237f9fdbeaf5412daec2fc2fa24b01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDhe s\u00eb fundmi, le t\u00eb shikojm\u00eb n\u00eb modelin e bllokut q\u00eb fillimisht kryente get, dhe pastaj put:<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/75137207a4a69acccad036882794094b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nK\u00ebtu t\u00eb gjith\u00eb parametrat jan\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm. Dhe rezultatet e lider\u00ebve:<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/c166933d81e86f36958e3af58297f876.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>9. Testimi i ngarkes\u00ebs<\/h2>\n<p>\nDhe s\u00eb fundmi, le t\u00eb aktivizojm\u00eb nj\u00eb ngarkes\u00eb m\u00eb t\u00eb pranueshme, por gjithmon\u00eb \u00ebsht\u00eb m\u00eb interesante kur ka \u00e7far\u00eb t\u00eb krahasojm\u00eb. N\u00eb faqen e internetit t\u00eb DataStax \u2013 zhvilluesi kryesor i Cassandra, ka <noindex><a rel=\"nofollow\" href=\"https:\/\/www.datastax.com\/wp-content\/themes\/datastax-2014-08\/files\/NoSQL_Benchmarks_EndPoint.pdf\">rezultatet<\/a><\/noindex> HN t\u00eb disa depozitave NoSQL, duke p\u00ebrfshir\u00eb HBase versionin 0.98.6-1. Ngarkesa u realizua me 40 rrjedha, madh\u00ebsia e t\u00eb dh\u00ebnave 100 byte, disqet SSD. Rezultati i testit t\u00eb operacioneve Read-Modify-Write tregoi k\u00ebto rezultate.<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/521e9dff60f462e6dabebc1234e028be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Sa kuptova, leximi u krye blok pas bloku prej 100 regjistrimesh dhe p\u00ebr 16 node HBase testi i DataStax tregoi nj\u00eb performanc\u00eb prej 10 mij\u00eb operacioneve n\u00eb sekond\u00eb. <\/p>\n<p>\u00cbsht\u00eb e mir\u00eb q\u00eb n\u00eb klasterin ton\u00eb ka gjithashtu 16 nod dhe jo shum\u00eb 'e mir\u00eb' q\u00eb n\u00eb secilin ka 64 b\u00ebrthama (rrjedha), nd\u00ebrsa n\u00eb testin DataStax vet\u00ebm nga 4. Nga ana tjet\u00ebr, ata kan\u00eb dysk SSD, nd\u00ebrsa ne kemi HDD dhe nj\u00eb version m\u00eb t\u00eb ri t\u00eb HBase, dhe shfryt\u00ebzimi i CPU gjat\u00eb ngarkes\u00ebs rritet praktikisht shum\u00eb pak (vizualisht nga 5-10 p\u00ebrqind). Sidoqoft\u00eb, do t\u00eb p\u00ebrpiqemi t\u00eb startojm\u00eb n\u00eb k\u00ebt\u00eb konfigurim. Cil\u00ebsimet e tabelave jan\u00eb p\u00ebrpar\u00ebsisht, leximi kryhet n\u00eb nj\u00eb interval \u00e7elesh nga 0 deri n\u00eb 50 milion, n\u00eb m\u00ebnyr\u00eb rast\u00ebsore (dmth, p\u00ebr sonin e v\u00ebrtet\u00eb \u00e7do her\u00eb nj\u00eb t\u00eb ri). N\u00eb tabel\u00eb ka 50 milion regjistrime, t\u00eb ndara n\u00eb 64 pjes\u00eb. \u00c7el\u00ebsat jan\u00eb hash-uar sipas crc32. Cil\u00ebsimet e tabelave jan\u00eb standarde, MSLAB \u00ebsht\u00eb aktiv. Duke filluar 40 rrjedha, secila rrjedh\u00eb lexon nj\u00eb set prej 100 \u00e7el\u00ebsash t\u00eb rast\u00ebsish\u00ebm dhe menj\u00ebher\u00eb shkruan 100 byte t\u00eb gjeneruara pas k\u00ebtyre \u00e7el\u00ebsave. <\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/776490f01121cc434135f733311b7722.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n Stendi: 16 DataNode dhe 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 rrjedha). Versioni HBase 1.2.0-cdh5.14.2.<\/p>\n<p>Rezultati mesatar \u00ebsht\u00eb m\u00eb af\u00ebr 40 mij\u00eb operacioneve n\u00eb sekond\u00eb, q\u00eb \u00ebsht\u00eb ndjesh\u00ebm m\u00eb mir\u00eb sesa n\u00eb testin DataStax. Megjithat\u00eb, p\u00ebr q\u00ebllime eksperimentale, mund t\u00eb ndryshojm\u00eb pak kushtet. \u00cbsht\u00eb tep\u00ebr e pabesueshme q\u00eb t\u00eb gjith\u00eb pun\u00ebt do t\u00eb kryhen ekskluzivisht me nj\u00eb tabel\u00eb dhe vet\u00ebm me \u00e7el\u00ebsa unik\u00eb. Le t\u00eb supozojm\u00eb se ka nj\u00eb grup 't\u00eb nxeht\u00eb' \u00e7el\u00ebsash q\u00eb gjeneron ngarkes\u00ebn kryesore. Prandaj, do t\u00eb p\u00ebrpiqemi t\u00eb krijojm\u00eb ngarkes\u00eb me regjistrime m\u00eb t\u00eb m\u00ebdha (10 KB), gjithashtu n\u00eb grupe prej 100, n\u00eb 4 tabela t\u00eb ndryshme dhe duke kufizuar intervalin e \u00e7el\u00ebsave t\u00eb k\u00ebrkuar n\u00eb 50 mij\u00eb. N\u00eb grafikun m\u00eb posht\u00eb tregohet startimi i 40 rrjedhave, secila rrjedh\u00eb lexon nj\u00eb set prej 100 \u00e7el\u00ebsash dhe menj\u00ebher\u00eb shkruan t\u00eb rast\u00ebsishme 10 KB pas k\u00ebtyre \u00e7el\u00ebsave p\u00ebrs\u00ebri. <\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/30d29f1b98663e3c07cb2be20e93876a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nStendi: 16 DataNode dhe 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 rrjedha). Versioni HBase 1.2.0-cdh5.14.2.<\/p>\n<p>Gjat\u00eb ngarkes\u00ebs, disa her\u00eb \u00ebsht\u00eb startuar kompakti major, si\u00e7 u tregua m\u00eb sip\u00ebr, pa k\u00ebt\u00eb procedur\u00eb performanca do t\u00eb degradoj\u00eb gradualisht, megjithat\u00eb gjat\u00eb ekzekutimit ndodhen gjithashtu ngarkesa shtes\u00eb. R\u00ebniet shkaktohen nga shkak t\u00eb ndrysh\u00ebm. Ndonj\u00ebher\u00eb rrjedhat p\u00ebrfundonin pun\u00ebn dhe nd\u00ebrsa ato rinisnin, ndodhte nj\u00eb pauz\u00eb, ndonj\u00ebher\u00eb aplikacione t\u00eb tjera krijonin ngarkes\u00eb n\u00eb klaster.<\/p>\n<p>Leximi dhe menj\u00ebher\u00eb shkruaj, \u00ebsht\u00eb nj\u00eb nga skenar\u00ebt m\u00eb t\u00eb v\u00ebshtir\u00eb p\u00ebr pun\u00eb p\u00ebr HBase. N\u00ebse b\u00ebhen vet\u00ebm k\u00ebrkesa put me madh\u00ebsi t\u00eb vogla, p\u00ebr shembull nga 100 byte, duke i bashkuar ato n\u00eb paketa prej 10-50 mij\u00eb cop\u00ebsh, mund t\u00eb arrihen qindra mij\u00ebra operacione n\u00eb sekond\u00eb dhe ashtu ndodhin gj\u00ebrat me k\u00ebrkesat vet\u00ebm p\u00ebr lexim. Duhet t\u00eb theksohet se rezultatet jan\u00eb radikalisht m\u00eb t\u00eb mira se ato q\u00eb u arrit\u00ebn nga DataStax kryesisht p\u00ebr shkak t\u00eb k\u00ebrkesave n\u00eb grupe prej 50 mij\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase\" src=\"\/wp-content\/uploads\/2020\/01\/412bda50a55093224169f048ea2f863a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nStendi: 16 DataNode dhe 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 rrjedha). Versioni HBase 1.2.0-cdh5.14.2.<\/p>\n<h2>10. P\u00ebrfundime<\/h2>\n<p>\nKy sistem konfiguracioni \u00ebsht\u00eb mjaft fleksib\u00ebl, megjithat\u00eb ndikimi i nj\u00eb numri t\u00eb madh parametrash mbetet ende i panjohur. Disa prej tyre jan\u00eb testuar, por nuk jan\u00eb p\u00ebrfshir\u00eb n\u00eb grupin e rezultateve. P\u00ebr shembull, eksperimet preliminare treguan nj\u00eb r\u00ebnd\u00ebsi t\u00eb vog\u00ebl p\u00ebr parametrin si DATA_BLOCK_ENCODING, i cili kodon informacionin duke p\u00ebrdorur vlerat nga qelizat fqinje, gj\u00eb q\u00eb \u00ebsht\u00eb mjaft e shpjegueshme p\u00ebr t\u00eb dh\u00ebnat e gjeneruara n\u00eb m\u00ebnyr\u00eb t\u00eb rast\u00ebsishme. N\u00eb rastin e p\u00ebrdorimit t\u00eb nj\u00eb numri t\u00eb madh objektesh t\u00eb p\u00ebrs\u00ebritura, fitimi mund t\u00eb jet\u00eb i konsideruesh\u00ebm. N\u00eb p\u00ebrgjith\u00ebsi, mund t\u00eb thuhet se HBase b\u00ebhet nj\u00eb baz\u00eb t\u00eb dh\u00ebnash q\u00eb duket mjaft serioze dhe e menduar, e cila gjat\u00eb operacioneve me blloqe t\u00eb m\u00ebdha t\u00eb t\u00eb dh\u00ebnave mund t\u00eb jet\u00eb mjaft e fuqishme. Sidomos n\u00ebse ka mund\u00ebsi t\u00eb ndahen n\u00eb koh\u00eb proceset e leximit dhe shkrimit.<\/p>\n<p>N\u00ebse mendoni se ndonj\u00eb gj\u00eb nuk \u00ebsht\u00eb shpjeguar mjaftuesh\u00ebm, jam i gatsh\u00ebm t\u00eb flas m\u00eb shum\u00eb. E inkurajojm\u00eb t\u00eb ndajm\u00eb p\u00ebrvoj\u00ebn ton\u00eb ose t\u00eb diskutojm\u00eb n\u00ebse nuk pajtoheni me di\u00e7ka.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/sberbank\/blog\/420425\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0430\u043d\u0438\u043b \u041b\u0438\u043f\u043e\u0432\u043e\u0439, \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432 \u0421\u0431\u0435\u0440\u0442\u0435\u0445\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HBase \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u0445\u043e\u0434\u0435 \u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0441\u044f \u043e\u043f\u044b\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u043f\u0438\u0441\u0430\u0442\u044c (\u043d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e). \u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0441 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 HBase 1.2.0-cdh5.14.2 \u0438 2.0.0-cdh6.0.0-beta1. \u041e\u0431\u0449\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0417\u0430\u043f\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 HBASE \u0427\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 HBASE [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55302","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0430\u043d\u0438\u043b \u041b\u0438\u043f\u043e\u0432\u043e\u0439, \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432 \u0421\u0431\u0435\u0440\u0442\u0435\u0445\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HBase \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-hbase\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f HBase | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0430\u043d\u0438\u043b \u041b\u0438\u043f\u043e\u0432\u043e\u0439, \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432 \u0421\u0431\u0435\u0440\u0442\u0435\u0445\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HBase \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-hbase\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-16T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:24+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Teoria dhe praktika e p\u00ebrdorimit t\u00eb HBase | ProHoster","description":"P\u00ebrsh\u00ebndetje! M\u00eb quajn\u00eb Danil Lipovoy, ekipi yn\u00eb n\u00eb Sbertech ka filluar t\u00eb p\u00ebrdor\u00eb HBase si nj\u00eb depo t\u00eb dh\u00ebnash operacionale.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-hbase","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f HBase | ProHoster","og:description":"\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u0430\u043d\u0438\u043b \u041b\u0438\u043f\u043e\u0432\u043e\u0439, \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432 \u0421\u0431\u0435\u0440\u0442\u0435\u0445\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HBase \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/teoriya-i-praktika-ispolzovaniya-hbase","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-16T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:24+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55302","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:46:28","updated":"2022-09-28 08:11:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/55302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=55302"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/55302\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=55302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=55302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=55302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}