解释:
safemode是namenode的一种状态(active/standby/safemode安全模式)
namenode进入安全模式的原理:
a、namenode发现集群中的block丢失率达到一定比例时(0.01%),namenode就会进入安全模式,在安全模式下,客户端不能对任何数据进行操作,只能查看元数据信息(比如ls/mkdir)
b、如何退出安全模式?
找到问题所在,进行修复(比如修复宕机的datanode)
或者可以手动强行退出安全模式(没有真正解决问题): hdfs namenode --safemode leave
c、在hdfs集群正常冷启动时,namenode也会在safemode状态下维持相当长的一段时间,此时你不需要去理会,等待它自动退出安全模式即可
(原理:
namenode的内存元数据中,包含文件路径、副本数、blockid,及每一个block所在datanode的信息,而fsimage中,不包含block所在的datanode信息,
那么,当namenode冷启动时,此时内存中的元数据只能从fsimage中加载而来,从而就没有block所在的datanode信息
——>就会导致namenode认为所有的block都已经丢失
——>进入安全模式
——>datanode启动后,会定期向namenode汇报自身所持有的blockid信息,
——>随着datanode陆续启动,从而陆续汇报block信息,namenode就会将内存元数据中的block所在datanode信息补全更新
——>找到了所有block的位置,从而自动退出安全模式)