「已解决」exportSnapshot导出后,restore_snapshot 没有数据

跨集群:old-hbase:1.0.0-cdh5.4.5
new-hbase:1.2.0-cdh5.11.2
 
问题:
1、restore_snapshot没有数据,能否提供一点思路
2、exprotsnapshot是否有拷贝hfile到new集群
 
操作大致步骤:
1、使用snapshot 在old集群里面建立快照
2、使用ExportSnapshot导入到new集群里面。
3、建表,然后在new集群restore_snapshot恢复,发现表里面没有数据。
 
检查与思考:
1、在old集群使用clone_snapshot到新表,发现新表有数据,但是占用空间很小,说明共用的hfile。
2、快照保存的是结果、状态等,并没有复制hfile。exportsnapshot是否拷贝了原始的hfile?
3、在网上的文章大部分都是上面的步骤,没有其他了
 
 
已邀请:

hmaster

赞同来自: openinx

可以按照如下思路检查:

1、检查exportsnapshot是否导出成功
   1)仔细看一下exportsnapshot的打印结果。
   2)检查导出是否有MR信息,如果有权限问题,则MR可能不成功(此处可能还不会打印报错信息。。)
   3)如果导出失败,请检查原集群操作是否有权限在新集群步骤3中的提到的目录下生成文件。
    4)如果导出失败,则需要删除在新集群生成的临时数据,重新导出
hdfs dfs -rm -r {hbase.rootidr}/data/.hbase-snapshot/.tmp/snapshotname 
   5)需要将hbase的lib包设置到MR的classpath中,如
yarn-site.xml中的yarn.application.classpath 添加hbase /lib 目录路径
mapred-site.xml中的mapreduce.application.classpath 添加hbase /lib 目录路径

2、检查导处的路径是否正确。正确路径应该是hbase.rootdir
3、检查快照导出的目录
目录结构如下:
${hbase.rootidr}/data/.hbase-snapshot;//快照描述信息
${hbase.rootidr}/data/archive ;//快照文件,其中包含实际的HFile数据目录。
看这两个目录下面的文件是否正常,大小,文件数量等。

4、检查如上目录权限是否正确。
可能存在你导出的用户权限不对问题,假如你新集群的用户为hbase:hdfs
执行如下命令修改权限
dfs dfs -chmod -R 755 ${hbase.rootidr}/data/.hbase-snapshot;
hdfs dfs -chmod -R 755 ${hbase.rootidr}/data/archive ;
hdfs dfs -chown -R hbase:hadoop ${hbase.rootidr}/data/.hbase-snapshot;
hdfs dfs -chown -R hbase:hadoop ${hbase.rootidr}/data/archive ;

 

二毛

赞同来自: openinx

问题原因以及解决办法:
archive 目录下hfile没有权限,给了权限就好了。

要回复问题请先登录注册