HDFS:Edits和Fsimage详解与合并流程
NameNode如何管理和存储元数据
计算机中存储数据有两种:内存或磁盘
元数据存储磁盘: 存储磁盘无法面对客户端对元数据信息的任意的快速低延迟的响应,但是安全性高
元数据存储内存:元数据存放内存,可以高效的查询以及快速响应客户端的查询请求,数据保存在内存,如果断电,内存中的数据全部丢失
因此,考虑上述两种存储方式的优缺点,HDFS采用了内存+磁盘的形式来管理元数据。即: NameNode(内存)+FsImage文件. 其中,NameNode文件维护了文件与数据块的映射表以及数据块与数据节点的映射表,比如,一个文件它被切分成了几个数据块,这些数据块分别存储在哪些datanode节点上。而Fsimage保存在磁盘上,为某一时刻下内存中元数据在本地磁盘的映射。就是在该时刻下,内存中元数据记录的所有文件块和目录,分别的状态,位于哪些datanode,各自的权限,各自的副本个数等 (可以通过查看Fsimage保存的内容可以看到上述信息)。因此,利用内存+磁盘的方式,内存中的元数据可以快速响应客户端的用户请求,而映射到磁盘中的元数据Fsimage可以实现安全性,防止数据的丢失。
而接下来的一个新问题是:磁盘和内存中的元数据如何进行划分。
即两个数据一摸一样,还是两个数据合并到一起才是一份完整的数据呢?
- 一模一样:client如果对元数据进行增删改操作,需要保证两个数据的一致。FsImage文件操作起来效率也不高,因为FsImage存储在磁盘中,对磁盘中的内容进行写入势必会增加很多的IO操作,也要占用CPU。此时,相当于每一次增删改操作,都需要对两个文件同时进行修改。
- 两个合并=完整数据:由于如果要将操作写入磁盘会降低运行效率。所以想法就是对于增删改操作,只有内存中的元数据进行响应,而不直接进行磁盘IO读写。此时,为了保证两个数据的一致性

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

2214

被折叠的 条评论
为什么被折叠?



