【问题标题】:Hadoop: How does NameNode know which blocks correspond to a file?Hadoop:NameNode如何知道哪些块对应于一个文件?
【发布时间】:2014-09-24 21:14:56
【问题描述】:

hadoop 中的NameNode 不存储块信息。它保存在内存中,并在启动时 DataNodes 报告块信息。

如果我从本地复制一个文件到hdfs,它会被传输到hdfs,因为我可以用“hadoop fs -ls”看到。

我想知道 Hadoop 是如何知道哪个文件名对应于哪个块的。

【问题讨论】:

    标签: hadoop


    【解决方案1】:

    NameNode 维护一个File System Image,它存储文件-> 块之间的映射。它还存储一个edit log,它维护对文件系统的任何编辑。 Secondary namenode定期从Namenode读取File System Image和Edit Log,并将它们组合起来为NameNode创建新的File System Image。

    【讨论】:

    • 这令人困惑。在文档中它说它不存储任何块信息,但是文件系统映像是从文件到块的映射?那么是块ID吗?
    • 好的,这篇论文有一个很好的描述:hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf
    • 从上面的链接中查看第 9 页 - 第 6 节 The Persistence of File System Metadata。它解释了您感到困惑的概念。确实,NameNode 本身并不存储实际的块。块由数据节点存储。但是,NameNode 确实存储了 Files -> 块之间的映射。
    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 2014-08-05
    • 2019-08-17
    • 1970-01-01
    • 2010-12-19
    • 2019-11-30
    • 2010-09-17
    相关资源
    最近更新 更多