关于hbase若干异常问题解决

104 阅读8分钟

背景描述

Hbase 的Region Server异常关闭引发的一些系列问题

解决步骤

Hbase regionServer异常关闭

  • 经过排查, regionserver显示 (/var/log/hbase) 目录 存储容量过小. 机器中交换文件无法生成
  • 原因: hbase开启审计日志, 审计日志等级设置为TRACE 并且放在/var/log/hbase, 导致根目录容量不足
  • 动作: 清理三个节点的根目录下的审计日志, 关闭审计日志功能. 重启对应hbase

Hbase Master异常关闭

  • 经过排查, 显示Master服务出现 OOM 异常, 导致宕机.
  • 原因: 重启时, 其他依赖服务也启动, 服务器资源有限, 导致宕机.
  • 动作: 关闭其他服务组件, 再次重启

Hbase Master 仅运行几分钟后关闭

  • 现象: Master 仅运行几分钟后关闭, 同时Serveice Monitor 未监控到Master 状态

  • 排查: 查看Mater 运行日志, 发现在重启后, 一直处理 /hbase/MasterProcWALs 文件. 此文件记录master操作数据库的所有简要动作, 数据库崩溃时,根据此文件进行恢复

  • 原因: master启动时, 数据恢复超时, 导致启动失败

  • 动作: 手动删除 /hbase/MasterProcWALs 以及 /hbase/WALs

    • 此动作实际操作中禁止执行
    • 应该使用 hbase clean
  • 执行动作后, 重启master, master 长久处于启动中状态, 无法对外提供服务

    • Master 日志显示org.apache.hadoop.hbase.master.HMaster: hbase:meta,,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=1749708106757, server=hadoop103,16020,1749640843087}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined
    • 如果使用客户端链接hbase, 显示org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
  • 最终操作: 关闭hbase集群, 进入zk, 执行 rmr /hbase 删除集群相关信息, 再重启集群

  • 此时集群正常运行, 但是会丢失WALs中正在操作的数据

Hbase Master 元数据重建

  • 如果元数据丢失, 或者在hbase shell 中 list 命令, 存在表名称, 但是使用 get/put/scan 显示表不存在, 对应路径的hdfs 文件存在, 此情况为元数据丢失情况
  • 禁止直接使用 hbck 工具直接修复 2.x 或者CDH 6.2.x 版本hbase , 会导致元数据丢失, 以下说明当hbase元数据丢失后, 如何使用表数据重建元数据
hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair -fix

  • 前提: 执行hdfs fsck /hbase 确认hdfs中对应的表数据无损坏
  • 下载官方2.x 修复工具, 目前网络上很少有打包好的包, 需要手动下载源码后编译. 注意查看readme文件, 一般此版本的代码是修复2.x hbase的工具, 工具版本与hbase的版本并非一一对应.
git clone https://github.com/apache/hbase-operator-tools.git
mvn clean package -DskipTests

  • 进入hbase-hbck2 目录下获取对应包. 将打包好的jar包传送到服务器上, 执行以下命令, 每次只能修复一个表的元数据.  ns:ts 为示例表名称
sudo -u hbase hbase hbck -j hbase-hbck2-1.3.0-SNAPSHOT.jar addFsRegionsMissingInMeta ns:ts

  • 如果执行成功会提示HMaster 有缓存, 必须重启HMaster 后执行以下命令, 记录下每次提示的命令.
assigns 05f0d93182a0082a456ef59f91cb9788 07ea5c666b2a6af140e5df13af603ebb 0e6ebfec7b48d27d16d018e0421f90fe 1e0938b886d86823e2a2b067d1ef3419 20cac59b062e0e40b34e863bce893616 2952da27ad20da86fbaa77b57099d800 2a00596e8e7df46c6a094bd2d8e79f06 35500593ceba3995cf23d6c65156a98b 45b9515a7c481f9ea223f01c50878fd2 47a69bec163182469fe30d4f3b59d910 4808fafdbf3e686542ac0b207f7c5aec 4ba5e4ee7269263f6be89a58ed8c76bd 4ce8d6836739594bdbde3f6afb816c44 5f0ddaa37da27795b2f79e8fff4f17d7 7668b30f6d9e5ffc746ae56290df2539 7914c96afec917f5f83671591c5d7901 7bce6d3df4061be0c4a4173dfe40e88c 87dc659ee6cb2a700b6c96fea2af7a8d 8b294534a0226bb129ed3b36525f12ab 941fa0fa8e8564115ed6c9d7be6c4408 9d59155175bb884d940aff64b6d58b20 a2b54d8b57360cf0e6c1e75a12ceb243 a564128feba6120fd433e3564039ea6d b3709298d6e24437fa5e14a4b43bdc9e c9523eb343dd997c326ed906950db0bb dfab1baaaaf4e6bdc26fd2187b98b0e3 efc14a684cff0d58ae31dadda86b9287

  • 重启hbase集群后执行
sudo -u hbase hbase hbck -j hbase-hbck2-1.3.0-SNAPSHOT.jar assigns 05f0d93182a0082a456ef59f91cb9788 07ea5c666b2a6af140e5df13af603ebb 0e6ebfec7b48d27d16d018e0421f90fe 1e0938b886d86823e2a2b067d1ef3419 20cac59b062e0e40b34e863bce893616 2952da27ad20da86fbaa77b57099d800 2a00596e8e7df46c6a094bd2d8e79f06 35500593ceba3995cf23d6c65156a98b 45b9515a7c481f9ea223f01c50878fd2 47a69bec163182469fe30d4f3b59d910 4808fafdbf3e686542ac0b207f7c5aec 4ba5e4ee7269263f6be89a58ed8c76bd 4ce8d6836739594bdbde3f6afb816c44 5f0ddaa37da27795b2f79e8fff4f17d7 7668b30f6d9e5ffc746ae56290df2539 7914c96afec917f5f83671591c5d7901 7bce6d3df4061be0c4a4173dfe40e88c 87dc659ee6cb2a700b6c96fea2af7a8d 8b294534a0226bb129ed3b36525f12ab 941fa0fa8e8564115ed6c9d7be6c4408 9d59155175bb884d940aff64b6d58b20 a2b54d8b57360cf0e6c1e75a12ceb243 a564128feba6120fd433e3564039ea6d b3709298d6e24437fa5e14a4b43bdc9e c9523eb343dd997c326ed906950db0bb dfab1baaaaf4e6bdc26fd2187b98b0e3 efc14a684cff0d58ae31dadda86b9287

  • 元数据修复完成, 可以正常访问此表获取数据