fsimage hdfs的内容

时间:2013-05-27 19:36:40

标签: apache hadoop hdfs

我对fsimage中的元数据有什么疑问。我读到文件系统命名空间的所有突变,例如文件重命名,权限更改,文件创建,块分配都在fsimage中。但块位置数据也是如此? 它是否包含有关块存储在何处(在哪个datanode上)的信息? 我从这个来源获得:http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/,存储块的元数据是由数据节点的块编辑构建的。 这是真的?那么Fsimage不包含有关块位置的信息吗?

3 个答案:

答案 0 :(得分:3)

Namenode维护两种类型的数据

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

文件系统(元数据):例如文件系统层次结构,权限等。此信息持久保存到磁盘

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

答案 1 :(得分:2)

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

答案 2 :(得分: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...