SecondaryNameNode 合并元信息的过程_xml

  • NameNode 管理元数据信息,元数据信息会定期的刷到磁盘中,其中的两个文件是edits(操作日志文件) 和fsimage(元数据镜像文件),新的操作日志不会立即和fsimage 进行合并,也不会刷到NameNode 的内存中,会先写到edits 中。当edits 文件的大小达到临界值(默认64M)或间隔时长(默认1h)的时候,checkpoint 会触发SecondaryNameNode 进行工作
  • 当触发一个checkpoint 操作时,NameNode 会生成一个新的edits(edits.new 文件),同时SecondaryNameNode会将edits 文件和fsimage 镜像文件下载到本地
  • SecondaryNameNode 将本地的fsimage 文件加载到内存中,然后再与edits 文件合并生成一个新的fsimage 文件 (fsimage.chpt)
  • SecondaryNameNode将新生成的fsimage.chpt 文件上传到NameNode 节点
  • 在NameNode 节点的edits.new 文件和fsimage.chpt 文件会替换原来的edits 文件和fsimage 文件,至此,一个轮回。
  • 等待下一次checkpoint 触发secondaryNameNode ,一直循环操作

注:checkpoint 触发的条件可以在core-site.xml 文件中配置

<property>  
  <name>fs.checkpoint.period</name>  
  <value>3600</value>  
  <description>The number of seconds between two periodic checkpoints.  
  </description>  
</property>  
  
<property>  
  <name>fs.checkpoint.size</name>  
  <value>67108864</value>  
  <description>The size of the current edit log (in bytes) that triggers  
       a periodic checkpoint even if the fs.checkpoint.period hasn't expired.  
  </description>  
</property>