一、迁移前准备工作
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对性能的影响。