在 CentOS 上配置 HDFS 内存,通常分为 Hadoop 进程内存配置(NameNode / DataNode) 和 操作系统层面内存优化 两部分。下面按实际运维场景说明。
HDFS 主要吃内存的是 NameNode,DataNode 一般内存需求不大。
NameNode 内存主要用来存 元数据(inode、block)。
编辑:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
设置:
export HADOOP_NAMENODE_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC"
示例:
-Xmx4g-Xmx8g~16g-Xmx32g+⚠️ NameNode 不要使用 Swap
DataNode 内存主要用于:
export HADOOP_DATANODE_OPTS="-Xms2g -Xmx2g"
一般:
export HADOOP_SECONDARYNAMENODE_OPTS="-Xms2g -Xmx2g"
<property>
<name>dfs.blocksize</name>
<value>134217728</value> <!-- 128MB -->
</property>
块越大 → NameNode 内存占用越小
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
副本多不影响 NameNode 内存,但影响磁盘
如果开启了:
建议加:
-XX:MaxDirectMemorySize=1g
swapoff -a
永久关闭:
vi /etc/fstab
# 注释 swap 行
sysctl vm.swappiness=1
永久:
echo "vm.swappiness=1" >> /etc/sysctl.conf
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
NameNode 内存 ≈
文件数 × 150~300 字节
+ 块数 × 150 字节
示例:
如果你愿意,可以告诉我:
我可以直接给你一套 可复制的配置文件。