【发布时间】:2020-03-17 04:19:02
【问题描述】:
我是 hadoop 新手。我想知道 snapshot 和 fsimage 在 hadoop 中用于文件系统状态的区别。我听说两者都做同样的工作。那么它们之间有什么区别呢?
【问题讨论】:
标签: hadoop hdfs bigdata hadoop2 cloudera-manager
我是 hadoop 新手。我想知道 snapshot 和 fsimage 在 hadoop 中用于文件系统状态的区别。我听说两者都做同样的工作。那么它们之间有什么区别呢?
【问题讨论】:
标签: hadoop hdfs bigdata hadoop2 cloudera-manager
HDFS 具有主/从架构。 HDFS 集群由单个 NameNode 组成,这是一个管理文件系统命名空间并控制客户端对文件的访问的主服务器。 NameNode 记录对文件系统命名空间或其属性的任何更改。 NameNode 使用称为 EditLog 的事务日志来持久记录文件系统元数据发生的每一次更改。例如,在 HDFS 中创建一个新文件、更改复制因子等会导致 NameNode 将一条记录插入到 EditLog 中来表明这一点。 NameNode 使用其本地主机 OS 文件系统中的文件来存储 EditLog。
FsImage 和 EditLog 齐头并进,这就是这个解释的原因。现在:
整个文件系统命名空间,包括块到文件的映射和文件系统属性,都存储在一个名为 FsImage 的文件中。 FsImage 作为文件存储在 NameNode 的本地文件系统中。
快照支持在特定时刻存储数据副本。也可以对整个文件系统进行快照。这不涉及复制数据,而是将文件大小、块信息等记录到快照目录中。
在非常正常的术语中,FsImage 存储有关数据存储位置、块数和相关信息的信息,而 Snapshot 存储数据/文件系统的只读映像。
我希望这能解释差异。
【讨论】:
fsimage 不存储块到文件的映射,对吗?它存储在块地址表中,并且在namenode重启期间每次写入。
【讨论】: