Secondary NameNode作用

在讲解Secondary NameNode作用之前,先看下没有Secondary NameNode存在的问题。

1.没有Secondary NameNode之前

NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。主要通过以下两种文件来管理。

fsimage - 它是在NameNode启动时对整个文件系统的快照
edit logs - 它是在NameNode启动后,对文件系统的改动序列

Secondary NameNode作用_第1张图片

fsimage是启动时的快照,在启动之后,文件系统的修改保存在edit log中。在下一次重启的时候,合并edit logs到fsimage文件中,从而得到一个文件系统的最新快照。但是这会带来一些问题:

  1. 如果NameNode长期不重启,edit logs文件会变的很大,管理文件会麻烦
  2. NameNode的重启可能会花费很长时间,因为edit logs很大

出了问题怎么办:
1. 自己解决:namenode一段时间对edit logs合并到fsimage中,但是这会消耗大量的CPU资源,而namenode需要管理所有的datanode,做合并操作还影响性能
2. 求助他人:求助Secondary NameNode

2.有Secondary NameNode之后

Secondary NameNode作用_第2张图片

上述问题的解决方案就是运行Secondary NameNode,合并NameNode的edit logs到fsimage文件中。Secondary NameNode所做的不过是来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份

首先,它定时到NameNode去获取edit logs,并更新到fsimage上(Secondary NameNode)。更新成功后将其拷贝回NameNode中。NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。

Secondary NameNode的整个目的是在HDFS中提供一个检查点。它只是NameNode的一个助手节点。这也是它在社区内被认为是检查点节点的原因。

你可能感兴趣的:(Java,Hadoop)