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