Hadoop - HDFS Namenode 元数据 - FSImage

标签 hadoop metadata hdfs

我知道在主节点中我们有名称节点,它在两个文件中维护元数据。一个是 FSImage,另一个是编辑日志。
所以这个FSImage是在hadoop系统启动时初始加载的,这个FSImage包含了集群的目录结构和存储的数据。然后,对于每个发生的事务,编辑日志文件都会更新。

我的问题如下:

  1. 这些只是包含所有信息(FSImage 和 EditLogs)的文件还是还有更多?
  2. 这是否意味着 FSImage 文件只会写入一次?
  3. 如果是,那么为什么它总是被复制到辅助名称节点?这不是增加了需要完成的任务吗?
  4. 假设我在hdfs中添加或删除了一个新文件;那么这个FSImage不就更新了吗?

最佳答案

要理解这一点,我们必须在 Hadoop 运行时详细、一步一步地过一遍

  1. 加载 FSImage 后的 Namenode 拥有数据在内存中存储位置的完整快照。

  2. 交易正在进行,信息存储在编辑日志中。

  3. 检查点节点/辅助名称节点会定期(默认每小时)检索日志,并将其与最新的 fsimage 合并,并将数据保留为检查点。 此时,nn 的内存中已经有了镜像,编辑日志被清空,最新的检查点作为镜像存储在 snn/cn 上。

回答你的问题。

  1. 是的,只有两个文件

  2. SNN/CN 上的 fsimage 将定期更新。当导入检查点时,NN 上的 fsimage 将更新。至少重新启动后应该会发生这种情况。

  3. 将 editlog 合并到 fsimage 是一项成本高昂的操作。它需要名称节点进入安全模式才能合并数据。在这样的环境下这是不可能的

  4. 删除和写入一样都是日志,因此它会存储在编辑日志中

关于Hadoop - HDFS Namenode 元数据 - FSImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26121617/

相关文章:

hadoop - Elasticsearch 和 Hadoop?

hadoop - 为什么我无法连接到 yarn ?

java - 哪些文件系统支持 Java UserDefinedFileAttributeView?

c# - MEF GetExports<T, TMetaDataView> 不返回任何内容,AllowMultiple = True

hadoop - HDFS 中的故障类型有哪些?

hadoop - 清除hdfs中的/tmp目录

Hadoop YARN概念

performance - Accumulo 高速摄取选项

hadoop - 在hadoop中链接mapreduce作业

php - 将MySql表数据选入数组