我对Hadoop Namenode内存计算有一个愚蠢的怀疑,在Hadoop书中(明确指南)中提到
“由于名称节点将文件系统元数据保存在内存中,因此文件系统中文件数量的限制取决于名称节点上的内存量。根据经验,每个文件,目录和块大约需要150个字节。因此例如,如果您有100万个文件,每个文件占用一个块,则至少需要300 MB的内存。虽然存储数百万个文件是可行的,但数十亿个文件已超出了当前硬件的能力。”
由于每个节点占用一个块,因此namenode的最小内存应为150MB而不是300MB。请帮助我了解为什么它是300MB
最佳答案
我猜你读过汤姆·怀特(Tom White)的书的第二版。我有第三版,这是对Scalability of the Hadoop Distributed File System的引用。进入帖子,我阅读了下一个句子:
HDFS NameNode中的文件为:文件inode +块。每个引用都有150字节。 1.000.000个文件= 1.000.000 inode + 1.000.000块引用(在此示例中,每个文件占用1个块)。
2.000.000 * 150字节〜= 300Mb
我放置了链接,供您验证我的论点是否有误。
关于hadoop - Hadoop名称节点内存使用困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28211548/