热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hbase1.2.0cdh5.16.2使用PREFIX_TREE编码导致集群压缩队列异常

Hbase1.X版本中PREFIX_TREE作为BlockEncoding存在bug,会造成RegionServer节点compactionqueue持续升高,甚至影响fl

点击蓝色字关注!

本篇文章大概1700字,阅读时间大约5分钟


Hbase1.X版本中PREFIX_TREE作为BlockEncoding存在bug,会造成RegionServer节点compaction queue持续升高,甚至影响flush,最终阻塞写入。本文记录了整个RegionServer异常的故障定位过程。

集群环境

  • CDH - 5.16.2

  • Hbase - 1.2.0 - cdh5.16.2


1
问题描述
  • Hbase RegionServer多节点出现压缩队列异常告警

  • dn3和dn4出现大量的HFile Compaction,并且压缩队列持续升高并无下降趋势


2
Compaction异常原因定位

检查异常节点写入

cat /var/log/hbase/hbase-cmf-hbase-REGIONSERVER-dn3.changan.com.cn.log.out | grep "Blocking update on"

  • 检查日志确定MemStore占用内存是否达到RegionServer Flush阈值

  • MemStore未达阈值

  • 检查Region Server是否存在太多HFile

cat /var/log/hbase/hbase-cmf-hbase-REGIONSERVER-dn3.changan.com.cn.log.out | grep "too many store files"

  • 出现错误日志,基本确定是因为该表的HFile过多导致异常

  • 确定集群的hbase.hstore.blockingStoreFiles阈值,检查异常Region的StoreFile数量

hbase.hstore.blockingStoreFiles = 50

  • 异常Region的StoreFile数量达到275个,手动对该Region执行major_compact发现,该Region的HFile数量没有变化,证明该RegionServer存在compaction阻塞

  • 查看该Region的HFile大小,发现才500+M,compaction居然几个小时都做不完,有毒

Arthas分析Hbase RS线程

  • 在RegionServer节点上启动arthas,选中RegionServer的PID

sudo -u hbase /usr/java/bin/java -jar arthas-boot.jar

  • 打印线程信息,thread,发现有3个compaction线程的TIME非常的长

  • 查看详细的线程信息:thead 326,发现该问题可能和hbase的codec有关,prefixtree是什么鬼???

  • 查了一下prefixtree是Hbase在0.96版本中引入的新的BlockEncoding算法,检索Hbase issue后发现了prefixtree会造成compaction阻塞,和bug报告中的情况一毛一样

  • issue链接:https://issues.apache.org/jira/browse/HBASE-12959

  • 检查该表的属性,发现Block Encoding采用了PREFIX_TREE,故障点已找到


3
故障原因分析
  • 某业务上线的时候,新建的几张表采用了PREFIX_TREE编码,根据HBASE-12959,该Blocking Encoding会造成compaction线程阻塞,其他表的compaction请求只能在压缩队列上阻塞,现象就是异常Region所在的RegionServer上压缩队列异常增加,丝毫没有下降趋势

可能存在的影响

  • compaction线程耗尽,memstore flush的小文件无法合并,整个HFile的数量增加,导致flush操作阻塞,造成memstore占用内存升高,如果memstore达到RegionServer的高阈值,该RegionServer上的所有写入都会阻塞

解决方案

  • 故障处理方案

    • 确定环境上使用到PREFIX_TREE编码的表,建立去除PREFIX_TREE属性的备表,进行数据迁移

  • 需要新增的Hbase监控项

    • 监控Hbase的StoreFile数量,发现存在数量异常,及时告警

扫码二维码

获取更多文章

Eighs



点个再看吧~



推荐阅读
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 58同城的Elasticsearch应用与平台构建实践
    本文由58同城高级架构师于伯伟分享,由陈树昌编辑整理,内容源自DataFunTalk。文章探讨了Elasticsearch作为分布式搜索和分析引擎的应用,特别是在58同城的实施案例,包括集群优化、典型应用实例及自动化平台建设等方面。 ... [详细]
  • 本文详细介绍了 Apache ZooKeeper 的 FileTxnLog 类中的 setPreallocSize 方法,并提供了多个实际应用中的代码示例。通过这些示例,读者可以更好地理解如何在不同场景下合理设置日志文件的预分配大小。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 在互联网信息爆炸的时代,当用户需求模糊或难以通过精确查询表达时,推荐系统成为解决信息过载的有效手段。美团作为国内领先的O2O平台,通过深入分析用户行为,运用先进的机器学习技术优化推荐算法,提升用户体验。 ... [详细]
  • 本文探讨了随着并发需求的增长,MySQL数据库架构如何从简单的单一实例发展到复杂的分布式系统,以及每一步演进背后的原理和技术解决方案。 ... [详细]
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 本文详细记录了一次 HBase RegionServer 异常宕机的情况,包括具体的错误信息和可能的原因分析。通过此案例,探讨了如何有效诊断并解决 HBase 中常见的 RegionServer 挂起问题。 ... [详细]
author-avatar
爱吃橘子的金XiaRui
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有