hadoop中的fsimage和snapshot有什么区别?

what is the difference between fsimage and snapshot in hadoop?

我是 hadoop 新手。我想知道在 hadoop 中用于文件系统状态的 snapshotfsimage 之间的区别。我听说两者都做同样的工作。那么它们之间有什么区别呢?

HDFS 具有 master/slave 架构。一个 HDFS 集群由一个 NameNode 组成,一个管理文件系统命名空间并控制客户端对文件访问的主服务器。对文件系统命名空间或其属性的任何更改都由 NameNode 记录。 NameNode 使用称为 EditLog 的事务日志来持久记录文件系统元数据发生的每个更改。例如,在 HDFS 中创建一个新文件,复制因子的变化等导致 NameNode 向 EditLog 中插入一条记录来指示这一点。 NameNode 使用其本地主机 OS 文件系统中的一个文件来存储 EditLog。

FsImage 和 EditLog 齐头并进,这就是为什么要解释的原因。现在:

整个文件系统命名空间,包括块到文件的映射和文件系统属性,都存储在一个名为 FsImage 的文件中。 FsImage作为文件存储在NameNode的本地文件系统中。

快照支持在特定时刻存储数据副本。还可以拍摄整个文件系统的快照。这不涉及复制数据,而是将文件大小、块信息等记录到快照目录。

在非常正常的情况下,FsImage 存储有关数据存储位置、块数和相关信息的信息,而 Snapshot 存储 data/file 系统的只读映像。

我希望这能解释差异。

fsimage 不存储块到文件的映射,对吗?它存储在块地址 table 中,并在名称节点重启期间每次写入。