NameNode管理元数据的机制
NameNode的职责:负责客户端请求的响应和元数据的管理(查询、修改)。这篇博客主要说说NameNode元数据的管理。
元数据的存储机制
- 内存保存一份
- 操作日志文件
- image镜像文件
更新流程
- 在内存中更新
- 记录操作日志
- 定期把操作日志和映像(fsimage)进行合并(check point),这项任务非常繁重,交给secondary namenode来做。
check point流程
check point的触发条件:按照时间或者按照日志中的操作条数,原理图如下
- secondary namenode经常发送请求查询namenode是否满足check。
- 如果条件满足,secondary node 请求进行check point。
- namenode滚动当前正在写的edits,将刚刚滚动掉的和之前的edits文件一起进行合并。
- secondary namenode下载edits文件,然后把这些edits文件和fsimage文件在内存中进行合并,然后写入到硬盘。
- 上传新的fsimage到NameNode。
- NameNode把旧的fsimage用新的覆盖掉。
Secondary NameNode的作用
元数据的一个备份。如果NameNode的工作目录掉了,可以把Secondary NameNode的工作目录拷贝回去,可以恢复绝大部分数据。想要完全恢复可以让NameNode的工作目录配置在多个磁盘(文件夹)上。
hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>/disk1/name1,/disk2/name2</value>
</property>