You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark中org.apache.hadoop.hdfs.server.namenode.SafeModeException的解决与原因排查

解决Spark运行时的HDFS安全模式异常问题

异常产生原因

HDFS NameNode的**安全模式(Safe Mode)是一种只读保护状态,目的是防止集群元数据在节点状态不稳定时被修改。当NameNode所在节点出现资源不足(磁盘空间不足、内存紧张等)**时,会自动触发安全模式。

Spark运行时会在HDFS的/user/hadoop/.sparkStaging/目录下存储作业临时文件,任务结束后会自动删除这些文件,但NameNode处于安全模式时会禁止所有修改类操作(包括删除),因此抛出SafeModeException异常。

解决方法

1. 排查并解决NameNode节点资源问题

  • 检查节点磁盘空间:执行命令 df -h,查看NameNode存储目录的剩余空间,清理冗余文件(如过期的HDFS日志、历史Spark作业文件、无用的HDFS数据)。
  • 检查节点内存使用:执行命令 free -m,若内存不足,可关闭节点上的非必要进程,或扩容节点内存。

2. 手动退出安全模式

确认资源问题解决、集群状态稳定后,执行以下命令让NameNode退出安全模式:

hdfs dfsadmin -safemode leave

3. 后续预防措施

  • 调整HDFS安全模式触发阈值:修改hdfs-site.xml中的dfs.safemode.threshold.pct参数(默认值0.999f),调低该值可降低安全模式触发概率,但需根据集群实际稳定性权衡。
  • 定期清理临时文件:配置Spark自动清理sparkStaging目录,或手动定期清理该目录下的过期作业文件。
  • 监控资源状态:给NameNode节点配置资源告警(磁盘使用率、内存使用率),提前发现并解决资源不足问题。

内容的提问来源于stack exchange,提问作者Raphael Mansuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:50:22