在 Debian 上调整 Hadoop 内存,通常是指 Hadoop 各组件(HDFS / YARN / MapReduce) 和 JVM 堆内存 的配置。下面按 最常见的调优场景 给你一个完整说明。
主要在以下文件中调整:
$HADOOP_HOME/etc/hadoop/
├── hadoop-env.sh
├── yarn-env.sh
├── hdfs-site.xml
├── yarn-site.xml
├── mapred-site.xml
hadoop-env.sh
export HADOOP_NAMENODE_OPTS="-Xms4g -Xmx4g"
推荐:
export HADOOP_DATANODE_OPTS="-Xms2g -Xmx2g"
一般 2–4 GB 即可。
YARN 决定 集群能跑多少任务
yarn-site.xml
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>16384</value> <!-- 16GB -->
</property>
通常设置为 机器内存的 70–80%
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
yarn-env.sh
export YARN_RESOURCEMANAGER_HEAPSIZE=2048
export YARN_NODEMANAGER_HEAPSIZE=2048
mapred-site.xml
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1536m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx3072m</value>
</property>
⚠️ 规则
java.opts < memory.mb
free -h
jps
jstat -gc <pid>
原因
java.opts > memory.mb✅ 解决:
java.opts = memory.mb * 0.75
HADOOP_NAMENODE_OPTS="-Xmx8g"
总内存:16GB
├── OS:2GB
├── YARN NodeManager:12GB
│ ├── Map:2GB
│ ├── Reduce:4GB
├── NameNode:4GB
Hadoop 内存 = YARN 管容器 + MapReduce 管任务 + JVM 管堆
如果你愿意,可以告诉我:
我可以直接帮你 算一套最优参数。