HDFS安全模式

Posted 数舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS安全模式相关的知识,希望对你有一定的参考价值。



 HDFS集群进入了安全模式?原因是什么?如何解决?来一起解读安全模式这种特殊的HDFS状态



01



什么是安全模式


安全模式是HDFS的一种特殊状态。

在这种状态下,HDFS只接收读数据请求,而不接收写入、删除、修改等变更请求。它是HDFS确保集群安全的一种保护机制。

NameNode如果检测到任何异常,便会进入到安全模式,直到问题解决。

02



触发安全模式的原因


Block上报率缺失

DataNode主动向NameNode汇报可用Block列表等信息,当Block上报率 <= 阈值时(默认阈值为0.999), 会处于安全模式。

假设HDFS中存储有1000个Block块,现在所有的DataNode只汇报给NameNode 90个Block的位置信息,那么HDFS会认为系统处于异常状态,为了保证系统的安全性,此时HDFS只允许读取,而不允许写入。


HDFS安全模式

默认情况下,当Block的上报率(DataNode上报的可用Block个数 / NameNode元数据记录的Block个数)小于0.999时,便会进入安全模式,这个阈值允许按照不同的生产情况进行修改。

造成上报率缺失的常见情况有:NameNode重启、DataNode无法正常启动。

当NameNode重启后,因为Block位置信息不会持久化到磁盘,被清空,在等待DataNode逐渐上报的过程中,且达到阈值之前会一直处于安全模式。

而DataNode无法正常启动,也会造成当前节点的Block信息丢失。

当Block上报率>=阈值时,HDFS才能离开安全模式,默认阈值为0.999。

也可以使用命令强制退出安全模式,但不推荐,数据已经缺失,此操作可能造成文件丢失的风险。


元数据出现不一致情况


当元数据文件被用户手动修改,数据回滚导致元数据替换,这两种元数据更改导致不一致会触发安全模式。

用户强制关机导致元数据丢失,或者NameNode磁盘空间不足导致元数据无法持久化保存,都会导致HDFS进入安全模式。


日志中出现严重异常


当NameNode检测到HDFS异常时,主要体现在日志中有严重报错,会导致HDFS进入保护状态——安全模式。


手动进入安全模式


集群管理员可能因为集群维护的需要,手动通过运维命令进入安全模式。但这种方式进入安全模式,与其它方式有所区别,它只能通过手动命令退出。


03



如何正常离开安全模式


发现集群进入安全模式,首先排查进入安全模式的原因,对症下药。

如果是因为上报率的缺失,则排查Block信息缺失原因。如果是正常情况,如NameNode重启,或者非DataNode宕机导致的严重情况,等待集群容自动恢复即可。

如果是DataNode出现问题导致的Block信息上报确实,需要手动修复问题DataNode,当Block上报率 >= 阈值时,HDFS会自动退出安全模式。

元数据出现损坏,则恢复元数据后,自动或手动退出安全模式。

NameNode磁盘空间不足,清理NameNode磁盘后,自动退出安全模式。

其它集群报错问题,解决集群报错后,自动退出安全模式。

但如果是管理员手动进入安全模式后,只能手动通过命令退出安全模式。


看到这里,关于HDFS安全模式,你懂了吗?记得关注,下期见!




扫描二维码

获取更多精彩

数舟,再会



以上是关于HDFS安全模式的主要内容,如果未能解决你的问题,请参考以下文章

彻底理解 HDFS 的安全模式

彻底理解 HDFS 的安全模式

大数据面试之HDFS的安全模式

大数据HDFS启动时安全模式(safemode)

HDFS的安全模式

hdfs功能详解介绍(2)