hbase預分割槽總結

2021-10-06 22:21:36 字數 1060 閱讀 9972

如果知道hbase資料表的key的分布情況,就可以在建表的時候對hbase進行region的預分割槽。這樣做的好處是防止大資料量插入的熱點問題,提高資料插入的效率。

1.規劃hbase預分割槽

首先就是要想明白資料的key是如何分布的,然後規劃一下要分成多少region,每個region的startkey和endkey是多少,然後將規劃的key寫到乙個檔案中。比如,key的前幾位字串都是從0001~0010的數字,這樣可以分成10個region,劃分key的檔案如下:

0001|

0002|

0003|

0004|

0005|

0006|

0007|

0008|

0009|

為什麼後面會跟著乙個"|",是因為在ascii碼中,"|"的值是124,大於所有的數字和字母等符號,當然也可以用「~」(ascii-126)。分隔檔案的第一行為第乙個region的stopkey,每行依次類推,最後一行不僅是倒數第二個region的stopkey,同時也是最後乙個region的startkey。也就是說分割槽檔案中填的都是key取值範圍的分隔點,如下圖所示:

2.hbase shell中建分割槽表,指定分割槽檔案

可以通過指定splits_file的值指定分割槽檔案,如果分割槽資訊比較少,也可以直接用splits分割槽。我們可以通過如下命令建乙個分割槽表,指定第一步中生成的分割槽檔案:

create 『split_table_test』, 『cf』,

下面,我們登陸一下master的web頁面hmaster:60010,檢視一下hbase的表資訊,找到剛剛新建的預分割槽表,進入檢視region資訊:

我們看到第乙個region是沒有startkey的,最後乙個region是沒有stopkey的

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會自動處理region拆分,當region的大小到達一定閾值後,region將被拆分成兩個,之後在兩個region都能繼續增長資料。然而在這個過程當中,會出現兩個問題 第一點,就是我們所說的熱點問題,資料會繼續往乙個region中寫,出現寫熱點問題 第二點,則是拆分合併風暴,當使用者的...