如何在Hadoop集群中调整“ DataNode最大Java堆大小”

时间:2018-12-06 14:53:28

标签: java hadoop ambari datanode

我在google中搜索了有关如何调整- DataNode最大Java堆大小的值的信息,但该信息除外-

https://community.hortonworks.com/articles/74076/datanode-high-heap-size-alert.html

https://docs.oracle.com/cd/E19900-01/819-4742/abeik/index.html

但未找到公式来计算 DataNode Java最大堆大小

的值

DataNode最大Java堆大小的默认值为1G

,我们将该值增加到5G,因为在某些情况下,我们从datanode日志中看到了有关堆大小的错误

但这不是调整值的正确方法

那么任何建议或好的文章如何为设置正确的值-datanode记录有关堆大小的错误?

让我们说以下Hadoop集群的大小:

  1. 10个datanode计算机,具有5个磁盘,而每个磁盘具有1T

  2. 每个数据节点具有32个CPU

  3. 每个数据节点具有256G内存

基于此信息,我们可以找到显示正确值的公式-“ datanode记录有关堆大小的错误”?

关于Hortonworks: 他们建议将Datanode Java堆设置为4G 但我不确定这种情况是否可以涵盖所有情况?

根本原因:DN操作非常昂贵,不需要16GB的堆。

https://community.hortonworks.com/articles/74076/datanode-high-heap-size-alert.html

RESOLUTION: Tuning GC parameters resolved the issue -
4GB Heap recommendation : 
-Xms4096m -Xmx4096m -XX:NewSize=800m 
-XX:MaxNewSize=800m -XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC 
-XX:+UseCMSInitiatingOccupancyOnly 
-XX:CMSInitiatingOccupancyFraction=70 
-XX:ParallelGCThreads=8 

2 个答案:

答案 0 :(得分:3)

hadoop-env.sh(也是Ambari中的某个字段,只需尝试搜索堆)中,有一个用于设置值的选项。可能在外壳文件中被称为HADOOP_DATANODE_OPTS

8GB通常对于大多数服务器来说是一个不错的选择。不过,您有足够的内存,因此我将从此处开始,并通过Grafana中的JMX指标主动监视使用情况。

namenode也可能需要调整https://community.hortonworks.com/articles/43838/scaling-the-hdfs-namenode-part-1.html

答案 1 :(得分:0)

建议将其保留为每百万个数据块 1GB。