1. 程式人生 > >Hbase region 管理

Hbase region 管理

實驗環建

master: 192.168.1.160
slave1: 192.168.1.161
zookeeper版本: 3.4.6
hadoop版本: apache-hadoop-2.6.5
hbase版本: 1.2.6
主機作業系統: ubuntu-16.04

region 日常管理命令

region分割

  • 建立表

    hbase(main):068:0> create 'ns2:t1', NAME=>'f1'
    0 row(s) in 1.2780 seconds
    
    => Hbase::Table - ns2:t1
    
  • 分割表

    hbase(main):075:0> split 'ns2:t1', '00100'
    
  • 查看錶元資料

    hbase(main):075:0> scan 'hbase:meta'
    

    這裡寫圖片描述
    可以看出ns2:t1表被分割成兩個region。

合併region

  • 查看錶的元資料

    base(main):081:0> scan 'hbase:meta'
    

    這裡寫圖片描述
    表ns2:t1有兩個region,下面需要將其合併為一個region。

  • 合併region

    hbase(main):078:0> merge_region '53e22bebf0b02667f0c408bfdf68a931', 'b5c9f4b0eb33dadec81e44dab820b2ac'
    0 row(s) in 0.0560 seconds
    
  • 再次檢視元資料

    hbase(main):081:0> scan 'hbase:meta'
    

    這裡寫圖片描述
    可以看出兩個region被合併成一個region。

關閉region

  • 新建一個有兩個region的表

    hbase(main):099:0> create 'ns2:t1','f1' ,SPLITS=>['00100']
    0 row(s) in 1.2690 seconds
    
    => Hbase::Table - ns2:t1
    
    hbase(main):104:0> scan 'hbase:meta'
    

    這裡寫圖片描述

  • 分別給兩個region中插入資料

     hbase(main):002:0> put 'ns2:t1', '00001' , 'f1:name', 'lisi'
     hbase(main):004:0> put 'ns2:t1', '00101' , 'f1:name', 'Bob'
    
     hbase(main):006:0> scan 'ns2:t1'
     ROW                          COLUMN+CELL                                                                    
     00001                       column=f1:name, timestamp=1532365712744, value=lisi                            
     00101                       column=f1:name, timestamp=1532365730917, value=Bob                             
    2 row(s) in 0.0270 seconds
    
  • 關閉其中一個region

    hbase(main):015:0> close_region ‘ns2:t1,,1532364170492.96603f4c1b2df6dbe5d316820494d2e8.’
    0 row(s) in 0.0640 seconds

  • 訪問剛插入的資料

    hbase(main):020:0> get 'ns2:t1', '00101'
    COLUMN                       CELL                                                                           
     f1:name                     timestamp=1532365730917, value=Bob                                             
    1 row(s) in 0.0100 seconds
    
     hbase(main):027:0> get 'ns2:t1', '00001'
    COLUMN                       CELL                                                                           
    ERROR: org.apache.hadoop.hbase.NotServingRegionException: Region ns2:t1,,1532364170492.96603f4c1b2df6dbe5d316820494d2e8. is not online on master,16020,1532358837870
    

    可見沒有被關閉的region裡的資料還能正常訪問。

region上線

  • 關閉的region上線
    基於ns2:t1表,讓關閉的region重新上線。

     hbase(main):031:0> assign 'ns2:t1,,1532364170492.96603f4c1b2df6dbe5d316820494d2e8.'
    0 row(s) in 0.0590 seconds
    
  • 重新訪問以前新增的資料

    hbase(main):036:0> scan 'ns2:t1'
    ROW                          COLUMN+CELL                                                                    
     00001                       column=f1:name, timestamp=1532365712744, value=lisi                            
     00101                       column=f1:name, timestamp=1532365730917, value=Bob                             
    2 row(s) in 0.0430 seconds
    

移動region

  • 新建一個有兩個region的表

     hbase(main):046:0> create 'ns2:t2','f1' ,SPLITS=>['0010']
    0 row(s) in 1.2710 seconds
    
    => Hbase::Table - ns2:t2
    
  • 檢視兩個region在主機上的分佈

     hbase(main):051:0> scan 'hbase:meta'
    

    這裡寫圖片描述
    可以看出一個region位於slave1上,一個位於master上。

  • 移動region
    將位於master上的region移動到主機slave1上。

    hbase(main):055:0> move '574e8f43936dbb63342041bb370c4b93', 'slave1,16020,1532358841383'
    0 row(s) in 0.0280 seconds
    
  • 再次檢視region在主機上的分佈
    這裡寫圖片描述

    可以看出兩個region都在slave1上了。

region負載均衡

hbase(main):064:0> balancer #觸發region負載均衡
hbase(main):065:0> balance_switch true  #啟用均衡算器
hbase(main):065:0> balance_switch false #關閉均衡算器