HBase實用技巧:一種全量+增量數據的遷移方法

      網友投稿 1119 2025-03-31

      背景


      在HBase使用過程中,使用的HBase集群經常會因為某些原因需要數據遷移。大多數情況下,可以跟用戶協商用離線的方式進行遷移,遷移離線數據的方式就比較容易了,將整個hbase的data存儲目錄進行搬遷就行,但是當集群數據量比較多的時候,文件拷貝的時間很長,對客戶的業務影響時間也比較長,往往在客戶給的時間窗口無法完成,本文給出一種遷移思路,可以利用HBase自身的功能,對集群進行遷移,減少集群業務中斷時間。

      簡介

      大家都知道HBase有snapshot快照的功能,利用快照可以記錄某個時間點表的數據將其保存快照,在需要的時候可以將表數據恢復到打快照時間時的樣子。我們利用hbase的snapshot可以導出某個時間點的全量數據。

      因為用戶的業務還在不停的寫入表中,除了遷移快照時間點之前的全量數據,我們還需要將快照時間點后源源不斷的增量數據也遷移走,這里如果能采用雙寫的方式,將數據寫入兩個集群就好了,但是用戶的業務不會這樣做,如果這樣做還得保證雙寫的事務一致性。于是可以利用HBase的replication功能,replication功能本身就是保留了源集群的WAL日志記錄,去回放寫入到目的集群,這樣一來用戶業務端->原始集群->目的集群便是個串形的數據流,且由HBase來保證數據的正確性。

      所以這個遷移的方法就是利用snapshot遷移全量數據,利用replication遷移增量數據。

      遷移步驟

      上圖給出了遷移的整個時間線流程,主要有這么5個時間點。

      T0: 配置好老集群A集群到新集群B的Replication關系,Replication的數據由A集群同步到集群B,將表設置成同步,從此刻開始新寫入A集群表的數據會保留在WAL日志中;

      T1: 生成該時間點的全量數據,通過創建快照,以及導出快照數據的方式將該時間點的數據導出到新集群B;

      T2: 新集群B將T1時刻的快照數據導入,此時新集群B中會由快照創建出表,此時老集群A集群上設置的Replication的關系會自動開始將T0時刻保留的WAL日志回放至新集群B的表中,開始增量數據同步。

      T3: 由于從T0-T3之間的操作會花費一段時間,此時會積累很多WAL日志文件,需要一定的時間來同步至新集群,這里需要去監控一下數據同步情況,等老集群WAL被逐漸消費完,此時可以將老集群的寫業務停止一下并準備將讀寫業務全部切到新集群B。

      T4: T3-T4之間應該是個很短的時間,整個遷移也只有這個時間點會有一定中斷,此時是讓用戶將業務完全切到新集群B,至此遷移完成。

      操作涉及的命令

      HBase實用技巧:一種全量+增量數據的遷移方法

      1.設置集群A和集群B的peer關系

      在源集群hbase shell中, 設定peer

      add_peer 'peer_name','ClusterB:2181:/hbase'

      2.在集群A的表中設置replication屬性

      假設目標表名為Student,先獲取Family=f

      進入hbase shell中,

      alter 'Student',{NAME => 'f',REPLICATION_SCOPE => '1'}

      3.給集群A的表創建快照

      在hbase shell中

      snapshot 'Student','Student_table_snapshot'

      4.在A集群中導出快照

      hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot Student_table_snapshot -copy-to /snapshot-backup/Student

      5.將快照數據放置到集群B的對應的目錄下

      上面命令會導出2個目錄,一個是快照元數據,一個是原始數據

      將元數據放到/hbase/.hbase-snapshot中,將原始數據放到/hbase/archive目錄中

      由于hbase的archive目錄會有個定時清理,這里可以提前將集群B的master的hbase.master.cleaner.interval值設置大點,避免拷貝過程中發生碰巧發生了數據清理。

      如果集群B中沒有對應的目錄,可以提前創建

      hdfs dfs -mkdir -p /hbase/.hbase-snapshot

      hdfs dfs -mkdir -p /hbase/archive/data/default/

      移動導出的snapshot文件到snapshot目錄

      hdfs dfs -mv /snapshot-backup/Student/.hbase-snapshot/Student_table_snapshot /hbase/.hbase-snapshot/

      hdfs dfs -mv /snapshot-backup/Student/archive/data/default/Student /hbase/archive/data/default/

      6.在新集群B中恢復表的快照

      進入hbase shell

      restore_snapshot 'Student_table_snapshot'

      恢復完成后,記得將集群B的hmaster中hbase.master.cleaner.interval的值調整回來。

      參考文檔:

      https://blog.csdn.net/qq475781638/article/details/95253603

      https://support.huaweicloud.com/usermanual-mrs/mrs_01_0501.html

      HBase 表格存儲服務 CloudTable 智能數據 EI企業智能

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎樣將word文檔里的英文和數字設置字體(怎么設置文檔里面的數字和英文字體)
      下一篇:開放”是云平臺的歸宿
      相關文章
      亚洲精品无码国产| 亚洲天堂男人影院| 亚洲成A人片在线播放器| 中文字幕亚洲综合精品一区| 亚洲va无码专区国产乱码| 亚洲高清偷拍一区二区三区 | 亚洲精华国产精华精华液| wwwxxx亚洲| 亚洲AV无码专区在线亚| 亚洲国产成人精品久久| 亚洲永久中文字幕在线| 亚洲国产成人超福利久久精品| 亚洲国产精品自在线一区二区 | 亚洲av无码一区二区三区四区| 亚洲美国产亚洲AV| 含羞草国产亚洲精品岁国产精品| 美国毛片亚洲社区在线观看| 五月婷婷亚洲综合| 亚洲国产婷婷综合在线精品| 亚洲一本大道无码av天堂| 在线观看亚洲成人| 国产亚洲综合一区柠檬导航| 亚洲av中文无码乱人伦在线r▽| 国产av天堂亚洲国产av天堂| 亚洲AV人无码激艳猛片| 久久亚洲国产精品成人AV秋霞| 67pao强力打造67194在线午夜亚洲 | 亚洲av无一区二区三区| 亚洲AⅤ无码一区二区三区在线| 亚洲成人高清在线| 亚洲色欲一区二区三区在线观看 | 亚洲av无码一区二区乱子伦as| 亚洲91av视频| 亚洲国产成人精品青青草原| 亚洲人成无码网站在线观看| 无码欧精品亚洲日韩一区夜夜嗨 | 久久精品国产精品亚洲艾| 99久久精品国产亚洲| 亚洲一区在线免费观看| 国产精品亚洲精品久久精品| 丁香五月亚洲综合深深爱|