【Hbase】运维问题汇总
1.前言
最近 Hbase 集群经常有问题于是作者把遇到的问题进行了汇总,避免其他同学在使用 Hbase 的过程中遇到相同的问题时不知道如何解决。
2.优化
2.1 Hbase 启动半小时宕掉
Hbase 集群底层使用 Azure Blob Storage 进行底层数据存储及查询,RegionServer 在运行过程中经常出现 OOM,Heap Dump 分析发现每个 HStore 中的 AbfsInputStrem 占用 4MB 空间导致堆内存撑爆。查看 hadoop-azure 源码发现 fs.azure.read.request.size 默认配置 4MB,调整配置 64KB 后问题解决也可以配置再小。
2.2 Hbase 大合并队列积压过多
【1】Hbase 集群运行一周后(默认)触发大合并导致大合并队列增加属于正常现象,但是在运行一段时间后问题依然存在没有下降趋势。怀疑大合并线程默认 1 太少了,动态调整配置 hbase.regionserver.thread.compaction.large 为 3 效果不明显。
【2】查看日志发现合并限流策略引起合并时间过长,继续动态调整限流参数 hbase.hstore.compaction.throughput.higher.bound、hbase.hstore.compaction.throughput.lower.bound 后大合并队列在几小时后恢复正常。
2.3 Hbase 归档日志不正常清理
【1】统计 Hbase 集群占用的数据存储时发现数据存储达到 400 多 T。
【2】查看 HMaster 日志发现出现清理异常,但是原因不够明确。
【3】动态调整日志级别继续查看日志发现问题出现在 SnapshotHFileCleaner。
【4】结合源码及日志原因是.hbase-snapshot 目录下出现非法目录 T_DRIVING_STATISTICS_snap_...手动删除此目录后 HMaster 恢复正常删除。
2.4 Hbase 的 oldWal 日志不正常清理
【1】查看 HMaster 日志发现 replicationLogCleaner 在进行清理是出现访问 zookeeper 会话失效异常。
【2】动态调整日志级级别发现上述异常会引起 oldWal 日志不正常清理会导致 HDFS 存储使用上升风险。
【3】查看 HBASE-25612 通过切换 HMaster 临时解决,根本上避免可升级 Hbase 版本或者根据 HBASE-23340 进行编译打包滚动重启集群。
3.配置
3.1 动态配置
需要修改的参数加入到 hbase-site.xml 中,然后在 hbase shell 中执行 update_config 指定 regionserver 名称,如整个集群都生效可使用 update_all_config 命令。
3.2 日志配置
访问 HMaster UI 或 RegionServer UI 在 Log Level 进行配置。
4.总结
在 Hbase 集群出现问题时我们可以结合日志、源码、社区分析原因并给出解决方法,而且日志输出级别、参数配置都支持动态修改可以更快的帮助我们解决问题。
版权声明: 本文为 InfoQ 作者【扬_帆_起_航】的原创文章。
原文链接:【http://xie.infoq.cn/article/4fa149f82197a97e20c136096】。文章转载请联系作者。
评论