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

Boh*_*dan 3 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%) 
Run Code Online (Sandbox Code Playgroud)

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

请问有人请说明namenode堆大小如何影响群集性能.以及是否需要修复.

Rem*_*anu 6

namenode Web UI显示如下值:

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

这些Runtime文件如下:

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

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

阅读小文件Problesm,HDFS-5711.