快照迁移是HBase官方推荐的高效、低影响迁移方式,适用于Debian环境下不同HBase集群间的数据迁移(如版本升级、集群扩容)。以下是详细步骤:
hbase-site.xml、core-site.xml、hdfs-site.xml配置文件复制到目标集群的HBase配置目录(如/etc/hbase/conf),确保目标集群能访问源集群的HDFS和ZooKeeper。hbase)授予目标数据目录的读写权限:hadoop fs -chmod -R 777 /apps/hbase/data # 临时开放权限(生产环境建议细化权限)
hadoop fs -chown -R hbase:hdfs /apps/hbase/data
hbase shell的list和describe 'table_name'命令获取)。hbase-site.xml,确保hbase.snapshot.enabled属性设置为true(默认开启,无需修改)。user_table为例):hbase shell> create_snapshot 'user_table_snapshot', 'user_table'
hbase shell> list_snapshots
# 输出应包含:user_table_snapshot
使用HBase自带的ExportSnapshot工具,将源集群的快照复制到目标集群的HDFS中(需指定源集群快照路径与目标集群HDFS路径):
# 命令格式:hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <快照名> -copy-to <目标HDFS路径>
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot user_table_snapshot -copy-to hdfs://target-namenode:8020/apps/hbase/snapshot
-snapshot:源集群创建的快照名称(如user_table_snapshot);-copy-to:目标集群HDFS中存放快照的路径(需提前在目标HDFS中创建该目录)。-overwrite参数覆盖(如-overwrite)。hbase)能访问快照数据:hadoop fs -chmod -R 777 /apps/hbase/snapshot/user_table_snapshot
hadoop fs -chown -R hbase:hdfs /apps/hbase/snapshot/user_table_snapshot
clone_snapshot命令,将快照还原为新表(以user_table_target为例):hbase shell> clone_snapshot 'user_table_snapshot', 'user_table_target'
hbase shell> list | grep user_table_target;hbase shell> scan 'user_table_target', {LIMIT => 10}(确认数据与源表一致);hbase shell> status)及ZooKeeper状态(echo stat | nc localhost 2181),确保无异常。hbase shell> delete_snapshot 'user_table_snapshot'
CopyTable工具同步新增数据)。CopyTable同步增量),避免数据丢失;hbase.client.scanner.caching(客户端扫描缓存)参数提升ExportSnapshot速度;