Hbase snapshot数据迁移

# 在源集群中创建快照
(linux shell) hbase snapshot -t <table_name> -n <snapshot_name>

或(hbase shell) snapshot <table_name>, <snapshot_name>

# 将快照从源集群导出到目标集群
(linux shell) hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <table_name> -copy-from hdfs://<source_cluster>/hbase -copy-to hdfs://<target_cluster>/hbase -mappers 200 -bandwidth 20 -chuser hbase -chgroup hbase -overwrite

(linux shell) hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot <table_name> -copy-from hdfs://namenodeip:8020/hbase  -copy-to hdfs://namenodeip:8020/hbase -mappers 200 -bandwidth 20 -chuser hbase -chgroup hbase -overwrite

参数:

-mappers ->任务map数

-bandwidth  -> 网络带宽最大使用量

-chuser  -> 所有者

-chgroup -> 所有组

-overwrite ->覆盖

注意:

-chuser hbase -chgroup hbase必须加,否则在clone时会有权限问题,导致clone失败

补充:

有些时候执行完任务,在目标集群并不能找到对应快照,再执行一次,会在很短时间内完成

# 在目标hbase中从快照恢复表
(hbase shell) clone_snapshot <snapshot_name>,<table_name>
补充:恢复完需验证数据,有些时候数据检索不到,drop后,再重新clone出来可恢复

# 在目标集群中删除快照
(hbase shell) delete_snapshot <snapshot_name>

# 在源集群中删除快照和表
(hbase shell) delete_snapshot <snapshot_name>
(hbase shell) disable <tablename>(数据同步时无需执行)
(hbase shell) drop <tablename>(数据同步时无需执行)

TIPS:
正常集群内的表及数据目录:
/hbase/data/default/
通过快照传输过去的表数据在hdfs的目录:
/hbase/archive/data/default/,且表名与源集群表名相同
克隆出的表也存在于/hbase/data/default/,表名取决于clone时的命名,drop后会删除,但不会删除原始数据目录(/hbase/archive/data/default/)

原文地址:https://www.cnblogs.com/changsblogs/p/11856729.html