温馨提示×

Debian Hadoop内存怎么设

小樊
43
2026-08-28 20:32:20
栏目: 智能运维

在 Debian 上部署 Hadoop(HDFS / YARN) 时,“内存怎么设”主要分 系统层面Hadoop 配置层面 两部分。下面按 实际生产/实验常用做法 说明,适用于 Debian 10/11/12。


一、先确认系统内存情况

free -h
cat /proc/meminfo

假设你的机器内存为:

  • 8 GB
  • 16 GB
  • 32 GB

二、系统级内存设置(一定要先做)

1️⃣ 关闭或限制 swap(推荐)

Hadoop 官方建议 少用 swap

swapoff -a

永久关闭:

vim /etc/fstab
# 注释 swap 行

2️⃣ 设置 vm.swappiness(可选)

vim /etc/sysctl.conf

添加:

vm.swappiness=10

生效:

sysctl -p

三、Hadoop 内存核心配置(重点)

Hadoop 内存主要由 YARN 管理,而不是 HDFS。


四、YARN 内存配置(最关键)

1️⃣ yarn-site.xml

<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>12288</value> <!-- 给 YARN 用的内存(MB) -->
</property>

<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>4</value>
</property>

<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>8192</value>
</property>

<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>1024</value>
</property>

推荐经验值(假设 16G 内存)

项目
NodeManager 内存 12–14 GB
单个 Container 最大 8 GB
最小 1 GB

五、MapReduce 内存设置

2️⃣ 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

六、HDFS 内存(一般不用特别设)

NameNode 内存主要看 文件数量

  • 百万文件 ≈ 1 GB 内存
  • 可手动指定 JVM:
export HADOOP_NAMENODE_OPTS="-Xmx4096m"

七、Hadoop 环境变量(很重要)

hadoop-env.sh

export HADOOP_HEAPSIZE=2048
export HADOOP_NAMENODE_OPTS="-Xmx4096m"
export HADOOP_DATANODE_OPTS="-Xmx2048m"
export YARN_RESOURCEMANAGER_HEAPSIZE=4096
export YARN_NODEMANAGER_HEAPSIZE=2048

八、Debian 常见推荐配置示例

✅ 16G 内存机器

YARN NodeManager: 12G
Container Max: 8G
Map: 2G
Reduce: 4G
系统预留: 2–3G

✅ 8G 内存机器

YARN NodeManager: 6G
Container Max: 4G
Map: 1G
Reduce: 2G

九、验证是否生效

yarn node -list
yarn node -status <nodeId>

十、常见错误

❌ Container killed by YARN for exceeding memory
✅ 原因:mapreduce.java.opts 大于 memory.mb

❌ Hadoop 启动后系统卡死
✅ 原因:YARN 内存 + 系统内存耗尽


如果你愿意,可以告诉我:

  • Debian 版本
  • Hadoop 版本
  • 单机 / 集群
  • 内存大小

我可以直接给你一套 可直接复制的配置文件

0