2

我有一个关于 fsimage 中的元数据是什么的问题。我读到文件系统命名空间的所有变化,例如文件重命名、权限更改、文件创建、块分配都在 fsimage 中。但是块位置数据呢?它是否还包含有关块存储位置(在哪个数据节点上)的信息?我从以下来源获得:http ://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/块存储位置的元数据是由数据节点的块报告构建的。这是真的?所以 Fsimage 不包含有关块位置的信息?

4

3 回答 3

3

Namenode 维护两种类型的数据

块位置数据:由于文件被切成块,NN 应该知道哪一块在哪里。这些数据保存在内存中从不保存在磁盘上,DN 定期与 NN 通信并共享块报告。

文件系统(元数据):如文件系统层次结构、权限等。此信息被持久化到磁盘

当namenodes启动时,它会从fsimage加载文件系统的“快照”,并将edits中的编辑日志应用到它上面,在这个过程之后我们得到一个新的快照。从此时起,namenode 可以接受来自客户端/DN 的文件系统请求

于 2013-06-26T11:03:45.417 回答
2

是的,据我所知 fsimage 不包含任何有关块的信息。该信息由数据节点存储。Namenode 从数据节点启动时会获取此信息。

于 2013-05-30T07:10:00.070 回答
1

Hadoop 提供了一个将 fsimage 文件转换为人类可读格式的工具。http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-hdfs/HdfsImageViewer.html

样本输出:

bin/hdfs oiv -i fsimagedemo -p Indented -o fsimage.txt

   FSImage
     ImageVersion = -19
     NamespaceID = 2109123098
     GenerationStamp = 1003
     INodes [NumInodes = 12]
       Inode
         INodePath =
         Replication = 0
         ModificationTime = 2009-03-16 14:16
         AccessTime = 1969-12-31 16:00
         BlockSize = 0
         Blocks [NumBlocks = -1]
         NSQuota = 2147483647
         DSQuota = -1
         Permissions
           Username = theuser
           GroupName = supergroup
           PermString = rwxr-xr-x
   ...remaining output omitted...
于 2014-08-07T21:18:47.227 回答