namenode启动过程简要分析

1、Hadoop Distributed File System整体架构
image.png

1)主从架构,单个namenode,多个datanode;

2)原始数据都被分成固定大小(最后一个block除外)的block存储在各个DataNode上,namenode只负责存储metadata:文件名、副本数、存储在哪个DataNode等等信息,整个分布式文件系统的所有metadata组成存储在namenode上的namespace,namespace和大多数文件系统类似,提供新建、删除、移动、重命名等操作,namespace是一个树形结构;

3)client读获取取数据,都是先从namenode获取metadata,然后到对应的DataNode获取需要的数据,目的是给namenode降压,否则如果都从namenode来获取原始数据的话,namenode就会成为最大的瓶颈。

2、namenode启动过程

hdfs存储metadata涉及两个文件:FsImageEditLog
FsImage存储着整个文件系统的namespace,每个EditLog则记录着每个block的每一次变更。

FsImage的生成:通过bin/hdfs namenode -format对namenode进行格式化的时候,会在namenode所在节点本地生成FsImage文件。

当通过sbin/start-dfs.sh第一次启动文件系统的时候,系统会把FsImage读取到内存中,而DataNode节点数据的相关变动,则保留在一系列的EditLog文件中,在下次(非第一次)文件系统重新启动的时候,系统是先把目前的FsImage和所有的EditLog进行合并重新生成一个新的FsImage,然后读取这个新的FsImage到内存中,这样做是因为读取FsImage的速率比读取大量EditLog要快捷的多。

secondaryNameNode作用:在非第一次启动namenode的时候,要对FsImage和EditLog进行合并处理,这个时候,如果上次服务器运行时间很长的话,那EditLog的数量将会非常大,这样会导致合并的过程相当长,为了避免这个问题,HDFS系统会每隔一段时间(默认1小时,可配置)就对FsImage和EditLog进行合并操作,这个工作是由secondaryNameNode来完成的。

你可能感兴趣的:(namenode启动过程简要分析)