我在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集群的大小:
10个datanode计算机,具有5个磁盘,而每个磁盘具有1T
每个数据节点具有32个CPU
每个数据节点具有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
答案 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。