当 Hadoop的NameNode节点启动时,会进入安全模式阶段。在此阶段,DataNode会向NameNode上传它们数据块的列表,让NameNode得到块的位置信息,并对每个文件对应的数据块副本进行统计。当最小副本条件满足时,即一定比例的数据块都达到最小副本数,系统就会退出安全模式,而这需要一定的延迟时间。当最小副本条件未达到要求时,就会对副本数不足的数据块安排DataNode进行复制,直至达到最小副本数。而在安全模式下,系统会处于只读状态,NameNode不会处理任何块的复制和删除命令。
安全模式相关属性的设置:
安全模式的相关属性都在文件conf/hdfs-site.xml中指定,有如下几个:
dfs.replication.min 指定数据块要达到的最小副本数,默认为1;
dfs.safemode.extension 指定系统退出安全模式时需要的延迟时间,默认为30(秒);
dfs.safemode.threshold.pct 指定退出条件,需要达到最小副本数的数据块比例,默认是0.999
(如果设置的副本数为4,而现在只有2个副本,2/4=0.5,即视为未达到最小比例,则需要把缺少的副本数据复制到4个副本即可运行)