我了解在主节点中,我们有一个名称节点,该节点在两个文件中维护一个元数据。一个是FSImage,另一个是编辑日志。
因此,当启动hadoop系统时,将首先加载此FSImage,并且此FSImage包含集群的目录结构和所存储的数据。然后,对于每个发生的事务,更新编辑日志文件。

我的问题如下:

  • 这些仅是包含所有信息(FSImage和EditLogs)的文件吗?
  • 这是否意味着FSImage文件将只写入一次?
  • 如果是,那么为什么总是将其复制到“辅助名称”节点?是不是增加了要完成的任务?
  • 假设我在hdfs中添加或删除了一个新文件;那么这个FSImage不会更新吗?
  • 最佳答案

    要了解这一点,我们必须在Hadoop运行时逐步详细地进行介绍。

  • 加载FSImage之后的Namenode具有内存中数据存储位置的完整快照。
  • 事务即将到来,信息存储在编辑日志中。
  • 定期(默认为每小时)检查点节点/辅助名称节点,检索日志,并将其与最新的fsimage合并,并将数据保留为检查点。
    此时,nn在内存中有图像,清空编辑日志,最新的检查点作为图像存储在snn / cn上。

  • 回答您的问题。
  • 是的,只有两个文件
  • SNN / CN上的fsimage将定期更新。导入检查点时,将更新NN上的fsimage。这至少应该在重新启动时发生。
  • 将editlog合并到fsimage是一项昂贵的操作。为了合并数据,它需要在namenode中进入安全模式。在这样的环境中这是不可能的
  • 删除和写入一样是日志,因此它存储在编辑日志
  • 关于hadoop - Hadoop-HDFS Namenode元数据-FSImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26121617/

    10-10 12:44