【问题标题】:The memory consumption of hadoop's namenode?hadoop的namenode的内存消耗?
【发布时间】:2012-11-09 09:03:37
【问题描述】:

谁能详细分析namenode的内存消耗?或者有什么参考资料吗?在网络上找不到素材。谢谢!

【问题讨论】:

    标签: hadoop memory-consumption


    【解决方案1】:

    我想内存消耗将取决于您的 HDFS 设置,因此取决于 HDFS 的整体大小并且与块大小相关。 来自Hadoop NameNode wiki

    使用具有大量 RAM 的优质服务器。您拥有的 RAM 越多,文件系统就越大,或者块大小越小。

    来自https://twiki.opensciencegrid.org/bin/view/Documentation/HadoopUnderstanding

    Namenode:Hadoop 的核心元数据服务器。这是系统中最关键的部分,而且只能是其中之一。它存储文件系统映像和文件系统日志。 namenode 保存所有文件系统布局信息(文件、块、目录、权限等)和块位置。文件系统布局保存在磁盘上,块位置仅保存在内存中。当客户端打开文件时,namenode 会告诉客户端文件中所有块的位置;然后客户端不再需要与名称节点通信以进行数据传输。

    同一站点推荐以下内容:

    Namenode:我们建议至少 8GB 的​​ RAM(最低为 2GB RAM),最好是 16GB 或更多。粗略的经验法则是每 100TB 原始磁盘空间 1GB;实际要求是每百万个对象(文件、目录和块)大约 1GB。 CPU 要求是任何现代多核服务器 CPU。通常,namenode 只会使用 2-5% 的 CPU。 由于这是单点故障,因此最重要的要求是可靠的硬件,而不是高性能硬件。我们建议使用具有冗余电源和至少 2 个硬盘驱动器的节点。

    如需更详细的内存使用分析,请查看此链接: https://issues.apache.org/jira/browse/HADOOP-1687

    你也可能会觉得这个问题很有趣:Hadoop namenode memory usage

    【讨论】:

      【解决方案2】:

      NameNode (NN) 有几个技术限制,面对其中任何一个都会限制您的可扩展性。

      1. 内存。 NN 每个块消耗大约 150 个字节。从这里您可以计算出您的数据需要多少 RAM。有很好的讨论:Namenode file quantity limit
      2. IO。 NN 为文件系统的每次更改(如创建、删除块等)执行 1 次 IO。所以你的本地 IO 应该足够了。很难估计你需要多少。考虑到我们受内存限制的块数量这一事实,除非您的集群非常大,否则您不会要求此限制。如果是,请考虑使用 SSD。
      3. CPU。 Namenode 有相当大的负载跟踪所有数据节点上所有块的健康状况。每个数据节点每隔一段时间报告其所有块的状态。同样,除非集群不是太大,否则应该不是问题。

      【讨论】:

        【解决方案3】:

        计算示例

        200 节点集群
        24TB/节点
        128MB 块大小
        复制因子 = 3

        需要多少空间?

        # 块 = 200*24*2^20/(128*3)
        约 1200 万个区块
        约 12,000 MB 内存。

        【讨论】:

          【解决方案4】:

          我想我们应该区分每个namenode对象如何消耗namenode内存和调整namenode堆大小的一般建议。

          对于第一种情况(消耗),AFAIK,每个 namenode 对象平均拥有 150 字节的内存。 Namenode 对象是文件、块(不包括复制的副本)和目录。因此,对于占用 3 个块的文件,这是 4(1 个文件和 3 个块)x150 字节 = 600 字节。

          对于namenode推荐堆大小的第二种情况,一般建议您为每100万个块预留1GB。如果你计算这个(每块 150 字节)你会得到 150MB 的内存消耗。您可以看到这远小于每 100 万块 1GB,但您还应该考虑文件大小、目录的数量。

          我想这是一个安全的建议。查看以下两个链接以获取更一般的讨论和示例:

          Sizing NameNode Heap Memory - Cloudera

          Configuring NameNode Heap Size - Hortonworks

          Namenode Memory Structure Internals

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-27
            • 2011-12-13
            • 2010-10-12
            • 1970-01-01
            • 2022-06-14
            相关资源
            最近更新 更多