ALM-19036 HBase关键目录数据存在坏块
告警解释
系统每5分钟周期性检测HBase服务的关键目录是否存在坏块,当检测到存在坏块时产生该告警。检查内容包括“hbase.version”文件、hbase:meta和master:store表目录。
当系统检测到HBase服务的关键目录都不存在坏块时,告警清除。
该告警仅适用于MRS 3.5.0及之后版本。
告警属性
告警ID |
告警级别 |
是否可自动清除 |
---|---|---|
19036 |
紧急 |
是 |
告警参数
类别 |
参数名称 |
参数含义 |
---|---|---|
定位信息 |
来源 |
产生告警的集群名称。 |
服务名 |
产生告警的服务名称。 |
|
角色名 |
产生告警的角色名称。 |
|
主机名 |
产生告警的主机名。 |
对系统的影响
HBase关键目录丢块,会导致HBase服务不可用,造成业务请求积压或中断。
可能原因
HDFS故障导致HBase关键目录丢块。
处理步骤
关键目录数据存在坏块的处理步骤,涉及停止HBase服务等用于快速恢复HBase服务的操作,会导致业务中断,请谨慎操作,同时需要关注业务侧数据积压问题。
查看HDFS服务是否正常。
- 登录FusionInsight Manager,选择“集群 > 服务 > HDFS”,查看“运行状态”是否为“良好”。
- 根据HDFS上报告警的相关帮助文档恢复HDFS服务的运行状态为“良好”,执行3。
重建关键目录数据。
- 在FusionInsight Manager首页,选择“运维 > 告警 > 告警”,查看“告警ID”为“19036”告警的“告警原因”,确认丢块的目录。
- 根据丢块的目录执行相应恢复操作:
- 恢复“hbase.version”文件。
- 以客户端安装用户,登录安装了客户端的节点。
- 执行以下命令切换到客户端安装目录。
- 执行以下命令配置环境变量。
source HBase/component_env
- 如果集群已启用Kerberos认证(安全模式),执行以下命令以HBase内置用户进行认证,如果是首次认证,需要输入默认密码,并修改密码:
kinit hbase
如果集群未启用Kerberos认证(普通模式),则执行以下命令设置Hadoop用户名:
export HADOOP_USER_NAME=hbase
- 执行以下命令创建一个HDFS中不存在的备份目录,例如“/tmp/hbase_bak”:
- 执行以下命令备份旧文件:
- 执行hbck命令,修复“hbase.version”文件:
hbase hbck -j ${HBASE_HOME}/tools/hbase-hbck2-*.jar filesystem -fixVersionFile
- 命令执行成功后,可执行以下命令查看恢复的“hbase.version”文件:
- 如果该命令执行失败,则执行8。
- 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase > 实例”,勾选所有HMaster实例,选择“更多 > 滚动重启实例”,输入当前用户密码并单击“确定”,滚动重启所有HMaster实例。
- HMaster实例重启成功后,在告警列表中查看该告警是否清除。
- 是,处理完毕。
- 否,执行8。
- 恢复hbase meta表目录文件。
- 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“停止服务”,输入当前用户密码并单击“确定”,停止HBase服务。
- 以客户端安装用户,登录安装了客户端的节点。
- 执行以下命令切换到客户端安装目录。
- 执行以下命令配置环境变量。
source HBase/component_env
- 如果集群已启用Kerberos认证(安全模式),执行以下命令以HBase内置用户进行认证,如果是首次认证,需要输入默认密码,并修改密码:
kinit hbase
如果集群未启用Kerberos认证(普通模式),则执行以下命令设置Hadoop用户名:
export HADOOP_USER_NAME=hbase
- 执行以下命令,重新生成meta表数据:
export HBASE_CLASSPATH=${HBASE_CLASSPATH}:${HBASE_HOME}/tools/*
hbase org.apache.hbase.hbck1.OfflineMetaRepair -details
- 执行以下命令创建一个HDFS中不存在的备份目录,例如“/tmp/hbase_bak”:
- 执行以下命令,备份并清理HMaster相关数据:
- 执行以下命令,清理meta表位置信息:
deleteall /hbase/meta-region-server
quit
- 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“ 启动服务”启动HBase服务。
- HBase服务启动成功后,在告警列表中查看该告警是否清除。
- 是,处理完毕。
- 否,执行8。
- 恢复master store表目录文件。
- 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“停止服务”,输入当前用户密码单击“确定”,停止HBase服务。
- 以客户端安装用户,登录安装了客户端的节点。
- 执行以下命令切换到客户端安装目录。
- 执行以下命令配置环境变量。
source HBase/component_env
- 如果集群已启用Kerberos认证(安全模式),执行以下命令以HBase内置用户进行认证,如果是首次认证,需要输入默认密码,并修改密码:
kinit hbase
如果集群未启用Kerberos认证(普通模式),则执行以下命令设置Hadoop用户名:
export HADOOP_USER_NAME=hbase
- 执行以下命令创建一个HDFS中不存在的备份目录,例如“/tmp/hbase_bak”:
- 执行以下命令,备份并清理HMaster相关数据:
- 执行以下命令,清理meta表位置信息:
deleteall /hbase/meta-region-server
quit
- 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“ 启动服务”启动HBase服务。
- HBase服务启动成功后,在告警列表中查看该告警是否清除。
- 是,处理完毕。
- 否,执行8。
使用对应步骤恢复HBase服务后,需要观察一段时间,确认HBase服务以及相关业务正常后,建议执行以下命令删除相关备份目录,避免残留存在坏快的无用文件:
hdfs dfs -rm -r /tmp/hbase_bak
收集故障信息
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。