1、下载原来的hbase集群的表数据

这一步骤,先将hbase 表的数据从旧集群下载到本地

hbase 表的默认HDFS路径通常为 /hbase/data/<name_space>/<table_name>

hadoop fs -get /apps/hbase/data/data/test_media

2、 把数据传到需要恢复数据的集群的hbase

scp -r hbase/test_media $ip:/data1

3、把数据传到被恢复集群的HDFS上(需要切换hbase用户)
上传数据前需要检查属主属组是否和HDFS上面一致。

hadoop fs -copyFromLocal /data1/test_media /apps/hbase/data/data/

4、如果实在上传上去的文件属主属组又问题就用命令去更改hadoop的文件。
su hdfs

hadoop fs -chown -R hbase:hdfs /apps/hbase/data/data/

上传的数据是没有 .regioninfo信息的,需要恢复。

5、恢复HBase元数据( .regioninfo信息)
只做检查

su hbase
hbase hbck 

根据region目录中的.regioninfo,生成meta表

hbase hbck -fixMeta 

把meta表中记录的region分配给regionserver

hbase hbck -fixAssignments

修复.regioninfo文件

hbase hbck -fixHdfsOrphans 

在检查

hbase hbck 

总结:
最好将全部的文件都put到新集群后在修复元数据
新集群不需要提前创建同名表
.tabledesc 和 .tmp 也需要发送到新集群上,别忘记了

更多推荐