Hbase拆分與合併
阿新 • • 發佈:2020-08-03
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
合併前:
合併後: