【发布时间】:2014-09-24 21:14:56
【问题描述】:
hadoop 中的NameNode 不存储块信息。它保存在内存中,并在启动时 DataNodes 报告块信息。
如果我从本地复制一个文件到hdfs,它会被传输到hdfs,因为我可以用“hadoop fs -ls”看到。
我想知道 Hadoop 是如何知道哪个文件名对应于哪个块的。
【问题讨论】:
标签: hadoop
hadoop 中的NameNode 不存储块信息。它保存在内存中,并在启动时 DataNodes 报告块信息。
如果我从本地复制一个文件到hdfs,它会被传输到hdfs,因为我可以用“hadoop fs -ls”看到。
我想知道 Hadoop 是如何知道哪个文件名对应于哪个块的。
【问题讨论】:
标签: hadoop
NameNode 维护一个File System Image,它存储文件-> 块之间的映射。它还存储一个edit log,它维护对文件系统的任何编辑。 Secondary namenode定期从Namenode读取File System Image和Edit Log,并将它们组合起来为NameNode创建新的File System Image。
【讨论】:
The Persistence of File System Metadata。它解释了您感到困惑的概念。确实,NameNode 本身并不存储实际的块。块由数据节点存储。但是,NameNode 确实存储了 Files -> 块之间的映射。