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目录有读写权限;