“堆大小”对Hadoop Namenode意味着什么?

时间:2014-03-06 05:42:29

标签: 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堆大小如何影响群集性能。以及是否需要修复。

1 个答案:

答案 0 :(得分:6)

namenode Web UI显示的值如下:

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

Runtime将这些文件记录为:

  
      
  • totalMemory()返回Java虚拟机中的内存总量。
  •   
  • maxMemory()返回Java虚拟机将尝试使用的最大内存量
  •   

Max将成为service start命令中的-Xmx参数。总内存主要因素是HDFS群集中的块数。 namenode每个块需要大约150个字节,每个副本需要+16个字节,并且必须保存在实时内存中。因此,默认复制因子3为您提供182个字节,而您有7534776个块提供约1.3GB。加上namenode中使用的所有其他非文件相关内存,1.95GB听起来是正确的。我会说你的HDFS集群大小需要更大的名称节点,更多的RAM。如果可能,请增加namenode startup -Xmx。如果超出,您将需要更大的VM /物理盒。

阅读The Small Files ProblesmHDFS-5711