Hadoop的NameNode
通过FsImage
以及EditLog
来维护:
FsImage
是保存了文件系统的树形结构以及原信息等数据。EditLog
用于记录对文件的修改记录,类似于可以执行的日志记录一样。
当大量数据频繁操作后,EditLog
会变的很大,那么在Hadoop启动阶段将进入到“安全模式”,在该模式下,Hadoop只能进行读取操作,而不能进行写入操作,当EditLog
更新完FsImage
后,Hadoop将退出安全模式。
为了缩短Hadoop在安全模式下的时间,SNN(Secondary NameNode
)被设计出来。SNN将读取FsImage
以及EditLog
信息,将两者合并在为新的FsImage
,然后将新的FsImage
同步给NN节点。
NN节点的FsImage
可以通过挂接文件系统的方式将FsImage
备份到其他的存储设备,以提高数据的安全性。
如果NN节点down掉后,SNN节点将升为NN节点,新的NN节点与老的NN节点的EditLog不能完全同步,还是有些数据的损失。