关于安全模式的描述错误的是()
A、NameNode在启动时会自动进入安全模式
B、NameNode只有在安全启动模式下才会进入安全模式
C、安全模式是一种状态,文件系统不允许有任何修改
D、进入安全模式后,系统会显示NameNode in safe mode,说明系统正在处于安全模式
答案:A
Name启动就会自动进入安全模式。在此阶段不允许有任何增、删、改操作。
安全模式的目的:在系统启动的时候检查各个DataNode上数据块的有效性,同时根据预先设定的策略对数据块进行必要的操作(少则复制多则删除),在数据块最小百分比满足配置 的最小副本数条件时候,将会自动退出。
Namenode启动时会首先加载fsimage文件并且合并编辑editlog文件,完成这些操作之后Namenode的第一关系也就建立起来了。之后Namenode需要接受Datanode的块汇报以获得数据块的存储信息,也就是建立第二关系。这些操作都是Namenode在安全模式中进行的,只有当Namenode收集到的阈值比例满足最低副本系数的数据块时才可以离开安全模式。当Namenode发现阈值比例满足之后,会延迟一段时间推出安全模式,目的是等待那些还没有进行块汇报的数据节点进行块汇报,这个延迟时间默认是30s。之后,Namenode就可以顺利推出安全模式了。
最低副本系数指一个数据块应该拥有的最少的副本数量,默认为1。而阈值比例指的是已经收集到的满足最低副本系数的数据块数量与HDFS文件系统中所有数据块的比例,默认为0.999。
但是如果是客户端通过远程接口setSafeMode()进入安全模式的,是不可以自动退出安全模式的,必须由客户端手动调用远程接口setSafeMode()退出安全模式。