每個table由若干個region組成,每個region由若干個store組成(每個列組構成乙個store),每個由乙個memstore和若干個storefiles(hfiles)組成,每個storefile由若干個blocks組成。
hbase對錶進行split有三種方式
pre-splitting,auto splitting,forced splits本文重點說說pre-splitting的使用。
regionsplitter提供三個用於預分割的工具:hexstringsplit、splitalgorithm、uniformsplit。其中hexstringsplit和uniformsplit是兩個預定義的靜態類,可以直接使用;而splitalgorithm是乙個介面,需要開發人員自己實現相應的分隔策略。如果是以十六進製制字串作為行鍵rowkey或者行鍵rowkey的字首是十六進製制字串,用hexstringsplit就比較合適;uniformsplit會把行鍵均勻地分割多個部分,如果行將rowkey是隨機的位元組陣列,用uniformsplit就比較合適;或者開發者根據需要實現分割策略1 hexstringsplit
create 'hexstringtb', 'f1',
1.1 分割槽效果
1.2 插入記錄
put 'hexstringtb','22222222','f1:name','2'
put 'hexstringtb','55555555','f1:name','5'
1.3 落入分割槽
22222222-33333333 1條
55555555-66666666 1條
說明 startkey ≤ rowkey < endkey
2 uniformsplit
create 'uniformtb', 'f1',
2.1 分割槽效果
2.2 插入記錄
put 'uniformtb','dddddddd','f1:name','2'
put 'uniformtb','ffffffff','f1:name','5'
2.3 落入分割槽
dddddddd-uuuuuuuu 1條
ffffffff-wwwwwwww 1條
3 自定義分割槽
create 'mysplittb', 'f1', splits => ['00|','10|', '20|', '30|', '40|','50|', '60|', '70|', '80|','90|']
3.1 分割槽效果
3.2 插入記錄
put 'mysplittb','00|abcdefd','f1:name','2'
put 'mysplittb','20|abcdefd','f1:name','2'
3.3 落入分割槽
00|-10| 1條
20|-30| 1條
* 列印分割槽資訊
* @param tablename
*/public static boolean printhtableregioninfo(string tablename)
return true;
} catch (ioexception e)
return false;
}
@test
public void printhtableregioninfo()
else
}
mysplittb,,1547390815132.ef207ecf4712436f160b247c17ddbbd4.
00|mysplittb,00|,1547390815132.fc59155ab9184e8c6fa59a18b26336f4.
00|10|
mysplittb,10|,1547390815132.0f6c1ec45cfc1da3744c4de6a57d9bb8.
10|20|
mysplittb,20|,1547390815132.f843d0cbebdf5622ead01b9f60195e08.
20|30|
mysplittb,30|,1547390815132.906608d2684c2f1b6e7c2fa6110870fb.
30|40|
mysplittb,40|,1547390815132.a48bc2ccd28f0c82cef0d8341b2fced6.
40|50|
mysplittb,50|,1547390815132.c29ac762f05b88ac4d55a420cb97ebe8.
50|60|
mysplittb,60|,1547390815132.46247c4106c45e9be8a315866348413d.
60|70|
mysplittb,70|,1547390815132.aa80d22e2d6caaaa4267229d3c9639c3.
70|80|
mysplittb,80|,1547390815132.a95345bb456c672880ee11475f8db2f1.
80|90|
mysplittb,90|,1547390815132.37a0a89e8e249d8b9c86eb4cf310b773.
90|
HBase預分割槽
hbase提供了預分割槽功能,即使用者可以在建立表的時候對錶按照一定的規則分割槽。hbase表在剛剛被建立時,只有1個分割槽 region 當乙個region過大 達到hbase.hregion.max.filesize屬性中定義的閾值,預設10gb 時,表將會進行split,為2個分割槽。表在進行...
HBase預分割槽 UniformSplit
如果某個hbase的表查詢只是以隨機查詢為主,可以用uniformsplit的方式進行,它是按照原始byte值 從0x00 0xff 右邊以00填充。以這種方式分割槽的表在插入的時候需要對rowkey進行乙個技巧性的改造,比如原來的rowkey為rawstr,則需要對其取hashcode,然後進行按...
hbase預分割槽總結
如果知道hbase資料表的key的分布情況,就可以在建表的時候對hbase進行region的預分割槽。這樣做的好處是防止大資料量插入的熱點問題,提高資料插入的效率。1.規劃hbase預分割槽 首先就是要想明白資料的key是如何分布的,然後規劃一下要分成多少region,每個region的startk...