java - "Heap Size"对 Hadoop Namenode 意味着什么?

标签 java hadoop mapreduce heap-memory

我试图了解我的 Hadoop 集群是否有问题。 当我转到集群摘要中的 Web UI 时,它说:

Cluster Summary

XXXXXXX files and directories, XXXXXX blocks = 7534776 total.
Heap Size is 1.95 GB / 1.95 GB (100%) 

我很担心为什么这个堆大小指标是 100%

有人可以解释一下名称节点堆大小如何影响集群性能。以及这是否需要修复。

最佳答案

namenode Web UI 显示值如下:

<h2>Cluster Summary (Heap Size is <%= StringUtils.byteDesc(Runtime.getRuntime().totalMemory()) %>/<%= StringUtils.byteDesc(Runtime.getRuntime().maxMemory()) %>)</h2>

运行时将这些记录为:

  • totalMemory() Returns the total amount of memory in the Java virtual machine.
  • maxMemory() Returns the maximum amount of memory that the Java virtual machine will attempt to use

Max 将成为服务启动命令中的 -Xmx 参数。总内存主要因素是 HDFS 集群中的 block 数。名称节点每个 block 需要约 150 个字节,每个副本需要 +16 个字节,并且必须保存在实时内存中。所以默认的复制因子 3 给你 182 字节,你有 7534776 个 block 给大约 1.3GB。加上名称节点中使用的所有其他非文件相关内存,1.95GB 听起来不错。我会说你的 HDFS 集群大小需要更大的名称节点,更多的 RAM。如果可能,增加namenode startup -Xmx。如果用尽,您将需要一个更大的虚拟机/物理盒子。

阅读The Small Files Problesm , HDFS-5711 .

关于java - "Heap Size"对 Hadoop Namenode 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215994/

相关文章:

hadoop - 哪个版本的 hadoop 与 nutch 1.15 一起使用

scala - 如何列出Hdfs目录和子目录内文件的路径?

hadoop - 未经授权的容器启动请求。此 token 已过期

java - 在 Java 中使用 Avro 的 MapReduce : String vs CharSequence vs Utf8 data types

java - NLineInputFormat 用法超出了 GC 开销限制

java - BorderLayout 不工作 JFrame

java - Spring NamedParameterJdbcTemplate batchUpdate - 一次错误插入导致整个批处理失败

java - 线程在单击按钮时开始,并在单击另一个按钮时结束线程

java - 异常和日志记录

hadoop - 映射功能在EMR中运行的mapreduce中失败