hdfs元数据管理机制(重要)
什么是元数据?
元数据是存储数据的数据
1.存储文件自身的属性
文件名称\权限\大小\修改时间
2.存储文件块的位置隐射信息
记录文件块和node之间的映射信息
元数据的存储形式
安存储形式分为
- 内存元数据
为了保证用户操作元数据交互高效,延迟低,NameNode把所有的元数据都存储在内存中,我们叫做内存元数据。内存中的元数据是最完整的,包括文件自身属性信息、文件块位置映射信息。
-
元数据文件
fsimage内存镜像文件
- fsimage内存镜像文件: 是内存元数据的一个持久化的检查点。但是fsimage中仅包含Hadoop文件系统中文件自身属性相关的元数据信息,但不包含文件块位置的信息。
- 文件块位置信息只存储在内存中,是由datanode启动加入集群的时候,向namenode进行数据块的汇报得到的,并且后续间断指定时间进行数据块报告。
- 持久化的动作是数据从内存到磁盘的IO过程。会对namenode正常服务造成一定的影响,不能频繁的进行持久化。
Edits log编辑日志
- 为了避免两次持久化之间数据丢失的问题,又设计了Edits log编辑日志文件。文件中记录的是HDFS所有更改操作(文件创建,删除或修改)的日志,文件系统客户端执行的更改操作首先会被记录到edits文件中。
Snipaste_2022-04-29_15-36-33.png
1.元数据怎样存储
为了方便用户快速访问,元数据的信息存储在nn的内存当中
2.为了防止数据丢失
nn定时将内存的元数据持久化,持久化生成一个文件fsimage(内存镜像文件)
3.为了避免两次持久化之间数据丢失
nn会通过日志记录文件的写(事务性)操作存放在 edits.log 日志文件
snn辅助角色职责和checkpoint机制流程(重要)
snn合并元数据过程(checkpoint).pngSecondaryNameNode职责
帮助nn 把最近的edit.log日志文件合并到fismage文件当中,清空一下日志 得到一个新的fsimage文件
snn checkpoint机制
1,首先建立一个eits.new用来记录后续执行的日志文件
2,snn拉取之前的eits 日志文件和fsimage文件
3,snn 把拉取的eits日志和fsimage文件加载到内存当中并做合并操作
4,把合并完的内容存储到fsimage.ckpt中
5,把fsimage.ckpt 跟之前的fsimage 做一个校检,并替换掉fsimage
6.edis_new -> edis SecondaryNameNode->fsimage
ssn和nn 的区别
ssn只是nn的辅助角色,只是帮助nn合并数据文件,snn无法顶替nn主角色的功能
注意 nn 和snn 在执行时 都会占用较大内存
在部署时要有意避免他俩在同一个主机
网友评论