关于数据:技术实操丨HBase-2X版本的元数据修复及一种数据迁移方式

34次阅读

共计 1773 个字符,预计需要花费 5 分钟才能阅读完成。

摘要: 分享一个 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, 让目录构造主动生成

  1. 放弃 HBase 集群进行状态,拷贝旧机器数据目录到新集群 HBase 的数据目录中;

hdfs dfs -cp /mydata/default/* /hbase/data/default/

  1. 执行 hbase 修复命令 hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair –fix
  2. 设置 hbase.assignment.skip.empty.regions=false 并启动 HBase

运行完上述步骤,在新的集群就能对迁徙过去的 HBase 进行业务拜访了。

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0