【问题标题】:Confusion over Hadoop namenode memory usage对 Hadoop 名称节点内存使用的困惑
【发布时间】:2017-05-03 22:10:15
【问题描述】:

我对 Hadoop namenode 内存计算有一个愚蠢的怀疑。它在 Hadoop book (Definite guide) 中被提及为

“由于namenode将文件系统元数据保存在内存中,文件系统中文件数量的限制取决于namenode上的内存量。根据经验,每个文件、目录和块大约需要150字节。因此,例如,如果您有 100 万个文件,每个文件占用一个块,则您将需要至少 300 MB 的内存。虽然存储数百万个文件是可行的,但数十亿个文件超出了当前硬件的能力。"

由于每个占用一个块,namenode最小内存应该是150MB而不是300MB。请帮助我理解为什么是300MB

【问题讨论】:

    标签: hadoop hadoop2


    【解决方案1】:

    我猜你读过汤姆怀特的书的第二版。我有第三版,这里引用了Scalability of the Hadoop Distributed File System 的帖子。进入帖子,我读到了下一句:

    估计显示名称节点使用不到 200 字节来存储单个元数据对象(文件 inode 或块)

    HDFS NameNode 中的一个文件是:一个文件 inode + 一个块。对两者的每个引用都有 150 个字节。 1.000.000 个文件 = 1.000.000 个 inode + 1.000.000 个块引用(在示例中,每个文件占用 1 个块)。

    2.000.000 * 150 字节 ~= 300Mb

    我把链接放在你可以验证我是否在论证中犯了错误。

    【讨论】:

    • 谢谢。我觉得你的解释很有道理。
    • 如果复制因子为 3 怎么办?存储两个副本的信息还需要多少?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多