SecondaryNamenode工作机制

NameNode的作用:主要用来保存HDFS的元数据信息,比如命名空间信息、块信息等。
为什么会产生SecondaryNamenode?
由于Namenode工作机制的不足,具体原因是:namenode的元数据是存储在内存中的,如果存储在磁盘,那么读取的效率会非常低,所以是存储在内存中的,但是这样就产生了一个问题---断电丢失数据的问题。所以就引入了镜像文件Fsimage用来备份元数据,断电重启后就可以从fsimage恢复数据,但是这样就会又产生一个新的问题-----在更新元数据的同时更新fsimage的效率就会很低,还会丢失部分数据。所以又引入了操作日志Edits记录操作,edits会和fsimage合并,这样就保证了fsimage数据的完整,NameNode重启后直接加载fsimage就可以了。但是这样还会产生一个新的问题----随着操作越来越多,edits会越来越大,每次合并fsimage的时间会越来越久,导致namenode加载fsimage的时间也会越来越久。因此就引入了SecondaryNamenode。


无标题.png
SecondaryNamenode工作机制:

1、SecondaryNamenode请求NameNode是否需要CheckPoint(条件是时间或者Edits满了)
2、SecondaryNamenode请求执行滚动CheckPoint
3、NameNode滚动Edits,并生成一个edits.new
4、SecondaryNamenode将NameNode的Edits和Fsimage拷贝过来
5、SecondaryNamenode将拷贝过来的操作日志和镜像加载到内存,合并生成新的Fsimage.chkpoint
6、将Fsimage.chkpoint拷贝到NameNode,替换掉原来的Fsimage
7、NameNode将Fsimage.chkpoint和edits.new分别重命名为Fsimage和Edits,CheckPoint过程结束

你可能感兴趣的:(SecondaryNamenode工作机制)