Namenode保存文件系统元数据镜像,namenode在内存及磁盘上分别存在一份元数据镜像文件,内存中元数据镜像保证了hdfs文件系统文件访问效率,磁盘上的元数据镜像保证了hdfs文件系统的安全性。

namenode在磁盘上的文件组成:

fsimage文件:保存文件系统至上次checkpoint为止目录和文件元数据。

edits文件:保存文件系统从上次checkpoint起对hdfs的所有操作记录日志信息。

fstime文件:保存文件系统更新操作的时间

 

首次启动:

首先进行格式化,为了生成fsimage镜像文件

启动namenode:

读取fsimage生成内存中元数据镜像。

启动datanode:

向namenode注册;

向namenode发送blockreport。

启动成功后,client可以对HDFS进行目录创建、文件上传、下载、查看、重命名等操作,更改namespace的操作将被记录在edits文件中。

HDFS中NameNode的启动过程

之后启动:

启动namenode:

读取fsimage元数据镜像文件,加载到内存中。

读取editlog日志文件,加载到内存中,使当前内存中元数据信息与上次关闭系统时保持一致。然后在磁盘上生成一份同内存中元数据镜像相同的fsimage文件,同时生成一个新的null的editlog文件用于记录以后的hdfs文件系统的更改。

启动datanode:

向namenode注册;

向namenode发送blockreport。

启动成功后,client可以对HDFS进行目录创建、文件上传、下载、查看、重命名等操作,更改namespace的操作将被记录在editlog文件中。

HDFS中NameNode的启动过程

SecondaryNameNode(辅助NameNode)

由于启动NameNode时候读取fsimage的速度比edits的速度快,所以如果长时间不重启NameNode会导致edits文件变得很大,下次启动的速度就会很慢。

SecondaryNameNode的作用就是每隔一段时间(默认是1小时,触发条件很多)就会将fsimage和edits文件进行合并生成新的fsimage,创建一个新的空的edits文件用于存放文件系统改变的日志文件。

相关文章: