3.1-3.3 HBase Shell創建表


一、HBase Shell創建表

1、HBASE shell命令

##
hbase(main):001:0> create_namespace 'ns1'        //創建命名空間:ns1
hbase(main):002:0> list_namespace            //查看命名空間


##
hbase(main):003:0> create 'ns1:t1', 'cf'            //創建一個表t1,屬於ns2命名空間,列族:cf

hbase(main):005:0> create 'ns1:t2',{NAME =>'f1'},{NAME =>'f2'},{NAME =>'f3'}          //創建一張表,有三個列族f1 f2 f3
hbase(main):009:0> create 'ns1:t3', 'f1', 'f2', 'f3'

hbase(main):010:0> list_namespace_tables 'ns1'        //查看命名空間下的表

hbase(main):011:0> describe 'ns1:t2'            //查看命名空間下的表的結構


二、HBase表創建時的預分區

1、預分區

HBase默認建表時有一個region,這個region的rowkey是沒有邊界的,即沒有startkey和endkey,在數據寫入時,所有數據都會寫入這個默認的region,
隨着數據量的不斷  增加,此region已經不能承受不斷增長的數據量,會進行split,分成2個region。在此過程中,會產生兩個問題:
1.數據往一個region上寫,會有寫熱點問題。
2.region split會消耗寶貴的集群I/O資源。
基於此我們可以控制在建表的時候,創建多個空region,並確定每個region的起始和終止rowky,這樣只要我們的rowkey設計能均勻的命中各個region,
就不會存在寫熱點問題。自然split的幾率也會大大降低。當然隨着數據量的不斷增長,該split的還是要進行split。像這樣預先創建hbase表分區的方式,稱之為預分區;


2、預分區方式1

hbase(main):015:0> create 'bflogs', 'info', SPLITS => ['20151001000000000', '20151011000000000', '20151021000000000']

指定預估rowkey(年月日時分秒毫秒):
   ’20151001000000000’
   ’20151011000000000’
   ’20151021000000000’

生成了4個region:

image


3、預分區方式2

##
可以把預估rowkey,放到文件中

[root@hadoop-senior datas]# cat bflogs-split.txt 
20151001000000000
20151011000000000
20151021000000000


##建表
hbase(main):016:0> create 'bflogs2', 'info', SPLITS_FILE => '/opt/datas/bflogs-split.txt'


生成了4個region:

image



4、預分區方式3

##自動生成預分區rowkey,不常用

##方式1
hbase(main):017:0> create 't11', 'f11', {NUMREGIONS => 2, SPLITALGO => 'HexStringSplit'}    //生成兩個rowkey

##方式2
hbase(main):018:0> create 't12', 'f12', {NUMREGIONS => 4, SPLITALGO => 'UniformSplit'}        //生成4個rowkey

方式1

image

方式2

image


免責聲明!

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



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