Hadoop中SecondaryNameNode工作机制

首先来看一下HDFS的结构,如下图:

如上图,在HDFS架构中,NameNode是职责是管理元数据信息,DataNode的职责是负责数据存储,那么SecondaryNameNode的作用是什么呢?

其实SecondaryNameNode是hadoop1.x中HDFS HA的一个解决方案,下面我们来看一下SecondaryNameNode工作的流程,如下图:

 

1.NameNode管理着元数据信息,元数据信息会定期的刷到磁盘中,其中的两个文件是edits即操作日志文件和fsimage即元数据镜像文件,新的操作日志不会立即与fsimage进行合并,也不会刷到NameNode的内存中,而是会先写到edits中(因为合并需要消耗大量的资源)。当edits文件的大小达到一个临界值(默认是64MB)或者间隔一段时间(默认是1小时)的时候checkpoint会触发SecondaryNameNode进行工作。

2.当触发一个checkpoint操作时,NameNode会生成一个新的edits即上图中的edits.new文件,同时SecondaryNameNode会将edits文件和fsimage复制到本地。

3.SecondaryNameNode将本地的fsimage文件加载到内存中,然后再与edits文件进行合并生成一个新的fsimage文件即上图中的Fsimage.ckpt文件。

4.SecondaryNameNode将新生成的Fsimage.ckpt文件复制到NameNode节点。

5.在NameNode结点的edits.new文件和Fsimage.ckpt文件会替换掉原来的edits文件和fsimage文件,至此,刚好是一个轮回即在NameNode中又是edits和fsimage文件了。

6.等待下一次checkpoint触发SecondaryNameNode进行工作,一直这样循环操作。

 

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

 

[html] view plain copy
 
  1. <property>  
  2.   <name>fs.checkpoint.period</name>  
  3.   <value>3600</value>  
  4.   <description>The number of seconds between two periodic checkpoints.  
  5.   </description>  
  6. </property>  
  7.   
  8. <property>  
  9.   <name>fs.checkpoint.size</name>  
  10.   <value>67108864</value>  
  11.   <description>The size of the current edit log (in bytes) that triggers  
  12.        a periodic checkpoint even if the fs.checkpoint.period hasn't expired.  
  13.   </description>  
  14. </property>  
posted @ 2016-01-31 18:22 importdate 阅读(...) 评论(...) 编辑 收藏