元数据管理依靠的就是Secondary namenode的工作机制
首先namenode对数据的管理采用三种存储形式:
内存元数据(NameSystem)
磁盘元数据镜像文件(fsimage)
数据操作日志文件(edits)
要想了解hadoop如何管理元数据的,就要先知道fsimage和edits是什么。
(1)、fsimage文件其实是Hadoop文件系统元数据的一个永久性的检查点,包含Hadoop文件系统中的所有目录和文件idnode的序列化信息;对于文件来说,包含的信息有修改时间、访问时间、块大小和组成一个文件块信息等;而对于目录来说,包含的信息主要有修改时间、访问控制权限等信息。
(2)、edits文件存放的是Hadoop文件系统的所有更新操作的路径,文件系统客户端执行的所以写操作首先会被记录到edits文件中。对hdfs进行的各种更新操作进行记录,hdfs客户端执行所有写操作都会被记录
fsimage和edits文件都是经过序列化的,在NameNode启动的时候,它会将fsimage文件中的内容加载到内存中,之后再执行edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
工作步骤:
一,namenode
1.元数据有更新请求,首先会加载到内存,然后记录到操作日志edits
二、namenode和Secondary namenode
1.Secondary namenode会定时(默认情况下30分钟)或者edits中的数量,并向namenode发出checkpiont
2.namenode检查触发条件,满足条件时(有数据),会向Secondary namenode做出请求
3 namenode中的edits.inprogress会立马滚动一次,将正在写的数据生成为edits
4.Secondary namenode会将namenode上的fsimage和若干个edits下载到自己节点上
5.将fsimage和edits合并成为一个新的文件fsimage
6.会进行一个dump操作(清道:把内存写进磁盘中),生成新的fsimage文件
7.把生成的新的文件请求上传到namenode,nomenode会将本地fsimage进行冲命名
8.合并更新之前的edits文件在下载完以后,系统会自动清除
因为图片的原因我又画了一遍,就一起上传看看。画的不好请见谅