• 【总结】hbase master重启恢复失败问题修复


    问题现象

    最近hbase master 莫名其妙宕机了,查看最后输出日志,也没有发现有效信息。

    于是想着先重启一把,在hbase master 选主成active状态的过程中,发现重启多次都很漫长,且最终因重启时间过长,被hbase-daemon.sh 强杀掉。

    从hbase-master.out 可查看到hbase master 被强杀,如下图:
    在这里插入图片描述
    以前也出现过类似情况,当时解决的办法是加大hbase master jvm 内存。
    但最近再次宕机,一直加大jvm内存也不现实。只能想办法,从根本上解决。

    原因分析

    再次查看hbase master log,发现hbase 在恢复过程中,先是一直不断刷如下日志:
    INFOorg.apache.hadoop.hbase.util.FSHDFSUtils: Recover lease on dfs filehdfs://nameservice1/hbase/MasterProcWALs/pv-00000000000000011601.log

    然后开始不断刷gc回收暂停时间过长
    2024-04-24 10:01:47,315 WARN [master/ark-73:16000] util.Sleeper: We slept 15775ms instead of 3000ms, this is likely due to a long garbage collecting pause and it’s usually bad, see http://hbase.apache.org/book.html#trouble.rs.runtime.zkexpired
    在这里插入图片描述
    再次查看gc 日志,gc.log-202404240937 发现如下日志:

    2024-04-24T10:04:47.890+0800: 1630.478: [Full GC (Allocation Failure) 2024-04-24T10:04:47.890+0800: 1630.478: [CMS: 5183936K->5183935K(5183936K), 13.3839186 secs] 6180735K->6180727K(6180736K), [Metaspace: 52023K->52023K(1095680K)], 13.3840933 secs] [Times: user=13.39 sys=0.00, real=13.39 secs]

    2024-04-24T10:05:01.275+0800: 1643.863: [Full GC (Allocation Failure) 2024-04-24T10:05:01.276+0800: 1643.863: [CMS

    在这里插入图片描述
    种种迹象表明,hbase已经因为内存爆了,导致垃圾回收也无法释放内存。

    查阅了一番资料,最终定位到是MasterProcWals pv日志过多,在重启HBase Master 的过程中,HBase Master进入活动状态需要读取并实例化所有正在运行的程序当前记录在/apps/hbase/data/MasterProcWALs/目录下对应的文件。此文件夹太大,HBase Master将在完全变为活动状态之前超时并崩溃。

    解决方法

    查阅了相关资料,MasterProcWALs 目录下的文件是可以删除的,在删除之前,先备份。

    于是执行了以下命令:

     # 查看MasterProcWALs 目录下文件存储总大小
     hdfs dfs -du -s -h /apps/hbase/data/MasterProcWALs
    # 将该文件备份
    hdfs dfs -mv /apps/hbase/data/MasterProcWALs /apps/hbase/data/bakMasterProcWALs
    # 重新创建空文件夹
    hdfs dfs -mkdir /apps/hbase/data/MasterProcWALs
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后重启hbase master,几乎很快hbase master就启动成功,并成功变成active 活跃状态。

    至此,成功解决该问题。

    参考资料:https://www.yisu.com/jc/564592.html

  • 相关阅读:
    对话庄表伟:开源第一课
    基于ssm的社区疫情返乡管控系统设计实现
    PUPU TECH 第12期技术沙龙 ✘深圳站
    软件代码设计-小优化(四)
    jdk动态代理实现通用日志记录—KQC 0921
    生产问题分析:批量执行慢,根据日志进行分析。
    实用技巧:在C和cURL中设置代理服务器爬取www.ifeng.com视频
    使用Jenkins自动给多个仓库创建分支
    cv2.split函数与cv2.merge函数
    BFS总结【二叉树+状态压缩】
  • 原文地址:https://blog.csdn.net/li396864285/article/details/138151700