
# HDFS支持集群掉电自动恢复
#### 操作场景
HDFS数据写入磁盘时会先写入操作系统缓存，当操作系统缓存写入完成后则认为数据写入完成，缓存数据写入磁盘工作交由操作系统完成。如果此时集群断电，则缓存的数据就会丢失，造成HDFS丢块现象。在HDFS启动时如果有丢块，那么HDFS会进入安全模式，无法自动恢复。
HDFS提供以下配置参数可以解决集群掉电无法自动恢复的问题，用户需要根据业务实际情况进行调整。
- "dfs.datanode.synconclose"参数设置为"true"时，系统会等待操作系统缓存数据写入磁盘后才认为该次写入完成，此时不会发生掉电造成数据丢失的情况，但是开启该参数会造成HDFS写性能下降。
- "dfs.namenode.safemode.threshold-pct"参数表示DataNode上报的块达到总块数的百分比阈值，达到该阈值时NameNode会自动退出安全模式，该值设置过低可能导致在集群启动阶段存在大量副本复制。
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
该功能适用于MRS 3.5.0及之后版本。
#### 操作步骤
1. 登录FusionInsight Manager页面。
2. 选择"集群 \> 服务 \> HDFS \> 配置 \> 全部配置"进入HDFS全部配置页面。
3. 搜索并根据实际需求进行配置以下参数。 
   
   | 参数名称                                | 参数说明                                                                                                                                                                                                                                                                                                                                   | 默认值      |
   |:---|:---|:---|
   | dfs.datanode.synconclose            | 在存储文件过程中，系统断电或重启，如果此参数设置为false，缓存中的block数据不会被立即写入磁盘，可能会导致数据丢失。如果设置为true，可以解决断电或系统重启后的数据丢失问题，但对性能影响较大。请根据具体应用场景决定是否开启该参数。                                                                                                                                                                                                               | false    |
   | dfs.namenode.safemode.threshold-pct | 满足"dfs.namenode.replication.min"定义的最小复制需求的块的比例。取值范围：0\~1.0。 - 值小于等于0时，NameNode会直接退出安全模式，不会等待任何指定比例的块。  - 值大于1时，NameNode会永久处于安全模式。   | 0.999999 |
      
   
   
4. 参数修改后保存配置。
5. 在HDFS"实例"界面，勾选所有NameNode、DataNode实例，选择"更多 \> 滚动重启实例"，验证密码并确认操作影响后单击"确定"，等待滚动重启完成生效。
 
