一、遷移前準備工作
hbase-site.xml
配置文件,確認hbase.rootdir
指向正確的HDFS路徑(如hdfs://target-namenode:8020/hbase
),并調整hbase.master
、hbase.regionserver
等參數以適配目標環境。tar -czvf hbase-backup.tar.gz /hbase
壓縮數據目錄),避免遷移過程中數據丟失。hbase
用戶)對源、目標集群的HDFS目錄(如/hbase
)有讀寫權限。若使用非hbase
用戶,需提前用hdfs dfs -chown -R hbase:hbase /hbase/
修改權限。二、全量數據遷移(核心步驟)
snapshot 'student', 'student_snapshot'
),快照會記錄表的元數據和數據狀態。ExportSnapshot
工具將快照導出到目標集群的HDFS目錄(如hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot student_snapshot -copy-from hdfs://source-namenode:8020/hbase -copy-to hdfs://target-namenode:8020/hbase -mappers 30 -bandwidth 8192
)。參數說明:-mappers
控制并發任務數(根據集群資源調整,如30),-bandwidth
限制傳輸帶寬(如8MB/s,避免占用過多網絡資源)。clone_snapshot
命令恢復表結構和數據(如clone_snapshot 'student_snapshot', 'student'
)。若原表屬于自定義namespace,需先創建namespace(create_namespace 'namespace_name'
)。flush 'student'
將內存中的數據刷寫到HDFS,確保數據一致性。hadoop distcp hdfs://source-namenode:8020/hbase hdfs://target-namenode:8020/hbase_new
)。需確保源、目標集群的HDFS路徑正確。Import
工具導入數據(如import 'student', 'hdfs://target-namenode:8020/hbase_new/student'
)。三、增量數據同步 配置HBase Replication功能,同步源集群與目標集群之間的增量數據(如實時新增的行):
add_peer 'peer1', 'target-cluster:2181:/hbase'
,其中target-cluster
為目標集群的ZooKeeper quorum)。REPLICATION_SCOPE => '1'
屬性(如alter 'student', {NAME => 'cf', REPLICATION_SCOPE => '1'}
),確保列族的增量數據寫入WAL日志并同步到目標集群。hbase shell
(hbase replication status
)監控增量數據同步進度,確保無延遲或錯誤。四、遷移后驗證與優化
hbck
工具檢查目標集群的數據完整性(如hbase hbck -j /path/to/hbase.jar
),修復可能存在的region分配問題或數據缺失。list
查看所有表,scan 'student'
查看表數據,確認數據完整性和正確性。同時,測試業務應用是否能正常連接目標集群并訪問數據。handler.count
(并發處理數,默認30,可根據需求調整為100+);hbase.regionserver.handler.count
(RegionServer并發線程數)、hbase.hregion.memstore.flush.size
(MemStore刷寫閾值,默認128MB,可根據數據量調整為256MB+);hbase.hstore.compaction.min
(最小Compaction文件數)、hbase.hstore.compaction.max
(最大Compaction文件數)等參數,減少Compaction對性能的影響。