您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“hbase怎么判斷數(shù)據(jù)寫(xiě)入哪個(gè)region”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“hbase怎么判斷數(shù)據(jù)寫(xiě)入哪個(gè)region”這篇文章吧。
HBase中,表會(huì)被劃分為1...n個(gè)Region,被托管在RegionServer中。Region二個(gè)重要的屬性:StartKey與EndKey表示這個(gè)Region維護(hù)的rowKey范圍,當(dāng)我們要讀/寫(xiě)數(shù)據(jù)時(shí),如果rowKey落在某個(gè)start-end key范圍內(nèi),那么就會(huì)定位到目標(biāo)region并且讀/寫(xiě)到相關(guān)的數(shù)據(jù)。簡(jiǎn)單地說(shuō),有那么一點(diǎn)點(diǎn)類似人群劃分,1-15歲為小朋友,16-39歲為年輕人,40-64為中年人,65歲以上為老年人。(這些數(shù)值都是拍腦袋出來(lái)的,只是舉例,非真實(shí)),然后某人找隊(duì)伍,然后根據(jù)年齡,處于哪個(gè)范圍,就找到它所屬的隊(duì)伍。
然后,默認(rèn)地,當(dāng)我們只是通過(guò)HBaseAdmin指定TableDescriptor來(lái)創(chuàng)建一張表時(shí),只有一個(gè)region,正處于混沌時(shí)期,start-end key無(wú)邊界,可謂海納百川。啥樣的rowKey都可以接受,都往這個(gè)region里裝,然而,當(dāng)數(shù)據(jù)越來(lái)越多,region的size越來(lái)越大時(shí),大到一定的閥值,hbase認(rèn)為再往這個(gè)region里塞數(shù)據(jù)已經(jīng)不合適了,就會(huì)找到一個(gè)midKey將region一分為二,成為2個(gè)region,這個(gè)過(guò)程稱為分裂(region-split).而midKey則為這二個(gè)region的臨界。
如何找到midKey?涉及的內(nèi)容比較多,暫且不去討論,最簡(jiǎn)單的可以認(rèn)為是region的總行數(shù) / 2 的那一行數(shù)據(jù)的rowKey.雖然實(shí)際上比它會(huì)稍復(fù)雜點(diǎn)。
如果我們就這樣默認(rèn)地,建表,表里不斷地Put數(shù)據(jù),更嚴(yán)重的是我們的rowkey還是順序增大的,是比較可怕的。存在的缺點(diǎn)比較明顯。
首先是熱點(diǎn)寫(xiě),我們總是會(huì)往最大的start-key所在的region寫(xiě)東西,因?yàn)槲覀兊膔owkey總是會(huì)比之前的大,并且hbase的是按升序方式排序的。所以寫(xiě)操作總是被定位到那個(gè)region中。
其次,由于寫(xiě)熱點(diǎn),我們總是往最大start-key的region寫(xiě)記錄,之前分裂出來(lái)的region不會(huì)再被寫(xiě)數(shù)據(jù),有點(diǎn)被打進(jìn)冷宮的趕腳,它們都處于半滿狀態(tài),這樣的分布也是不利的。
如果在寫(xiě)比較頻率的場(chǎng)景下,數(shù)據(jù)增長(zhǎng)快,split的次數(shù)也會(huì)增多,由于split是比較耗時(shí)耗資源的,所以我們并不希望這種事情經(jīng)常發(fā)生。
看到這些缺點(diǎn),我們知道,在集群的環(huán)境中,為了得到更好的并行性,我們希望有好的load blance,讓每個(gè)節(jié)點(diǎn)提供的請(qǐng)求處理都是均等的。我們也希望,region不要經(jīng)常split,因?yàn)閟plit會(huì)使server有一段時(shí)間的停頓,如何能做到呢?
隨機(jī)散列與預(yù)分區(qū)。二者結(jié)合起來(lái),是比較完美的,預(yù)分區(qū)一開(kāi)始就預(yù)建好了一部分region,這些region都維護(hù)著自已的start-end keys,再配合上隨機(jī)散列,寫(xiě)數(shù)據(jù)能均等地命中這些預(yù)建的region,就能解決上面的那些缺點(diǎn),大大地提高了性能。
有時(shí)候根據(jù)自己的業(yè)務(wù)場(chǎng)景我們可能只需要將rowkey隨機(jī)散列,所隨機(jī)出的rowkey有可能會(huì)小于第二個(gè)region的startkey并大于第一個(gè)region的startkey,這時(shí)候就與第一個(gè)region通信,以此類推。雖然rowkey隨機(jī)化處理,不是將整個(gè)遞增的rowkey數(shù)據(jù)均云分布到所有的region,但是可以保證大致的分布。
以上是“hbase怎么判斷數(shù)據(jù)寫(xiě)入哪個(gè)region”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。