
# ALM-19025 HBase存在损坏的StoreFile文件
#### 告警解释
系统每120秒周期性检测每个HBase服务在HDFS上的"hdfs://hacluster/hbase/autocorrupt"和"hdfs://hacluster/hbase/MasterData/autocorrupt"目录，当检测到目录下存在文件时产生该告警。
当"/hbase/autocorrupt"和"/hbase/MasterData/autocorrupt"目录不存在或为空时，告警消除。
本章节仅适用于MRS 3.3.0-LTS及之后版本。
![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/note_3.0-zh-cn.png)
"hdfs://hacluster"为HBase使用的文件系统名，"/hbase"为HBase在文件系统上的根目录，可登录FusionInsight Manager，选择"集群 \> 服务 \> HBase \> 配置"，在搜索框中分别搜索"fs.defaultFS"和"hbase.data.rootdir"参数查看。
#### 告警属性
| 告警ID  | 告警级别 | 是否可自动清除 |
|:---|:---|:---|
| 19025 | 重要   | 是       |
   
#### 告警参数
| 参数名称 | 参数含义       |
|:---|:---|
| 来源   | 产生告警的集群名称。 |
| 服务名  | 产生告警的服务名称。 |
| 角色名  | 产生告警的角色名称。 |
| 主机名  | 产生告警的主机名。  |
   
#### 对系统的影响
HBase存在损坏的StoreFile文件，可能会导致位于该文件上的数据丢失，业务查询数据可能出现不一致。
#### 可能原因
StoreFile文件内容损坏。
#### 处理步骤
1. 在FusionInsight Manager首页，选择"运维 \> 告警 \> 告警"，查看"告警ID"为"19025"的告警的"定位信息"中上报该告警的服务名。
2. 以客户端安装用户登录安装了HDFS和HBase客户端的节点，并执行以下命令： 
   **cd** *客户端安装目录*
   **source bigdata_env**
   **kinit** *组件业务用户*（若集群未启用Kerberos认证（普通模式），请跳过该操作）
   
   
3. 查看损坏的StoreFile文件。 
   - 执行以下命令检查HDFS的"/hbase/autocorrupt"目录是否为空，不为空则执行[步骤 4]。
     **hdfs dfs -ls -R** **hdfs://hacluster** **/hbase** **/autocorrupt**
     
   
   - 执行以下命令检查HDFS的"/hbase/MasterData/autocorrupt"目录是否为空，不为空则执行[步骤 9]。
     **hdfs dfs -ls -R** **hdfs://hacluster** **/hbase** **/MasterData/autocorrupt**
     
   
   
   
   
4. 对"hdfs://hacluster/hbase/autocorrupt"目录下的StoreFile文件执行以下命令进行修复：
   
   **hdfs debug recoverLease -path hdfs://hacluster/hbase/autocorrupt/** *NameSpace名* **/** *表名* **/** *Region名* **/** *列簇名* **/** *StoreFile文件名*
   
   
5. 查看损坏的StoreFile文件是否修复成功，执行修复命令后返回以下信息表示修复成功： 
   ```
   recoverLease SUCCEEDED on hdfs://hacluster/hbase/autocorrupt/default/h1/865665fe32db62dadada68b644359809/cf1/95f210f931ad44c99e4028470be7d292
   ```
   是，执行[步骤 6]。
   否，执行[步骤 9]。
   
   
6. 执行以下命令将文件移回"hdfs://hacluster/hbase/data"目录。
   
   **hdfs dfs -mv hdfs://hacluster/hbase/autocorrupt/** *NameSpace名* **/** *表名* **/** *Region名* **/** *列簇名* **/** *StoreFile文件名* **hdfs://hacluster/hbase/data/** *N* *ameSpace名* /*表名* /*Region名* /*列簇名* /*StoreFile文件名*
   
   
7. 在**hbase shell** 执行以下命令重新上线Region。
   
   **hbase shell**
   **unassign '** *Region名* ****'****
   **assign '** *Region名* ****'****
   
   
8. 等待几分钟后，在告警列表中查看该告警是否清除。 
   - 是，处理完毕。
   
   - 否，执行[步骤 9]。
   
   
   
   
**收集故障信息**
9. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
10. 在"服务"中勾选待操作集群的"HBase"。
11. 单击右上角的时间编辑按钮，设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后10分钟，单击"下载"。
12. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
不涉及。
