HDFS集群进入了安全模式?原因是什么?如何解决?来一起解读安全模式这种特殊的HDFS状态
什么是安全模式
安全模式是HDFS的一种特殊状态,在这种状态下,HDFS只接收读数据请求,而不接收写入、删除、修改等变更请求。它是HDFS确保集群安全的一种保护机制, NameNode如果检测到任何异常,便会进入到安全模式,直到问题解决。
触发安全模式的原因
Block上报率缺失
DataNode主动向NameNode汇报可用Block列表等信息,当Block上报率 <= 阈值时(默认阈值为0.999), 会处于安全模式。
假设HDFS中存储有1000个Block块,现在所有的DataNode只汇报给NameNode 90个Block的位置信息,那么HDFS会认为系统处于异常状态,为了保证系统的安全性,此时HDFS只允许读取,而不允许写入。
默认情况下,当Block的上报率(DataNode上报的可用Block个数 / NameNode元数据记录的Block个数)小于0.999时,便会进入安全模式,这个阈值允许按照不同的生产情况进行修改。
造成上报率缺失的常见情况有:NameNode重启、DataNode无法正常启动。当NameNode重启后,因为Block位置信息不会持久化到磁盘,被清空,在等待DataNode逐渐上报的过程中,