HDFS Namenode启动过程

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

namenode在磁盘上的两类文件组成:安全

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

edits文件:保存文件系统从上次checkpoint起对hdfs的全部操做记录日志信息。spa

fsimage和editlog文件能够在本地文件系统看到,以下图:日志

image

首次安装格式化(format)主要做用是在本地文件系统生成fsimage文件。orm

一、首此启动hdfs过程:blog

启动namenode:进程

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

启动datanode:内存

向namenode注册;

向namenode发送blockreport。

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

二、以后启动HDFS文件系统过程:

启动namenode:

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

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

启动datanode:

向namenode注册;

向namenode发送blockreport。

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

三、SecondaryNameNode

辅助namenode,不能代替namenode。

SecondaryNameNode的主要做用是用于合并fsimage和editlog文件。在没有SecondaryNameNode守护进程的状况下,从namenode启动开始至namenode关闭期间全部的HDFS更改操做都将记录到editlog文件,这样会形成巨大的editlog文件,所带来的直接危害就是下次启动namenode过程会很是漫长。

在启动SecondaryNameNode守护进程后,每当知足必定的触发条件(每3600s、文件数量增长100w等),SecondaryNameNode都会拷贝namenode的fsimage和editlog文件到本身的目录下,首先将fsimage加载到内存中,而后加载editlog文件到内存中合并fsimage和editlog文件为一个新的fsimage文件,而后将新的fsimage文件拷贝回namenode目录下。而且声称新的editlog文件用于记录DFS的更改。

四、安全模式

在启动namenode至全部datanode启动完成前的阶段成为安全模式。在安全模式下,client只能读取部分HDFS文件信息,不容许client对HDFS的任何更改操做,好比建立目录、上传文件、删除文件、重命名文件等。

namenode推出安全模式条件须要知足如下条件:

datanodes blocks/total blocks >= 99.999% + 30s(缓冲时间) 此时安全模式才会推出

Secondary namenode工做流程:

1)secondary通知namenode切换edits文件

2)secondary经过http请求从namenode得到fsimage和edits文件

3)secondary将fsimage载入内存,而后开始合并edits

4)secondary将新的fsimage发回给namenode

5)namenode用新的fsimage替换旧的fsimage

Secondary namenode工做流程经过一张图能够表示为:

clip_image003

手工维护安全模式指令:

bin/hdfs dfsadmin -safemode <enter | leave | get | wait>

例如:

[hadoop@db01 ~]$ hdfs dfsadmin -safemode get

Safe mode is OFF

相关文章
相关标签/搜索