• 记一次服务器异常掉电,导致HBase Master is initializing 问题处理


    问题:

    服务器掉电后重启服务器,并重启Hadoop、Zookeeper、HBase服务后,进程均一切正常,但是在HBase Web界面查看不到一张表,包括元数据表。使用 shell 命令扫描数据表提示表不存在错误。

    分析:

    看下Master的日志,发现一条WARN日志:

    下午1点59:29.953分	WARN	HMaster	
    hbase:namespace,,1602737534746.41cb240b37c7ba2e67a1bff035799b61. is NOT online; state={41cb240b37c7ba2e67a1bff035799b61 state=OPEN, ts=1605238978817, server=bg11194.hadoop.com,16020,1602750152053}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.
    
    • 1
    • 2

    org.apache.hadoop.hbase.PleaseHoldException: Master is initializing代表Master正在初始化中,出现这种错误的原因有很多,查看hbase web界面,发现如下提示:
    在这里插入图片描述
    系统表hbase:namespace,1602737534746.41cb240b37c7ba2e67a1bff035799b61未分配到RegionServer上。

    既然是元数据出现错误,可以尝试手动修复元数据,如果修复失败暴力删除元数据(做好备份),重启HBase后生成新的元数据,这是只需要手动将数据表添加 region 信息到 meta 表,再 assign 即可。

    解决

    尝试1:重启hbase,发现无效

    尝试2:手动分配,执行 assign namespace,1602737534746.41cb240b37c7ba2e67a1bff035799b61,无效,仍提示org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

    尝试3:
    1、停止 HBase 服务,删除 Zookeeper 中 /hbase 目录,重启 HBase

    zk 数据备份:
    1)进入 zk 配置的数据目录下的 version-2 目录,比较 zk 集群每个节点的 snapshot 文件,对最新的 snapshot. 和对应的 log. 文件进行备份(zookeeper事务ID是递增的)
    2)deleteall /hbase

    2、重启 HBase 后,添加表 region 信息到 meta 表

    系统表
    hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar addFsRegionsMissingInMeta hbase:namespace
    用户数据表
    hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar addFsRegionsMissingInMeta default:ods_data_1

    3、重启 HBase

    4、重新分配 region ,使用 2 输出的结果作为参数

    hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar assigns c8ec30eacde9b68d1fd568feba59354c cf9d13dbdc0384dff5bdc494f39e1f71 d7b1b20b61143519835ef692b767471c de22be87c5f9458ffe17446f66ee9d02 dee929bc685939371b73485775f285b9 eb805bd3ed5a4c9a2ecbbca4c49395ed

    到此一切恢复正常!

  • 相关阅读:
    101页4万字XX大数据湖项目建设方案
    HashMap中的put()和get()的实现原理
    正点原子 核心板IMX6ULL IIC RTC驱动 PCF8563
    Ps:陷印
    UDP网络通信(发送端+接收端)实例 —— Python
    pycharm+node+DevTooles, pycharm 浏览器无环境联调js代码
    Anaconda虚拟环境中打开Jupyter
    Kubernetes(k8s)高级使用
    云原生 | go-micro学习与实践
    Istio 入门(六):版本控制
  • 原文地址:https://blog.csdn.net/DraGon_HooRay/article/details/125408562