Secondary NameNode:
作用:用于间歇性将NameNode EditLog记录的变化更新到Fsimage,从而限制EditLog文件的大小并保证NameNode的启动恢复时间在一定范围内(也就是不至于太久)。
前边的两篇关于HDFS的文章中提到两个与NameNode相关的两个文件Fsimage和EditLog文件
NameNode在启动时会读Fsimage加载HDFS所有DataNode的元数据信息以恢复HDFS的状态,并且需要将EditLog记录的修改应用于HDFS的状态。然后再将新的HDFS的状态写入到Fsimage文件。
可以看到,这一过程只在NameNode启动的时候进行,那么就会有如下问题:
- 如果集群繁忙,那么随着时间推移,EditLog文件会非常大。
- 如果EditLog文件过大,那么NameNode启动时间会很长。
所以可以看到,Secondary NameNode用于克服以上两个问题。
上边提到,Secondary NameNode间歇性的工作,那么这个间歇时间怎么确定,由以下两个参数确定,其实在前边的文章中已经写过
- dfs.namenode.checkpoint.period 用于配置每隔多久进行一次(默认值1小时&#x