hdfs开机启动流程

第一步:
加载name目录下最新的那个fsimage_xxx019文件,将里面存储的元数据(目录树结构)维护到内存中,但是还不是关机前的状态
第二步:
将关机前的最后使用的edits_inprogress_xxxx0160进行重命名
edits_0000000000000000160-0000000000000000169操作,然后生成一个最新的edits_inprogress_xxx170文件,并修改seen_txid里的值为170.
将从xxx020~xxx169的这个范围内的所有的edit日志文件加载到内存中,重演里面的操作,从而维护成关机前的最新的目录树结构
第三步
如果触发了检查点条件,namenode就会自己做一个检查点。将内存中的最新状态持久化成一个新的fsimage文件,删除之前保留的两份中的最旧那个。 也就是说namenode会保留最近两次的fsimage.

安全模式:

从启动到结束,整个过程处于安全模式下。当namenode收到datanode的心跳反馈时,并且达到块数量的99.9%时,会退出安全模式。

注意:当集群第一次开机时,edit文件才生成,而且datanode上还没有块,因此不会出现安全模式。

扩展:为什么客户端的访问操作不直接存储到fsimage里
因为fsimage会随着时间会越来越大(相对而已,不是绝对的,因为有的时候会有删除操作)
直接将访问操作存入fsimage中,性能会非常差。
反而我们提供了edit文件,用于存储客户端的访问,edit文件最大是64M,当达到此值,会新生成一个edit文件来存储新的访问数据。

你可能感兴趣的:(hadoop,hdfs)