hbase基于快照的数据迁移
前期准备
1. 对于开启安全认证(kerberos)的集群,首先需要关掉安全认证。
2. 在源集群所有节点/etc/hosts文件中配置目标集群所有节点的host。
源集群操作
开启HBase快照
1. 登录Ambari检查hbase-site.xml中的hbase.snapshot.enabled是否设置为true,确认打开了快照许可。
新建快照
1. 源集群,登陆hbase shell控制台,使用list_snapshot
命令,列出所有的快照。会展示出快照名称,源表,以及创建日期和时间上。
2. 在第1步快照列表中不存在的情况下,执行生成hbase表镜像文件命令
3. 执行“list_snapshots”再次查看所有的hbase的快照列表,确认新的快照已经生成。
快照复制
1. 源集群,查看要迁移的hbase表的数据结构,记录下列族信息、版本信息等内容,可从shell控制台查看,也可以hbase webUI中查看。
2. 从源集群往目标集群拷贝快照(这里用hdfs用户)
1) 不覆盖目标集群同名快照
/usr/hdp/2.3.4.7-4/hbase/bin/hbaseorg.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snap_table_test1 -copy-to hdfs://10.106.1.165:8020/apps/hbase/data
2) 覆盖目标集群同名快照
/usr/hdp/2.3.4.7-4/hbase/bin/hbaseorg.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snap_table_test1 -copy-to hdfs://10.106.1.165:8020/apps/hbase/data -overwrite
目标集群操作
修改权限
1. 修改hdfs下hbase数据文件的权限(hdfs用户登录)。
hadoopfs -chmod -R 777 /apps/hbase/data
hadoopfs -chown -R hbase:hdfs /apps/hbase/data/
新建表
1. 根据旧集群hbase标的describe信息,在新集群创建同样的hbase表(必须同名)
create'table_test1', {NAME => 'cf'}
快照还原表
1. shell控制台中,执行
disable ’ table_test1’
restore_snapshot 'snap_ table_test1
enable ' table_test1'
2. 通过count命令校验数据
count' table_test1'