文档章节

Fsimage 与 EditLog定义及合并过程

G
 Garphy
发布于 10/23 15:16
字数 728
阅读 24
收藏 0

有很多客户端在向 hdfs 中写数据,同时有很多客户端在查数据,这就涉及到一个响应速度问题。因为只有一个 namenode ,客户端在写的时候,必须迅速记下来。

1. 向 namenode 询问可以存储到哪些 datanode 中

2. 在 edits log(内存很小,是最新元数据的日志) 中记录最新的操作(只能追加,不能修改)

3. 返回给 client ,说哪些 DataNode 可以写

4. 在 HDFS 中,写副本

5. 成功写完之后,告诉 namenode

6. 元数据更新同步到 namenode 中的内存。这些操作才 edits log 中有记录日志,万一内存中断点,在 edits log 还有元数据。

 

edits log 假设只有 64M ,内存有 64 G ,元数据还是得写到 fsimage 中

如果 edits log 还没有满,内存就暂时不需要同步到 fsimage 中,fsimage 与 edits log 保持同步:满了,内存才需要同步到磁盘中。

 

edits log 与 fsimage 保持同步就是两个合并在一起。edits log 就是老数据了,此时就形成一个新的 edits log ,又写。有个问题,edits log 中是日志,fsimage 是元数据,格式不一样,需要运算。

 

如果两者合并,那么对客户端的请求就会变慢。

 

具体的合并:

当 edits 满了之后,就会开始执行

HTTP 的下载。

 

疑问:

在 checkpoint 之前,NN 故障宕机了,集群还能正常对外提供服务吗?

 

不能,因为 namenode 无法查询元数据了嘛,元数据还是可以恢复,但是在恢复之前,还是不能提供服务。

1.secondary namenode通过周期性(五分钟),通过getEditLog获取editlog大小,当其达到合并的大小时通过RollEditLog方法进行合并。
2.namenode停止使用edits文件,并生成一个新的临时的edits.new文件。
3.Secondarynamenode通过namenode内建的Http服务器,以get的方式获取edits与fsimage文件。Get方法中携带着fsimage与edits的路径。
4.Secondaryname将fsimage载入内存并逐一执行edits中的操作,生成新的fsimage文件。
5.执行结束后,会向namenode发送http请求,告知namenode合并结束,namenode通过http post的方式获取新fsimage文件。
6.Namenode更新fsimage文件中记录检查点执行的时间,并改名为fsimage文件。
7.Edit.new文件更名为edit文件。
注:由此可知namenode 与 secondarynamenode 有着相似的内存需求,因为secondarynamenode也会将fsimage载入内存,因此secondarynamenode需要运行在一台专门机器上。

 

© 著作权归作者所有

G
粉丝 0
博文 200
码字总数 84767
作品 0
私信 提问
Hadoop入门(7)_NameNode的工作特点

namenode始终在内存中保存metedata(整个文件系统的目录结构,每个目录有哪些文件,每个文件有哪些分块及每个分块保存在哪个DataNode上),用于处理“读请求”(不需要修改内容) 到有“写请...

崔同亮
2013/08/18
188
0
fsimage 和 editlog 的解释和原理

fsimage保存来最新的元数据检查点,包含来整个hdfs文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息,修改时间,访问时间等,对于目录老说包括修改时间,访问权限控制信息...

天行自息
2018/11/01
542
0
HDFS:edit log & fsimage

在NameNode的${dfs.namenode.name.dir}/current目录下,有这样几个文件: 在数据库系统中,log是用于记录写操作的日志的,并使用该Log进行备份、恢复数据等工作。有关写的操作的记录的,目前...

胡壮壮
2017/05/02
0
0
Hadoop入门(二) 深入了解Hadoop中NameNode和DataNode的工作机制

数据量越来越多,在一台PC的范围存不下了,那么就分配到更多的PC中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。分布式文件管理系统很多...

wangxueqing52
2018/04/09
0
0
hadoop学习笔记-HDFS原理

文章内容摘自书籍,互联网的博客的一些集合和个人的理解。 HDFS原理 hadoop提供了可靠的共享存储和分析的系统,HDFS实现存储,MapReduce实现分析处理,这两部分是hadoop的核心,由于HDFS是为...

shangwen_
2013/11/15
947
0

没有更多内容

加载失败,请刷新页面

加载更多

前端的一些雕虫小技,从100%和滚动条说起

1、100%和滚动条 当我们在css中把html和body同时设为100%时,会出现滚动条 html, body { width: 100%; height: 100%; } 原因是html和b...

wphmoon
今天
6
0
电力区块链应用案例【2019】

随着区块链技术的日益普及,出现了大量创业企业尝试使用区块链技术来解决能源与电力行业中存在的问题。在本文中,我们将介绍其中的三个能源区块链项目。 能源行业以价格不透明著称:消费者很...

汇智网教程
今天
9
0
聊聊rocketmq的adjustThreadPoolNumsThreshold

序 本文主要研究一下rocketmq的adjustThreadPoolNumsThreshold DefaultMQPushConsumer rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.ja......

go4it
今天
10
0
关于早起

早起是非常好的事情,但是像如果前一天睡得晚,或者第二天早上是非常冷的时候,那就不是很美好了。 但是本身早起是一件非常棒的事情,我记得我每次早起 如果不觉得困的话,世界是那么安静,脑...

T型人才追梦者
今天
7
0
Java输入输出

JDK中的InputStream/OutputStream构成了IO输入输出继承层次的基础。它们都是面向字节序列的,每次可以从序列中读入或者写出一个字节或者指定大小的字节数组。但是面向字节流的输入输出不便于...

ytuan996
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部