【发布时间】:2014-01-08 19:23:55
【问题描述】:
如果是“名称节点”, 什么存储在主存储器中,什么存储在辅助存储器(硬盘)中。
我们所说的“文件到块映射”是什么意思?
究竟什么是 fsimage 和编辑日志?
【问题讨论】:
标签: hadoop mapreduce hdfs bigdata
如果是“名称节点”, 什么存储在主存储器中,什么存储在辅助存储器(硬盘)中。
我们所说的“文件到块映射”是什么意思?
究竟什么是 fsimage 和编辑日志?
【问题讨论】:
标签: hadoop mapreduce hdfs bigdata
在“名称节点”的情况下,什么存储在主内存中,什么得到 存储在辅助存储器(硬盘)中。
文件到块的映射、块在数据节点上的位置、活动数据节点、一堆其他元数据都存储在NameNode的内存中。当您查看 NameNode 状态网站时,几乎所有这些信息都存储在内存中的某个位置。
磁盘上存储的唯一内容是 fsimage、编辑日志和状态日志。有趣的是,NameNode 从不真正使用磁盘上的这些文件,除非它启动时。 fsimage 和 edits 文件的存在几乎只是为了在 NameNode 需要停止或崩溃时恢复它。
我们所说的“文件到块映射”是什么意思?
当一个文件被放入 HDFS 时,它被分割成块(可配置的大小)。假设您有一个名为“file.txt”的文件,大小为 201MB,块大小为 64MB。您最终将得到三个 64MB 块和一个 9MB 块 (64+64+64+9 = 201)。 NameNode 跟踪 HDFS 中的“file.txt”映射到这四个块的事实。 DataNodes 存储块,而不是文件,因此映射对于了解您的数据在哪里以及您的数据是什么很重要。
究竟什么是 fsimage 和编辑日志?
NameNode 内存的最近检查点存储在fsimage 中。来自该检查点的 NameNode 的状态(即文件->块映射、文件属性等)可以从此文件中恢复。
edits 文件是自上次检查点以来fsimage 的所有新更新。这些是诸如文件被删除或添加之类的东西。如果您的 NameNode 出现故障,这很重要,因为它具有自上次存储在 fsimage 中的最后一个检查点以来的最新更改。 NameNode 出现的方式是将fsimage 物化到内存中,然后按照在edits 文件中看到它们的顺序应用edits。
fsimage 和 edits 以它们的方式存在,因为每次执行 HDFS 操作时编辑可能很大的 fsimage 文件对系统来说可能很困难。相反,edits 文件只是简单地附加到。但是,对于 NameNode 的启动和数据存储的原因,不时将编辑内容滚动到 fsimage 中是一件好事。
SecondaryNameNode 是定期获取fsimage 和edits 文件并将它们合并到一个新的检查点fsimage 文件中的进程。这是防止edits 变得庞大的重要过程。
【讨论】: