HDFS支持集群掉电自动恢复
操作场景
HDFS数据写入磁盘时会先写入操作系统缓存,当操作系统缓存写入完成后则认为数据写入完成,缓存数据写入磁盘工作交由操作系统完成。如果此时集群断电,则缓存的数据就会丢失,造成HDFS丢块现象。在HDFS启动时如果有丢块,那么HDFS会进入安全模式,无法自动恢复。
HDFS提供以下配置参数可以解决集群掉电无法自动恢复的问题,用户需要根据业务实际情况进行调整。
- “dfs.datanode.synconclose”参数设置为“true”时,系统会等待操作系统缓存数据写入磁盘后才认为该次写入完成,此时不会发生掉电造成数据丢失的情况,但是开启该参数会造成HDFS写性能下降。
- “dfs.namenode.safemode.threshold-pct”参数表示DataNode上报的块达到总块数的百分比阈值,达到该阈值时NameNode会自动退出安全模式,该值设置过低可能导致在集群启动阶段存在大量副本复制。
该功能适用于MRS 3.5.0及之后版本。
操作步骤
- 登录FusionInsight Manager页面。
- 选择“集群 > 服务 > HDFS > 配置 > 全部配置”进入HDFS全部配置页面。
- 搜索并根据实际需求进行配置以下参数。
参数名称
参数说明
默认值
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
- 参数修改后保存配置。
- 在HDFS“实例”界面,勾选所有NameNode、DataNode实例,选择“更多 > 滚动重启实例”,验证密码并确认操作影响后单击“确定”,等待滚动重启完成生效。