【问题标题】:Where does Name node store fsImage and edit Log?Name节点存储fsImage和编辑Log在哪里?
【发布时间】:2014-04-20 12:10:45
【问题描述】:

我是一名 java 程序员,正在学习 Hadoop。 我读到 HDFS 中的 Name 节点将其信息存储到两个文件中,即 fsImage 和 editLog。在启动的情况下,它会从磁盘读取这些数据并执行检查点操作。

但在很多地方,我也读到 Name Node 将数据存储在 RAM 中,这就是为什么 apache 建议使用具有高 RAM 的机器作为 Name Node 服务器。

请赐教。 它存储在 RAM 中的哪些数据以及存储 fsImage 和编辑 Log 的位置?

对不起,如果我问了什么明显的问题。

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    让我先回答

    它在 RAM 中存储什么数据以及它在哪里存储 fsImage 和编辑日志?

    在 RAM 中——文件到块和块到数据节点的映射。 在持久化存储中(包括编辑日志和 fsimage)——文件相关的元数据(权限、名称等)

    关于 fsimage 和 editlog 的存储位置@mashuai 的回答很到位。

    有关更详细的讨论,您可以阅读this

    【讨论】:

      【解决方案2】:

      当namenode启动时,它从持久存储(磁盘)加载fsimage,它的位置由hdfs-site.xml中的属性dfs.name.dir(hadoop-1.x)或dfs.namenode.name.dir(hadoop-2.x)指定。 Fsimage 被加载到主内存中。此外,正如您在 namenode 启动期间询问的那样,它执行检查点操作。 Namenode 将 Fsimage 保存在 RAM 中,以便快速处理请求。

      除了初始检查点外,后续检查点可以通过调整hdfs-site.xml中的以下参数来控制。

      dfs.namenode.checkpoint.period       # in second 3600 Secs by default
      dfs.namenode.checkpoint.txns         # No of namenode transactions
      

      【讨论】:

        【解决方案3】:

        它将 fsimage 和 editlog 存储在 dfs.name.dir 中,它在 hdfs-site.xml 中。启动集群时,NameNode会将fsimage和editlog加载到内存中。

        【讨论】:

          【解决方案4】:

          当名称节点启动时,它会进入安全模式。它从持久存储加载 FSImage 并重播编辑日志以创建 HDFS 存储的更新视图(文件到块映射)。然后它将这个更新的 FSImage 写入持久存储。现在名称节点等待来自数据节点的块报告。从块报告它创建块到数据节点映射。当名称节点收到一定阈值的块报告时,它会退出安全模式,并且名称节点可以开始服务客户端请求。每当客户端对元数据进行任何更改时,NameNode(NN) 首先在编辑日志段中写入随着事务 ID 增加的内容更改到持久存储(硬盘)。然后它会更新其 RAM 中的 FSImage。

          【讨论】:

          • 请先看这个how-to-answer
          • 很好的解释 Gyanprakas。如果可以的话,您能否提供以上信息的参考?
          【解决方案5】:

          Fsimage 和 editlog 存储在 dfs.name.dir 中,它在 hdfs-site.xml 中。 在集群启动期间,NameNode 会将 fsimage 和 editlog 加载到内存(RAM)中。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-27
            • 2012-03-27
            • 1970-01-01
            • 2015-08-18
            • 1970-01-01
            • 2016-11-30
            • 1970-01-01
            相关资源
            最近更新 更多