我是hadoop的新手。我想知道在hadoop中用于文件系统状态的snapshot和fsimage之间的区别。我听说两者都做同样的工作。那它们之间有什么区别呢?
HDFS具有主/从体系结构。 HDFS群集由单个NameNode和管理文件系统名称空间并控制客户端对文件的访问的主服务器组成。对文件系统名称空间或其属性的任何更改均由NameNode记录。 NameNode使用一个称为EditLog的事务日志来永久记录文件系统元数据发生的每个更改。例如,在HDFS中创建新文件,更改复制因子等会导致NameNode在EditLog中插入一条记录来表明这一点。 NameNode使用其本地主机OS文件系统中的文件来存储EditLog。
FsImage和EditLog齐头并进,这就是解释的原因。现在:
整个文件系统名称空间,包括块到文件的映射以及文件系统属性,都存储在名为FsImage的文件中。 FsImage作为文件存储在NameNode的本地文件系统中。
快照支持在特定时间存储数据副本。快照也可以用于整个文件系统。这不涉及数据复制,而是将文件大小,块信息等记录到快照表目录中。
通常,FsImage将信息存储在数据存储的位置,多少块及相关信息中,而Snapshot则存储数据/文件系统的只读图像。
我希望这可以解释差异。