浅析Hadoop Secondary NameNode,CheckPoint Node,Backup Node
//李智慧
Secondary NameNode
Hadoop SecondaryNameNode并不是Hadoop 第二个NameNode,它不提供NameNode服务,而仅仅是NameNode的一个工具。这个工具帮助NameNode管理Metadata数据。
NameNode的HDFS文件信息(即Metadata)记录在内存中,client的文件写操作直接修改内存中的Metadata,同时也会记录到硬盘的Edits文件,这是一个Log文件。
当NameNode重启的时候,会合并硬盘上的fsimage文件和edits文件,得到完整的Metadata信息。这个fsimage文件可以看做是一个过时的Metadata信息文件(最新的Metadata修改信息在edits文件中)。
如果edits文件非常大,那么这个合并过程就非常慢,导致HDFS长时间无法启动,如果定时将edits文件合并到fsimage,那么重启NameNode就可以非常快。
SecondaryNameNode就做这个合并的工作。
SecondaryNameNode运行原理时序图
* 如果NameNode崩溃并且硬盘损坏,可以从SecondaryNameNode拷贝fsimage文件,但是SecondaryNameNode最后一次合并之后的更新操作将会丢失。
CheckPoint Node
可能是由于Secondary NameNode这个名字给人带来的混淆,Hadoop后面的版本(1.0.4 )建议不要使用Secondary NameNode,而使用CheckPoint Node。
Checkpoint Node和Secondary NameNode的作用以及配置完全相同,只是启动命令不同 bin/hdfs namenode -checkpoint
Backup Node
Secondary NameNode和CheckPoint Node都只是提供一个fsimage更新和检查点备份,并不提供NameNode 服务,当NameNode宕机的时候就会引起HDFS集群不可用。
Backup Node提供一个真正意义上的备用节点,NameNode所有写操作都会实时将更新Log(edits文件数据)发送给Backup Node,Backup Node据此更新本机fsimage和edits文件,并在内存中维护和NameNode 一样的Matadata数据。