HDFS:Edits和Fsimage详解与合并流程

本文介绍了HDFS中元数据的管理和存储机制,包括FsImage和Edits文件的作用及合并流程,以及SecondaryNameNode在这一过程中的作用。

HDFS:Edits和Fsimage详解与合并流程

NameNode如何管理和存储元数据

计算机中存储数据有两种:内存或磁盘
元数据存储磁盘: 存储磁盘无法面对客户端对元数据信息的任意的快速低延迟的响应,但是安全性高
元数据存储内存:元数据存放内存,可以高效的查询以及快速响应客户端的查询请求,数据保存在内存,如果断电,内存中的数据全部丢失

因此,考虑上述两种存储方式的优缺点,HDFS采用了内存+磁盘的形式来管理元数据。即: NameNode(内存)+FsImage文件. 其中,NameNode文件维护了文件与数据块的映射表以及数据块与数据节点的映射表,比如,一个文件它被切分成了几个数据块,这些数据块分别存储在哪些datanode节点上。而Fsimage保存在磁盘上,为某一时刻下内存中元数据在本地磁盘的映射。就是在该时刻下,内存中元数据记录的所有文件块和目录,分别的状态,位于哪些datanode,各自的权限,各自的副本个数等 (可以通过查看Fsimage保存的内容可以看到上述信息)。因此,利用内存+磁盘的方式,内存中的元数据可以快速响应客户端的用户请求,而映射到磁盘中的元数据Fsimage可以实现安全性,防止数据的丢失。

而接下来的一个新问题是:磁盘和内存中的元数据如何进行划分。
即两个数据一摸一样,还是两个数据合并到一起才是一份完整的数据呢?

  • 一模一样:client如果对元数据进行增删改操作,需要保证两个数据的一致。FsImage文件操作起来效率也不高,因为FsImage存储在磁盘中,对磁盘中的内容进行写入势必会增加很多的IO操作,也要占用CPU。此时,相当于每一次增删改操作,都需要对两个文件同时进行修改。
  • 两个合并=完整数据:由于如果要将操作写入磁盘会降低运行效率。所以想法就是对于增删改操作,只有内存中的元数据进行响应,而不直接进行磁盘IO读写。此时,为了保证两个数据的一致性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JermeryBesian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值