NameNode 是存储整个文件系统的源数据 (文件块目录)
数据存储在 ->缓存
->本地磁盘
->fsimage(镜像文件:HDFS文件系统存于硬盘中的元数据检查点,里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息)
->edits(编辑日志文件:最后一次检查点之后所有针对HDFS文件系统的操作,例如:增加文件 删除目录等等操作)
第一次启动HDFS
0->format(格式化:目的就是生成fsimage)
1->生成fsimage(镜像文件)
2->start NameNode(读取fsimage 拉取文件系统 目录和文件的序列化信息)
3->start DataNode
3.1-> 向NameNode注册,让NameNode管理
3.2->生成文件块的日志(block report)
4-> 操作 create dir xxx;
put files xxx
delete file xxx -------------> (这些操作都写到edits文件当中 就是因为这些都是操作日志)
===============================================================
第二次启动HDFS
1->start NameNode
1.1->read fsimage(读取镜像文件)
1.2->read edits(读取操作日志)
1.3->write new fsimage(生成新的镜像文件)
1.4-> new edits[null](生成新的操作日志 但是这个操作日志是空的)
==============================================================
我们启动的时候还有 SecondaryNameNode
SecondaryNameNode :辅助NameNode
定时的把本地磁盘的 fsimage和edits文件进行合并成新的 fsimage
合并流程
->从NameNode 目录下 复制fsimage 和 edits文件到 SecondaryNameNode 目录下
->在NameNode 目录下生成新的 edits文件
->在SecondaryNameNode目录下 把 拷贝过来的fsimage和edits文件进行合并生成 fsimage.ckpt文件
->把fsimage.ckpt文件复制到 NameNode下面
->删除NameNode下面的fsimage文件
->修改fsimage.ckpt文件名=>fsimage文件