hadoop的namenode的内存消耗?

jun*_*hou 9 hadoop memory-consumption

任何人都可以详细分析namenode的内存消耗吗?还是有一些参考资料?在网络中找不到资料.谢谢!

Pit*_*itt 13

我想内存消耗取决于你的HDFS设置,因此取决于HDFS的整体大小,并且与块大小有关.来自Hadoop NameNode wiki:

使用具有大量RAM的好服务器.RAM越多,文件系统越大,块大小越小.

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

Namenode:Hadoop的核心元数据服务器.这是系统中最关键的部分,只能有其中之一.这将存储文件系统映像和文件系统日志.namenode保留所有文件系统布局信息(文件,块,目录,权限等)和块位置.文件系统布局保留在磁盘上,块位置仅保留在内存中.当客户端打开文件时,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内存使用情况


Dav*_*man 6

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

  1. 记忆.NN每个块消耗大约150个字节.从这里,您可以计算出数据需要多少RAM.有很好的讨论:Namenode文件数量限制.
  2. IO.NN正在为文件系统的每次更改执行1 IO(如创建,删除块等).所以你的本地IO应该足够了.估计你需要多少钱更难.考虑到我们在内存数量上受限制的事实,除非您的群集非常大,否则您不会声明此限制.如果是 - 考虑SSD.
  3. 中央处理器.Namenode具有相当大的负载,可以跟踪所有数据节点上所有块的运行状况.每个datanode在一段时间内报告其所有块的状态.同样,除非集群不是太大,否则它应该不是问题.


小智 5

计算示例

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

需要多少空间?

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