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