hbase、hadoop命令),并能正常访问源/目标HBase集群的HDFS和ZooKeeper服务。/hbase、/tmp)对hbase用户可读写,避免权限不足导致的操作失败。快照是HBase提供的轻量级时间点视图,通过HDFS硬链接实现,几乎不占用额外空间,适合大规模数据迁移。
snapshot '快照名', '表名'(如snapshot 'user_snapshot', 'user_table');hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot命令,指定源快照名和目标HDFS路径(如hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot user_snapshot -copy-to hdfs://target-namenode:8020/hbase_snapshot);restore_snapshot '快照名'(如restore_snapshot 'user_snapshot')。CopyTable通过MapReduce任务直接读取源表数据并写入目标表,适合中小规模数据迁移(10T以下)。
hbase org.apache.hadoop.hbase.mapreduce.CopyTable -Dhbase.client.scanner.caching=200 -Dmapreduce.local.map.tasks.maximum=16 --peer.adr=target-zk-ip1,target-zk-ip2,target-zk-ip3:/hbase 表名(--peer.adr指定目标集群的ZooKeeper地址,表名为需迁移的表名)。-Dhbase.client.scanner.caching提高扫描缓存(减少RPC调用),-Dmapreduce.local.map.tasks.maximum调整Map任务数(提升并行度)。通过Export将源表数据导出为HDFS顺序文件,再Import到目标表,适合需要中间存储的场景(如跨机房迁移)。
hbase org.apache.hadoop.hbase.mapreduce.Export 表名 hdfs://source-namenode:8020/export_path;hadoop distcp将导出路径同步到目标HDFS(如hadoop distcp hdfs://source-namenode:8020/export_path hdfs://target-namenode:8020/import_path);hbase org.apache.hadoop.hbase.mapreduce.Import 表名 hdfs://target-namenode:8020/import_path。若源/目标集群的HBase数据均存储在HDFS上,可使用DistCp进行高效并行复制(适合TB级以上数据)。
hadoop distcp hdfs://source-namenode:8020/hbase hdfs://target-namenode:8020/hbase_new(同步源HBase的HDFS目录到目标新目录);hbase-site.xml配置(如hbase.rootdir指向新路径),启动服务并验证数据。scan '表名'对比源表与目标表的数据量(count '表名')和内容一致性;检查HBase日志(/var/log/hbase/)确认无错误。/export_path、/import_path),释放存储空间。Permission denied错误,需将HDFS路径属主改为hbase用户(sudo chown -R hbase:hbase /hbase)。hbase org.apache.hadoop.hbase.util.VersionInfo检查版本一致性。-Dmapreduce.local.map.tasks.maximum)或增加网络带宽(如使用专线)。