Hbase数据迁移(二)

总结一下这两天hbase迁数据的过程

  • Import导入
    直接使用import导入hbase的时候实在太慢,并且占用的yarn资源也很多,对yarn上的其他应用资源的申请影响很大
  • bulkload导入
    后来改用先生成hfile,然后用LoadIncrementalHFiles导入,用import和importTsv都可以生成hfile,但是这样也有个问题就是生成的storefile很大,并且有序的,所以一个storefile的导入总会让hbase某一个regionserver负载比较高,使用上去也没想像中那么快,可能是单个磁盘本身的读写速度也慢
  • 直接拷贝数据文件
    后来又想hbase版本一样,应该可以直接把表的数据文件拷贝新集群的,然后添加一下meta表的信息,于是试了一下,现做下记录。

使用distcp拷贝

在老集群上直接执行distcp拷贝表的时候容易出现Filenotfound的异常,出现几次然后任务就退出来,因为region的数据文件名由于compact会变化。暂时的解决办法是用cp拷贝一个副本,考副本的时候也会报这个错但是不会退出来,之后可以根据错误信息再单独拷贝一下子文件。
然后使用distcp把表的副本直接拷贝到新集群的/hbase/data/namespace/下,

使用hbck修复元数据

hbck 命令可以添加很多参数

hbase hbck 只做检查
hbase hbck -fixMeta 根据region目录中的.regioninfo,生成meta表`
hbase hbck -fixAssignments 把meta表中记录的region分配给regionserver
hbase hbck -fixHdfsOrphans 修复.regioninfo文件

具体参数详见 http://blackproof.iteye.com/blog/2052898

hbase hbck -fixMeta

执行完这个命令后,在hbase shell 中list ‘tablename’可以查到该表。
但是scan查不到具体数据。

hbase hbck -fixAssignments

执行这个命令后,使用scan就能查到具体数据

执行完命令后会看到每个表的状态Table name is okay,说明修复完成。
我执行命令的时候出现Table name is inconsistent.查看具体错误提示多个region有相同的startrow,说明拷贝表的时候有的表在split
删除在hdfs上重复的region,或者把重复的storefile移动到另一个region中,在meta表上删除对应的记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值