在HDFS集群启动时,NameNode首先进入安全模式,安全模式主要是为了在系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。
集群处于安全模式下,不能执行修改、写入和删除操作,集群一直处于只读模式。
- 将镜像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作,建立系统元数据映像成功后,则创建一个新的fsimage文件和一个空的编辑日志文件。
- NameNode监听DataNode的心跳请求,在此期间NameNode一直处于安全模式。
- 各个DataNode向NameNode发送各自最新的块列表信息,NameNode存储文件和DataNode中块的映射信息。
- NameNode检查“最小副本条件”,整个文件系统的99.9%的块满足最小副本条件,即DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式。
- “最小副本条件”检查成功,则NameNode在30秒后,退出安全模式。
操作模式操作如下。
- 查看安全模式:hdfs dfsadmin -safemode get
- 进入安全模式:hdfs dfsadmin -safemode enter
- 离开安全模式:hdfs dfsadmin -safemode leave
- 等待安全模式:hdfs dfsadmin -safemode wait