002-NameNode 和 Secondary NameNode

NameNode 和 Secondary NameNode

NameNode:主要是用来保存 HDFS 的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。
 
Secondary NameNode:也是 NameNode。也是用来保存元数据信息的。Secondary NameNode 的作用是定期合并 fsimage 和 edits log 文件,并在一个限制内保持 edits log 大小。同时将最新的 fsimage 拷贝回 NameNode,以保证 NameNode 重启后 HDFS 的状态是最新状态。
 
fsimage:保存的是 namespace 和 发生变动的 最近的一次检查点(最近一次发生变动的节点)。
edit log:改动日志文件,存储系统变动的元信息。


NameNode 启动时会从 fsimage 读取 HDFS 的状态进行启动,并将 edit log 合并到 fsimage,然后将 HDFS 的新状态写到 fsimage,并开始正常的操作一个空的 edit log 文件。
 
由于 NameNode 启动时才会合并 fsimage 和 edit log,所以 edits log 文件在繁忙的集群上可能会变得非常大。这将导致 NameNode 的下一次重新启动需要更长的时间。所以,在这种情况下将面临如下问题:
 1. edit logs文件会变的很大,怎么去管理这个文件是一个挑战。
 2. NameNode的重启会花费很长时间,因为在edit logs中有很多改动,要合并到fsimage文件上。
 3. 如果NameNode挂掉了,那我们就丢失了很多改动因为此时的fsimage文件非常旧。
为了解决这个问题,于是就有了 Secondary NameNode:
 secondary NameNode会定期合并 fsimage 和 edits log 文件,并在一个限制内保持 edits log 大小。
 secondary NameNode 通常在不同的机器上运行,而不是主 NameNode,因为它的内存需求与主 NameNode 是相同的。

NameNode

Secondary NameNode

参考地址:https://blog.csdn.net/WYpersist/article/details/79840776

猜你喜欢

转载自blog.csdn.net/weixin_42725107/article/details/82427598