首先呢,当hdfs开启安全模式时,通常情况下有两个方法可以离开安全模式:
1、修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。
2、hdfs dfsadmin -safemode leave命令强制离开
但今天遇到了一个更奇葩的问题,hdfs dfsadmin -safemode leave命令也无法强行离开安全模式,不但无法对文件进行操作还报出了以下的错误:
Resources are low on NN. Please add or free up more resources then turn off safe mode manually.
接下来,在解决安全模式之前需要先解决资源不足的问题,也就是我们常说的磁盘溢满的bug。
提交spark应用到yarn集群上的时候在跑一段时间就会出现这个报错:
根据上面的报错原因分析是因为集群资源不够,集群的自我保护机制使hdfs处于安全模式,查找资料说的就是节点空间不足,然后就用 df -hl命令查看集群空间的使用情况。
看到上面的使用情况资源已经使用100%了
然后再使用 du -sh /* 看看是哪些大文件占用了空间
最后再次执行 hdfs dfsadmin -safemode leave 命令就可以离开安全模式了!!!