技术实操丨 HBase 2.X 版本的元数据修复及一种数据迁移方式
摘要:分享一个 HBase 集群恢复的方法。
背景
在 HBase 1.x 中,经常会遇到元数据不一致的情况,这个时候使用 HBCK 的命令,可以快速修复元数据,让集群恢复正常。
另外 HBase 数据迁移时,大家经常使用到一种迁移方式是:拷贝 HBase 的数据目录/hbase/data/default 到新的集群,然后在新集群执行 HBCK 的命令让元数据重建,这种拷贝数据目录然后恢复元数据的方式是一种快速直接的手段。
HBase 升级到 2.X 版本之后,hbase hbck 中的一些修复命令已经不再支持,包括,所以在 HBase 遇到集群故障,无法通过 HBCK 快速把元数据修复,通过 HBase 数据目录迁移的方式也就使用不了。
在 HBase 2.X 的客户端执行 hbase hbck 时,常用的 fixMeta 命令已经不再支持。
hbck-1 无法使用
HBase 2.X 版本加强了可靠性,因为使用了 procedure,由于之前的 hbck(hbck-1)是会直接去向 region server 或者 hdfs 发送请求进行修复,而在 HBase 2.0 版本上集群内部操作全部都被挪到了 procedure v2(下文都称为 procedure)上进行处理。
因为所有的命令都是经过 master 来协调处理,所以在修复时也需要通过 master 进行修复。否则反而可能导致更严重的不一致问题。所以 hbck-1 在 HBase 2.x 版本是不适用的。
HBase2.X 版本中元数据的恢复方法
1. 修改配置 hbase.assignment.skip.empty.regions=false
如果是普通的 hbase:meta 系统表中的元数据不正确,在修改完此参数重启 HBase 后就已经能恢复
当第一步骤完成后还不能修复,就要使用下面的命令了
例如启动后发现,hbase shell 能 list 出数据,但是表无法 put 或者 scan,这时候 hbase:meta 表里的 t1 表记录其实是不正确的
2. hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair -fix
这个命令需要停止 HBase 然后执行。
当表的数据目录存在(/hbase/data/default/<table>),而在 hbase:meta 表中元数据不正确时,需要 HBase 停止后,执行这个 meta 表修复命令,
执行完成后,启动 HBase。
启动完成后,查看 hbase:meta 表的用户表记录,可以看到 t1 表的元数据都生成了。
3. 此时用户表就恢复了,如果还存在 region 空洞 fixHdfsHoles 或者 fixHdfsOverlaps 问题,可以使用 hbck1 中的["-fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixReferenceFiles"]
在华为云 EI 内核团队的 hbase2 中,已经将这 4 个命令重新集成进 hbck-1 中,便于维护。
新集群清理及数据迁移
看完上面的元数据恢复,应该就知道接下来的这种 HBase 数据迁移方式的原理:通过拷贝数据目录,让 HBase 元数据与业务数据目录重新建立关系,达到业务正常读写。
下面例子只考虑用户使用 default 命名空间
1. 拷贝旧集群的 HBase 数据目录到新集群,将旧集群的/hbase/data/default 目录拷贝到了 hdfs 上的/mydata/目录;
2. 如果新集群数据不需要清理,则跳过此步骤
停止 HBase
清除 HBase 在数据存储目录,hdfs dfs -rm -r /hbase
清除 HBase 在 zk 的节点,使用 ZK 客户端工具 zkCli.sh –server <ZK NODE>:2181 进入后执行 deleteall /hbase
启动 HBase,让目录结构自动生成
3. 保持 HBase 集群停止状态,拷贝旧机器数据目录到新集群 HBase 的数据目录中;
hdfs dfs -cp /mydata/default/* /hbase/data/default/
4. 执行 hbase 修复命令 hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair –fix
5. 设置 hbase.assignment.skip.empty.regions=false 并启动 HBase
运行完上述步骤,在新的集群就能对迁移过来的 HBase 进行业务访问了。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/a1169f9d279d7efadc8013b70】。文章转载请联系作者。
评论