ALM-19039 RegionServer平均单Store下StoreFile数量超阈值
告警解释
系统每30秒周期性检测HBase RegionServer实例的StoreFile数量和Store数量,进行相除求平均,并把结果与阈值相比较,默认当连续5次检测到请求数超出告警阈值(默认为20)时产生该告警。
当HBase RegionServer实例上平均单Store下StoreFile数量小于或等于阈值时,告警恢复。
本章节仅适用于MRS 3.6.0-LTS及之后版本。
告警属性
| 告警ID | 告警级别 | 是否可自动清除 |
|---|---|---|
| 19039 | 重要 | 是 |
告警参数
| 类别 | 参数名称 | 参数含义 |
|---|---|---|
| 定位信息 | 来源 | 产生告警的集群名称。 |
| 服务名 | 产生告警的服务名称。 | |
| 角色名 | 产生告警的角色名称。 | |
| 主机名 | 产生告警的主机名。 | |
| 附加信息 | Threshold | 产生告警的阈值。 |
对系统的影响
RegionServer平均单Store下StoreFile数量超过阈值,表示该RegionServer存在单Store下StoreFile数量过多的情况,会对HBase业务读操作造成压力,导致读性能下降和Compaction任务压力较大,最终可能导致写入反压。
可能原因
- 集群写入压力过大,Compaction队列积压。
- Compaction任务未正常执行,例如关闭了自动Major Compaction,且未人工保证定时执行Major Compaction或关闭了Compaction动作。
- HBase Region分区不合理,写操作数据集中到某几个Region中或RegionServer上。
处理步骤
- 登录Manager界面,选择“运维 > 告警 > 告警”,选择“告警ID”为“19039”的告警,查看“定位信息”中产生该告警的HBase服务实例和主机名。
检查HBase Compaction任务压力。
- 观察上报告警的相同节点是否存在“ALM-19018 HBase合并队列超阈值”告警。
- 参考“ALM 19018 HBase合并队列超阈值”的处理步骤处理该故障。
- 等待几分钟后检查本告警是否恢复。
- 是,处理完毕。
- 否,执行步骤 5。
检查HBase Compaction任务是否正常执行。
- 在Manager首页,选择“集群 > 服务 > HBase> 配置”,在搜索框中搜索“hbase.hregion.majorcompaction”,并查看该参数值是否为“0”。
- “hbase.hregion.majorcompaction”参数值为“0”表示自动Major Compaction被禁用。需要业务运维侧自行对齐执行Major Compaction时间,优先选择业务低峰期,以保证Major Compaction任务定期正常执行。
其中,Major Compaction操作可在hbase shell中通过以下命令查看不同合并对象的具体命令示例,再手动执行major_compact操作:
help 'major_compact'
- Major Compaction任务执行完成后,等待几分钟检查本告警是否恢复。
- 是,处理完毕。
- 否,执行步骤 8。
- 在Manager首页,选择“集群 > 服务 > HBase> 配置”,在搜索框中搜索“hbase.hstore.compaction.min”,并查看该参数值是否大于告警上报阈值(默认值为20)。
- Minor Compaction将因单Store下的StoreFile没有达到触发阈值而不执行,业务运维侧需评估业务风险以及参数配置合理性。根据实际需求调整相关配置,并重启RegionServer使配置生效。
- 等待一段时间后检查本告警是否恢复。
- 是,处理完毕。
- 否,执行步骤 11。
- 选择“集群 > 服务 > HBase >实例”,单击上报告警的RegionServer实例,选择“图表”,在“图表分类”中选择“队列”,查看“队列大小”监控图表,确认“Compaction操作队列大小”是否为“0”。
- 确认当前集群资源能够正常执行Minor Compaction操作,并在hbase shell中执行以下命令:
compaction_switch 'true'
该命令将返回各RegionServer的Compaction线程池之前状态,若返回“Servername 'false'”, 即表示此前对应RegionServer上的Compaction任务被关闭。
- 执行完手动命令后,等待一段时间后检查本告警是否恢复。
- 是,处理完毕。
- 否,执行步骤 14。
检查HBase Region分区是否存在不合理。
- 在Manager首页,选择“集群 > 服务 > HBase”,在“概览”页面单击“HMaster Web UI”右侧的超链接进入HBase WebUI页面,在“Home”页面的“ Region Servers”区域单击上报告警的RegionServer名称进入详细信息页面,在“Regions”区域选择“Storefile Metrics”页签,对指标中的“Num.Storefiles”进行排序,查看并记录该值超过“20”的“Region Name”列中的表名,“Region Name”的格式为“表名,startkey,时间戳,encodedRegionName”。
- 返回HBase WebUI的“Home”页面,在“Tables”区域单击查看到的表名称进入对应表信息页面,在“Table Regions”区域对“Num.Storefiles”进行排序,确认是否存在某几个Region下StoreFile数量突出,且数据量远大于其余Region。
- 在hbase shell中执行以下命令对Region进行分裂操作,以均衡该Region数据分布:
split 'RegionName'
- 执行完手动命令后,等待一段时间后检查本告警是否恢复。
- 是,处理完毕。
- 否,执行步骤 18。
收集故障信息
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。