HBase數據遷移至CentOS的常用方法
快照是HBase提供的無侵入式數據備份工具,可快速捕獲表在某一時間點的狀態,適用于全量數據遷移。
snapshot
命令為需遷移的表創建快照(如遷移student
表,快照名設為student_snapshot
):hbase(main):001:0> snapshot 'student', 'student_snapshot'
ExportSnapshot
工具將快照從源集群HDFS復制到目標集群HDFS。需指定源HDFS路徑(hdfs://old-namenode:8020/hbase
)、目標HDFS路徑(hdfs://new-namenode:8020/hbase
),并可根據數據量調整并發任務數(-mappers
)和帶寬限制(-bandwidth
):hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot student_snapshot -copy-from hdfs://old-namenode:8020/hbase -copy-to hdfs://new-namenode:8020/hbase -mappers 30 -bandwidth 8192
clone_snapshot
命令從快照創建新表(如student
表):hbase(main):001:0> clone_snapshot 'student_snapshot', 'student'
scan
命令檢查目標表數據完整性,或通過count
命令統計行數是否與源表一致。若需實現源集群與目標集群的實時增量同步,可通過Replication功能配置WAL日志復制。
ClusterB:2181:/hbase
):hbase(main):001:0> add_peer 'peer1', 'ClusterB:2181:/hbase'
REPLICATION_SCOPE => '1'
(1表示開啟復制),如同步student
表的info
列族:hbase(main):001:0> alter 'student', {NAME => 'info', REPLICATION_SCOPE => '1'}
student
表插入數據,檢查目標集群是否自動同步新增數據。對于TB級及以上的大規模數據,可通過DistCp(Hadoop分布式拷貝工具)高效遷移HBase數據文件(HFiles)。
hdfs://old-namenode:8020/hbase/data/default/student
)復制到目標集群對應目錄:hadoop distcp hdfs://old-namenode:8020/hbase/data/default/student hdfs://new-namenode:8020/hbase/data/default/
Import
工具將HDFS中的數據導入目標集群表(需提前在目標集群創建同名表結構):hbase org.apache.hadoop.hbase.mapreduce.Import student hdfs://new-namenode:8020/hbase/data/default/student
rowkey
前綴)或業務維度分割成小批次,依次遷移。例如,先遷移2025-01
月的數據,驗證無誤后再遷移2025-02
月數據,降低單次遷移的資源占用和風險。count
命令對比源表與目標表的行數;scan
命令抽取部分數據(如LIMIT 100
),對比源表與目標表的字段值;VerifyReplication
工具(針對Replication場景)或第三方工具(如Apache Griffin)進行深度校驗。hbase-site.xml
、hdfs-site.xml
等配置文件,使其與源集群一致(如ZooKeeper地址、HDFS路徑);hbase
),并賦予HDFS目錄權限(hdfs dfs -chown -R hbase:hbase /hbase
)。hbase
)對源、目標集群的HDFS目錄有讀寫權限;