在 Linux 上配置 HDFS(Hadoop Distributed File System)内存,通常需要从 Hadoop 进程内存(JVM 堆内存) 和 Linux 系统内存/内核参数 两个层面来理解。下面按实际运维场景说明。
HDFS 主要涉及两个核心守护进程:
| 进程 | 作用 | 主要参数 |
|---|---|---|
| NameNode | 管理元数据 | HADOOP_NAMENODE_OPTS |
| DataNode | 存储数据块 | HADOOP_DATANODE_OPTS |
HDFS 本身不直接“占内存存数据”,DataNode 主要用磁盘,但 JVM 和缓存会消耗内存。
一般在:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
export HADOOP_NAMENODE_OPTS="-Xms4g -Xmx4g -XX:MaxHeapFreeRatio=70"
建议:
⚠️ NameNode 堆内存不足会直接 OOM 宕机
export HADOOP_DATANODE_OPTS="-Xms2g -Xmx2g"
一般:
export HADOOP_OPTS="-Xmx2g"
Swap 会导致 HDFS 性能剧烈下降:
swapoff -a
永久关闭:
vi /etc/fstab
# 注释 swap 行
sysctl vm.swappiness=1
写入:
echo "vm.swappiness=1" >> /etc/sysctl.conf
HDFS 会打开大量文件:
ulimit -n 65536
永久配置:
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
sysctl -w net.core.somaxconn=4096
sysctl -w vm.max_map_count=262144
用于热点数据:
<property>
<name>dfs.datanode.max.locked.memory</name>
<value>4294967296</value> <!-- 4GB -->
</property>
需配合:
ulimit -l unlimited
NameNode Heap ≈
文件数 × 150~300 字节
+ 块数 × 150 字节
示例:
❌ NameNode OOM
✅ 增大 -Xmx
❌ DataNode 卡死
✅ 检查 swap / 磁盘 IO
❌ Too many open files
✅ 调整 ulimit
如果你愿意,可以告诉我:
我可以帮你直接给出一份可复制的配置文件。