Hbase預分區


HBase的預分區

1、為何要預分區?

  • 增加數據讀寫效率
  • 負載均衡,防止數據傾斜
  • 方便集群容災調度region
  • 優化Map數量

2、如何預分區?

每一個region維護着startRow與endRowKey,如果加入的數據符合某個region維護的rowKey范圍,則該數據交給這個region維護。

3、如何設定預分區?

3.1、手動指定預分區

create 'staff','info','partition1',SPLITS => ['1000','2000','3000','4000']

完成后如圖:

 

3.2、使用16進制算法生成預分區

create 'staff2','info','partition2',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}

完成后如圖:

 

3.3、分區規則創建於文件中

創建splits.txt文件內容如下:

aaaa
bbbb
cccc
dddd

 

然后執行:

create 'table2','partition2',SPLITS_FILE => 'splits.txt'

成功后如圖:

 

3.4、使用JavaAPI創建預分區

Java代碼如下:

//自定義算法,產生一系列Hash散列值存儲在二維數組中

byte[][] splitKeys = 某個散列值函數

//創建HBaseAdmin實例

HBaseAdmin hAdmin = new HBaseAdmin(HBaseConfiguration.create());

//創建HTableDescriptor實例

HTableDescriptor tableDesc = new HTableDescriptor(tableName);

//通過HTableDescriptor實例和散列值二維數組創建帶有預分區的HBase表

hAdmin.createTable(tableDesc, splitKeys);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM