hadoop元数据合并过程_Hadoop元数据的加载流程

回顾

前面的文章写道NameNode初始化中的initialize方法里面的startHttpServer,这篇文章将会带你们了解loadNamesystem方法。

先回顾下总体的代码结构,心中先有个大致的了解

loadNamesystem

1.这篇文章将主要分析元数据的加载,在NameNode启动的时候,会将磁盘上的fsimage和edits两个文件都读取到内存中进行合并,形成一份最新的元数据。然后会通过调用FSNamesystem.loadFromDisk()构造FSImage对象,同时构造FSEditLog对象

2.NameNode将文件系统的管理委托给了FSNamesystem对象,NameNode会调用FSNamesystem.loadFromDisk()创建FSNamesystem对象,然后将fsimage文件和editlog文件加载到命名空间中加载镜像、重做编辑日志,并打开一个新编辑文件都在此方法中。

3.在NameNode刚启动的时候,会从磁盘读取fsimage和edits文件到内存中,合并为一份最新的元数据,然后将这份新的元数据写出到磁盘替换之前旧的fsimage。然后,还会重新打开一个空的edits文件,以供接下来的元数据变动日志写入。

4.接下来看看FSNamesystem的loadFSImage方法

5.然后调用FSImage的recoverTransitionRead方法。FSImage负责处理检查点和记录命名空间编辑。这个方法先对保存命名空间镜像和保存编辑日志的目录进行分析,如果目录处于非正常状态,先对其进行恢复,然后查看节点状态,如果没有格式化则系统帮助我们格式化(先删除 后 创建)然后再调用FSImage.loadFSImage()方法将镜像和编辑日志数据导入到内存中

6.最终,调用的FSImage.loadFSImage,从一个目录中选择最新的镜像 加载它并和编辑日志进行合并

小结

前面从代码分析了元数据的一个加载,最终是通过FSImage的loadFSImage方法完成,下面是元数据大概的一个流程,这篇文章就分析到这,如果要进一步分析就得进入loadFSImage方法里面去了。

推荐

如果你对Hadoop的源码感兴趣的话,而自己又没有头绪的话,那么推荐你购买下面这本书,我最近也在看这本书,这本书深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等,对阅读Hadoop有很大的一个帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值