NameNode管理元数据的机制

NameNode的职责:负责客户端请求的响应和元数据的管理(查询、修改)。这篇博客主要说说NameNode元数据的管理。

元数据的存储机制

 

  1. 内存保存一份
  2. 操作日志文件
  3. image镜像文件

更新流程

  1. 在内存中更新
  2. 记录操作日志
  3. 定期把操作日志和映像(fsimage)进行合并(check point),这项任务非常繁重,交给secondary namenode来做。


check point流程


check point的触发条件:按照时间或者按照日志中的操作条数,原理图如下

NameNode管理元数据的机制

  1. secondary namenode经常发送请求查询namenode是否满足check。
  2. 如果条件满足,secondary node 请求进行check point。
  3. namenode滚动当前正在写的edits,将刚刚滚动掉的和之前的edits文件一起进行合并。
  4. secondary namenode下载edits文件,然后把这些edits文件和fsimage文件在内存中进行合并,然后写入到硬盘。
  5. 上传新的fsimage到NameNode。
  6. NameNode把旧的fsimage用新的覆盖掉。


Secondary NameNode的作用


元数据的一个备份。如果NameNode的工作目录掉了,可以把Secondary NameNode的工作目录拷贝回去,可以恢复绝大部分数据。想要完全恢复可以让NameNode的工作目录配置在多个磁盘(文件夹)上。

hdfs-site.xml

<property>
    <name>dfs.name.dir</name>
    <value>/disk1/name1,/disk2/name2</value>
</property>