1. 程式人生 > 實用技巧 >Hbase拆分與合併

Hbase拆分與合併

Region的遷移和合並

Region的拆分

隨著大合併的增多,一個region越來越大,造成資料的儲存不平衡,訪問速度也會變慢。

  • 所以,當region達到一定大小(預設10G),region會先下線,一分為二,分為兩個region,R1,R2.
  • Hmaster會將R2遷移到其他的regionserver中。底層的Hfile指向新的region2
  • 更新元資料資訊region1 region2到HBASE:meta表

Region的合併

  • Region的合併不是為了效能, 而是出於維護的目的 .
  • 比如刪除了大量的資料 ,這個時候每個Region都變得很小,儲存多個Region就浪費了 ,這個時候可以把Region合併起來,進而可以減少一些Region伺服器節點

Region合併有兩種方式

  • 冷合併
  • 熱合並

Region冷合併

  • 執行合併前,需要先關閉hbase叢集
  • 通過hbase +org.apache.hadoop.hbase.util.Merge類 + table name全名合併
  • 不需要進入hbase shell,直接執行
hbase org.apache.hadoop.hbase.util.Merge person 
person,,1593953711622.dcd1823dc1cc11ba251fe7e18e747a75. 
person,1000,1593953711622.ca647144d51cd76f01909801d070bf6f.
  • 1
  • 2
  • 3


合併前

合併後:

Region熱合並

  • 不需要關閉hbase叢集,線上進行合併

  • 與冷合併不同的是,online_merge的傳參是Region的hash值,而Region的hash值就是Region名稱的最後那段在兩個.之間的字串部分。

  • 需求:需要把test表中的2個region資料進行合併:
    student,1593954415190.098539361430261d4c02cf78c0134a04.
    student,aa,1593954415190.f9650b81405e95bf1d32bdf5c137192a.

  • 需要進入hbase shell:

merge_region '098539361430261d4c02cf78c0134a04','f9650b81405e95bf1d32bdf5c137192a'
  • 1

合併前:

合併後: