前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >由MasterProcWals状态日志过多导致的HBase Master重启失败问题

由MasterProcWals状态日志过多导致的HBase Master重启失败问题

作者头像
Fayson
发布2018-09-29 10:39:04
6.5K0
发布2018-09-29 10:39:04
举报
文章被收录于专栏:Hadoop实操Hadoop实操Hadoop实操

1 文档编写目的

本文主要讲述如何解决由MasterProcWals状态日志过多导致的HBase Master重启失败问题。

测试环境:

操作系统版本为Redhat7.2

CM和CDH版本为5.13.1

文章目录结构:

1. 文档编写目的

2. 问题描述

3. 解决方案

3.1 问题解决

3.2 相关建议

4. 总结

2 问题描述

由于某些已知存在的问题,会导致MasterProcWals状态日志过多,如果重启HBase Master,可能会导致HBase Master启动失败。因为HBase Master进入活动状态需要读取并实例化所有正在运行的程序当前记录在/hbase/MasterProcWALs/目录下对应的文件。如果此文件夹太大,HBase Master将在完全变为活动状态之前超时并崩溃。

问题特征:

1、HBase Master 重启失败前,会打印出类似的日志:

2018-07-07 17:43:08,619 INFOorg.apache.hadoop.hbase.util.FSHDFSUtils: Recover lease on dfs filehdfs://nameservice1/hbase/MasterProcWALs/state-00000000000000084815.log2018-07-07 17:43:08,619 INFOorg.apache.hadoop.hbase.util.FSHDFSUtils: Recovered lease, attempt=0 onfile=hdfs://nameservice1/hbase/MasterProcWALs/state-00000000000000084815.logafter 0ms2018-07-07 17:43:08,624 INFOorg.apache.hadoop.hbase.util.FSHDFSUtils: Recover lease on dfs filehdfs://nameservice1/hbase/MasterProcWALs/state-00000000000000084816.log2018-07-07 17:43:08,625 INFOorg.apache.hadoop.hbase.util.FSHDFSUtils: Recovered lease, attempt=0 onfile=hdfs://nameservice1/hbase/MasterProcWALs/state-00000000000000084816.logafter 1ms2018-07-07 17:43:08,630 INFO org.apache.hadoop.hbase.util.FSHDFSUtils:Recover lease on dfs filehdfs://nameservice1/hbase/MasterProcWALs/state-00000000000000084859.log2018-07-07 17:43:08,630 INFOorg.apache.hadoop.hbase.util.FSHDFSUtils: Recovered lease, attempt=0 onfile=hdfs://nameservice1/hbase/MasterProcWALs/state-00000000000000084859.logafter 0ms2018-07-07 17:43:08,678 FATALorg.apache.hadoop.hbase.master.HMaster: Failed to become active masterjava.lang.NullPointerException

2、查看HBase Master日志,还能看到如下信息:

2018-07-07 17:43:38,978 WARN org.apache.hadoop.hdfs.BlockReaderFactory:I/O error constructing remote block reader. java.net.SocketException: Too manyopen files

3、通常你能够在/hbase/MasterProcWALs目录下看到大量的日志文件,并且这些日志文件占用HDFS存储空间总和可能已经达到TB级别了。可以通过如下命令查看/hbase/MasterProcWALs目录占用HDFS存储空间大小:

hdfs dfs -du -s -h /hbase/MasterProcWALs

注:执行该命令后,我的/hbase/MasterProcWALs目录大小将近10 TB(不含副本)

3 解决方案

3.1 问题解决

该问题主要和HBase某个分支的实现方式有关,据说已经重新设计了该实现方式,新的实现方式能够避免该问题,将在CDH 6中应用。

如果出现由MasterProcWals状态日志过多导致的HBase Master重启失败问题建议先将/hbase/MasterProcWALs目录下的所有文件备份,然后删除/hbase/MasterProcWALs目录下的所有文件,重启HBase Master即可解决问题。

3.2 相关建议

建议启用HBase Master 日志清除器插件,定时清理日志。

目前默认配置的清除器插件有ReplicationLogCleaner、SnapshotLogCleaner和TimeToLiveLogCleaner这三种:

  • ReplicationLogCleaner:如果有跨集群数据同步的需求,通过该Cleaner来保证那些在同步中的日志不被删除;
  • SnapshotLogCleaner:被表的snapshot使用到了的wal不被删除;
  • TimeToLiveLogCleaner:日志文件最后修改时间在配置参数{hbase.master.logcleaner.ttl默认600秒}之前的可以删除。

4 总结

1、如果MasterProcWals状态日志过多,那么重启HBase Master,可能会导致HBase Master启动失败。目前临时的解决方案是备份/hbase/MasterProcWALs目录下的所有文件后,删除该目录下所有文件并重启HBase Master。

2、建议定时清理MasterProcWals状态日志,可以通过HBase自带的清理器插件处理,也可以自己开发日志清理插件,按要求添加到HBase的classpath 中。

参考文章:

https://blog.csdn.net/u010039929/article/details/74330722


When your talent can’t support your ambition, You should calm down and learn. When your ability cannot realize you dreams, You should practice with all your heart. Ask yourself, What kind of life you pursue.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 文档编写目的
  • 2 问题描述
  • 3 解决方案
    • 3.1 问题解决
      • 3.2 相关建议
      • 4 总结
      相关产品与服务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档