【问题标题】:name node Vs secondary name node名称节点与辅助名称节点
【发布时间】:2013-11-27 00:55:59
【问题描述】:

Hadoop 具有一致性和分区容错性,即它属于 CAP 定理的 CP 类别。

Hadoop 不可用,因为所有节点都依赖于名称节点。如果名称节点下降,集群就会下降。

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

使hadoop不可用的name node和secondary name node之间的主要区别是什么。

提前致谢。

【问题讨论】:

    标签: hadoop hdfs hadoop2 high-availability


    【解决方案1】:

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

    secondarynamenode 作业不是 name node 的从属,而只是定期读取文件系统更改日志并将其应用到 f​​simage 文件中,从而使其保持最新状态。这允许namenode下次启动更快。

    不幸的是,secondarynamenode 服务不是备用的辅助 namenode,尽管它的名称。具体来说,它不为 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

    【讨论】:

    • 嗨,感谢精彩的视频,我有最后一个疑问-> 辅助名称节点通过将编辑日志数据合并到 fsimage 来创建定期检查点。前几天我正在阅读有关在不同机器上运行的 HDFS 中的一些 ckechpoint 节点,阅读后我了解到辅助名称节点和检查点节点的功能非常相似,那么是什么使检查点节点不同于辅助名称节点。它们是一样的吗?
    • 检查点节点是替代辅助名称节点的新服务(Hadoop 0.21 后)。看HADOOP-4539上的cmets
    【解决方案2】:

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

    Secondary Namenode 现在是可选的,Standby Namenode 已用于故障转移过程。

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

    HDFS High availability 有两个选项:NFS 和 Quorum Journal Manager,但 Quorum Journal Manager 是首选选项。

    看看 Apache documentation

    来自幻灯片 8 来自:http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen

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

    如果发生故障转移,备用节点将确保它已从 JounalNodes 读取所有编辑,然后再将其提升为活动状态。这可确保在发生故障转移之前完全同步命名空间状态。

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

    How does Hadoop Namenode failover process works?

    关于您对 Hadoop CAP 理论的疑问:

    1. 可以强一致
    2. HDFS 几乎是高度可用的,除非你遇到了一些坏运气 (如果一个块的三个副本都down了,你将无法获取数据)
    3. 支持数据分区

    【讨论】:

      【解决方案3】:

      Name Node 是一个主节点,其中所有的元数据都会定期存储到 fsimage 和 editlog 文件中。但是,当名称节点关闭时,辅助节点将在线,但该节点只有对 fsimage 和 editlog 文件的读取权限,而没有对它们的写入权限。所有辅助节点操作都将存储到 temp 文件夹。当 name node 恢复在线时,这个临时文件夹将被复制到 name node 并且 namenode 将更新 fsimage 和 editlog 文件。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          如果我用简单的方式来解释,假设 Name Node 是男性(工作/生活),辅助 Name Node 是 ATM 机(存储/数据存储)
          因此,所有功能仅由 NN 或 men 执行,但如果它出现故障/失败,则 SNN 将毫无用处,它不起作用,但稍后可用于恢复您的数据或日志

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

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

              基本上,辅助namenode是namenode的助手,并为namenode执行管理功能。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-04-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多