文档首页/ MapReduce服务 MRS/ 用户指南/ MRS集群运维/ MRS集群告警处理参考/ ALM-19036 HBase关键目录数据存在坏块
更新时间:2024-11-12 GMT+08:00

ALM-19036 HBase关键目录数据存在坏块

告警解释

系统每5分钟周期性检测HBase服务的关键目录是否存在坏块,当检测到存在坏块时产生该告警。检查内容包括“hbase.version”文件、hbase:metamaster:store表目录。

当系统检测到HBase服务的关键目录都不存在坏块时,告警清除。

该告警仅适用于MRS 3.5.0及之后版本。

告警属性

告警ID

告警级别

是否可自动清除

19036

紧急

告警参数

类别

参数名称

参数含义

定位信息

来源

产生告警的集群名称。

服务名

产生告警的服务名称。

角色名

产生告警的角色名称。

主机名

产生告警的主机名。

对系统的影响

HBase关键目录丢块,会导致HBase服务不可用,造成业务请求积压或中断。

可能原因

HDFS故障导致HBase关键目录丢块。

处理步骤

关键目录数据存在坏块的处理步骤,涉及停止HBase服务等用于快速恢复HBase服务的操作,会导致业务中断,请谨慎操作,同时需要关注业务侧数据积压问题。

查看HDFS服务是否正常。

  1. 登录FusionInsight Manager,选择“集群 > 服务 > HDFS”,查看“运行状态”是否为“良好”。

    • 是,执行3
    • 否,执行2

  2. 根据HDFS上报告警的相关帮助文档恢复HDFS服务的运行状态为“良好”,执行3

重建关键目录数据

  1. 在FusionInsight Manager首页,选择“运维 > 告警 > 告警”,查看“告警ID”为“19036”告警的“告警原因”,确认丢块的目录。
  2. 根据丢块的目录执行相应恢复操作:

    • “告警原因”为“hbase.version文件存在坏块。”,执行5恢复“hbase.version”文件。
    • “告警原因”为“hbase:meta表目录存在坏块。”,执行6恢复hbase meta表目录文件。
    • “告警原因”为“master:store表目录存在坏块。”,执行7恢复master store表目录文件。

  3. 恢复“hbase.version”文件。

    1. 以客户端安装用户,登录安装了客户端的节点。
    2. 执行以下命令切换到客户端安装目录。

      cd 客户端安装目录

    3. 执行以下命令配置环境变量。

      source bigdata_env

      source HBase/component_env

    4. 如果集群已启用Kerberos认证(安全模式),执行以下命令以HBase内置用户进行认证,如果是首次认证,需要输入默认密码,并修改密码:

      kinit hbase

      如果集群未启用Kerberos认证(普通模式),则执行以下命令设置Hadoop用户名:

      export HADOOP_USER_NAME=hbase

    5. 执行以下命令创建一个HDFS中不存在的备份目录,例如“/tmp/hbase_bak”:

      hdfs dfs -mkdir /tmp/hbase_bak

    6. 执行以下命令备份旧文件:

      hdfs dfs -mv /hbase/hbase.version /tmp/hbase_bak

    7. 执行hbck命令,修复“hbase.version”文件:

      hbase hbck -j ${HBASE_HOME}/tools/hbase-hbck2-*.jar filesystem -fixVersionFile

      • 命令执行成功后,可执行以下命令查看恢复的“hbase.version”文件:

        hdfs dfs -ls /hbase

      • 如果该命令执行失败,则执行8
    8. 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase > 实例”,勾选所有HMaster实例,选择“更多 > 滚动重启实例”,输入当前用户密码并单击“确定”,滚动重启所有HMaster实例。
    9. HMaster实例重启成功后,在告警列表中查看该告警是否清除。
      • 是,处理完毕。
      • 否,执行8

  4. 恢复hbase meta表目录文件。

    1. 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“停止服务”,输入当前用户密码并单击“确定”,停止HBase服务。
    2. 以客户端安装用户,登录安装了客户端的节点。
    3. 执行以下命令切换到客户端安装目录。

      cd 客户端安装目录

    4. 执行以下命令配置环境变量。

      source bigdata_env

      source HBase/component_env

    5. 如果集群已启用Kerberos认证(安全模式),执行以下命令以HBase内置用户进行认证,如果是首次认证,需要输入默认密码,并修改密码:

      kinit hbase

      如果集群未启用Kerberos认证(普通模式),则执行以下命令设置Hadoop用户名:

      export HADOOP_USER_NAME=hbase

    6. 执行以下命令,重新生成meta表数据:

      export HBASE_CLASSPATH=${HBASE_CLASSPATH}:${HBASE_HOME}/tools/*

      hbase org.apache.hbase.hbck1.OfflineMetaRepair -details

      命令执行后,打印“Success”表示执行成功,继续执行6.g;如果命令执行失败,需执行8

    7. 执行以下命令创建一个HDFS中不存在的备份目录,例如“/tmp/hbase_bak”:

      hdfs dfs -mkdir /tmp/hbase_bak

    8. 执行以下命令,备份并清理HMaster相关数据:

      hdfs dfs -mv /hbase/MasterData/* /tmp/hbase_bak

    9. 执行以下命令,清理meta表位置信息:

      hbase zkcli

      deleteall /hbase/meta-region-server

      quit

    10. 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“ 启动服务”启动HBase服务。
    11. HBase服务启动成功后,在告警列表中查看该告警是否清除。
      • 是,处理完毕。
      • 否,执行8

  5. 恢复master store表目录文件。

    1. 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“停止服务”,输入当前用户密码单击“确定”,停止HBase服务。
    2. 以客户端安装用户,登录安装了客户端的节点。
    3. 执行以下命令切换到客户端安装目录。

      cd 客户端安装目录

    4. 执行以下命令配置环境变量。

      source bigdata_env

      source HBase/component_env

    5. 如果集群已启用Kerberos认证(安全模式),执行以下命令以HBase内置用户进行认证,如果是首次认证,需要输入默认密码,并修改密码:

      kinit hbase

      如果集群未启用Kerberos认证(普通模式),则执行以下命令设置Hadoop用户名:

      export HADOOP_USER_NAME=hbase

    6. 执行以下命令创建一个HDFS中不存在的备份目录,例如“/tmp/hbase_bak”:

      hdfs dfs -mkdir /tmp/hbase_bak

    7. 执行以下命令,备份并清理HMaster相关数据:

      hdfs dfs -mv /hbase/MasterData/* /tmp/hbase_bak

    8. 执行以下命令,清理meta表位置信息:

      hbase zkcli

      deleteall /hbase/meta-region-server

      quit

    9. 登录FusionInsight Manager界面,选择“集群 > 服务 > HBase”,单击概览页面右上角的“ 启动服务”启动HBase服务。
    10. HBase服务启动成功后,在告警列表中查看该告警是否清除。
      • 是,处理完毕。
      • 否,执行8

使用对应步骤恢复HBase服务后,需要观察一段时间,确认HBase服务以及相关业务正常后,建议执行以下命令删除相关备份目录,避免残留存在坏快的无用文件:

hdfs dfs -rm -r /tmp/hbase_bak

收集故障信息

  1. 在FusionInsight Manager界面,选择“运维 > 日志 > 下载”。
  2. 在“服务”中勾选待操作集群的“HBase”。
  3. 单击右上角的时间编辑按钮,设置日志收集的“开始时间”和“结束时间”分别为告警产生时间的前后30分钟,单击“下载”。
  4. 请联系运维人员,并发送已收集的故障日志信息。

告警清除

此告警修复后,系统会自动清除此告警,无需手工清除。

参考信息

不涉及。