hbase shell的backup命令或直接备份HDFS数据目录(如/hbase/data),防止迁移过程中数据丢失。hbase shell> backup 'source_table', 'backup_table'
# 或备份整个数据目录
tar -czvf hbase-backup.tar.gz /hbase/data
hbase-site.xml、core-site.xml等核心配置文件与源集群一致(如ZooKeeper地址、HDFS路径等)。Export命令,将指定表数据导出到HDFS的指定路径。hbase org.apache.hadoop.hbase.mapreduce.Export 'source_table' '/path/to/source/export'
hdfs dfs -get命令将导出的数据从源HDFS复制到目标HDFS。hdfs dfs -get /path/to/source/export /path/to/target/export
Import命令,将HDFS中的数据导入到目标表(需提前创建同名表结构)。hbase org.apache.hadoop.hbase.mapreduce.Import 'target_table' '/path/to/target/export'
hbase shell扫描目标表,确认数据完整性。hbase shell> scan 'target_table'
HFileOutputFormat2将导出的数据转换为HBase原生HFile格式(适合批量加载)。hbase org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2 \
-D mapreduce.job.output.key.class=org.apache.hadoop.hbase.KeyValue \
-D mapreduce.job.output.value.class=org.apache.hadoop.hbase.KeyValue \
-D mapreduce.job.output.format=org.apache.hadoop.hbase.mapreduce.TableOutputFormat \
-D mapreduce.job.name='HBase Bulk Load' \
-D hbase.table.name=target_table \
'/path/to/source/export' '/path/to/target/hfiles'
LoadIncrementalHFiles工具将HFile加载到目标集群的目标表。hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \
-D mapreduce.job.name='Load HFiles' \
-D hbase.table.name=target_table \
'/path/to/target/hfiles' 'target_table'
hbase-site.xml中添加复制相关配置,并通过hbase shell添加目标集群为Peer。<!-- hbase-site.xml -->
<property>
<name>hbase.replication</name>
<value>true</value>
</property>
hbase shell> add_peer 'peer1', 'zk1:2181,zk2:2181,zk3:2181:/hbase'
hbase shell> start_replication 'peer1'
hbase shell的status命令查看复制进度。hbase shell> status 'replication'
hbase shell> snapshot 'snapshot_name', 'source_table'
ExportSnapshot工具将快照复制到目标集群的HDFS。hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot snapshot_name \
-copy-from hdfs://source-namenode:8020/hbase/.hbase-snapshot/snapshot_name \
-copy-to hdfs://target-namenode:8020/hbase/.hbase-snapshot/
restore_snapshot命令恢复快照为表。hbase shell> restore_snapshot 'snapshot_name'
hdfs dfs -rm -r /path/to/source/export
hdfs dfs -rm -r /path/to/target/export
stop-hbase.sh && start-hbase.sh
hbase shell检查表结构、数据量及业务查询,确保迁移无误。DistCp替代普通hdfs dfs -put(提升传输效率),或调整mapreduce参数(如mapreduce.task.io.sort.mb)优化任务性能。