name node Vs secondary name node

时间:2013-11-14 05:47:06

标签: hadoop hdfs hadoop2 high-availability

Hadoop是一致的和分区容忍的,即它属于CAP theoram的CP类别。

Hadoop不可用,因为所有节点都依赖于名称节点。如果名称节点落下,则群集将关闭。

但考虑到HDFS集群有一个辅助名称节点,为什么我们不能将hadoop称为可用。如果名称节点已关闭,则辅助名称节点可用于写入。

使hadoop不可用的名称节点和辅助名称节点之间的主要区别是什么。

提前致谢。

7 个答案:

答案 0 :(得分:60)

namenode将HDFS文件系统信息存储在名为fsimage的文件中。对文件系统的更新(添加/删除块)不是更新fsimage文件,而是记录到文件中,因此I / O仅快速附加流而不是随机文件写入。在进行恢复时,namenode会读取fsimage,然后应用日志文件中的所有更改,以使文件系统状态在内存中保持最新状态。这个过程需要时间。

secondarynamenode作业不是名称节点的辅助作业,而只是定期读取文件系统更改日志并将其应用到fsimage文件中,从而使其更新。这允许namenode下次启动得更快。

不幸的是,secondarynamenode服务不是备用的辅助名称节点,尽管它的名称。具体来说,它不为namenode提供HA。这很好地说明了here

Understanding NameNode Startup Operations in HDFS

请注意,更新的发行版(当前的Hadoop 2.6)引入了namenode High Availability using NFS (shared storage)和/或namenode High Availability using Quorum Journal Manager

答案 1 :(得分:3)

多年来情况发生了变化,尤其是 Hadoop 2.x 。现在,Namenode具有故障转移功能。

辅助Namenode 现在是可选的& 备用Namenode 已用于故障转移过程。

备用NameNode 将与 Active NameNode 所做的所有文件系统更改保持同步。

HDFS High availability有两种选择: NFS 和Quorum 期刊管理器,但Quorum期刊管理器是首选选项。

查看Apache documentation

从幻灯片8开始:http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen

当Active节点执行任何名称空间修改时,它会将修改记录持久地记录到大多数这些JN中。 Standby节点从JN读取这些编辑并应用于自己的名称空间。

如果发生故障转移,Standby将确保在将自身升级为Active状态之前已读取JounalNodes的所有编辑内容。这可确保在发生故障转移之前完全同步命名空间状态。

enter image description here

查看相关SE问题中的故障转移过程:

How does Hadoop Namenode failover process works?

关于您对Hadoop的CAP理论的查询:

  1. 可以很强一致
  2. 除非遇到运气不好,否则HDFS几乎可用 (如果块的所有三个副本都已关闭,则无法获取数据)
  3. 支持数据分区

答案 2 :(得分:1)

名称节点是一个主节点,其中所有元数据都会定期存储到fsimage和editlog文件中。但是,当名称节点向下的辅助节点将在线时,但此节点只具有对fsimage和editlog文件的读访问权限,并且没有对它们的写访问权限。所有辅助节点操作都将存储到临时文件夹中。当name节点返回online时,这个temp文件夹将被复制到name节点,namenode将更新fsimage和editlog文件。

答案 3 :(得分:0)

即使在HDFS高可用性中,有两个NameNode而不是一个NameNode和一个SecondaryNameNode,严格的CAP意义上也没有可用性。它仅适用于NameNode组件,即使网络分区将客户端与两个NameNode分开,群集也实际上不可用。

答案 4 :(得分:0)

如果我以简单的方式解释它,假设名称节点为人(工作/现场),辅助名称节点为ATM机(存储/数据存储)
   因此所有的功能只由NN或男人执行,但如果它发生故障或失败,那么SNN将无用它不起作用但后来它可用于恢复您的数据或日志

答案 5 :(得分:0)

当NameNode启动时,它会加载FSImage并重播Edit Logs以创建最新更新的命名空间。如果编辑日志文件的大小很大,则此过程可能需要很长时间,因此会增加启动时间。 Secondary Name Node的工作是定期检查编辑日志和重放以创建更新的FSImage并存储在持久存储中。当Name Node启动时,它不需要重播编辑日志来创建更新的FSImage,它使用由辅助名称节点创建的FSImage。

答案 6 :(得分:0)

namenode是一个主节点,它包含fsimage方面的元数据,还包含编辑日志。编辑日志包含namenode命名空间中最近添加/删除的块信息。 fsimage文件包含永久存储中整个hadoop系统的元数据。每次我们需要在fsimage中永久地进行更改时,我们需要重新启动namenode,以便可以在namenode上编写编辑日志信息,但这需要花费大量时间。

辅助名称节点用于使fsimage更新。辅助名称节点将访问编辑日志并永久更改fsimage,以便下次namenode可以更快地启动。

辅助namenode基本上是namenode的帮助器,并为namenode执行内务处理功能。