在 CentOS 上调 HDFS 内存,通常是指调整 HDFS 相关进程(NameNode / DataNode / HDFS 客户端)的 JVM 堆内存。下面按常见场景说明。
HDFS 本身不单独“占内存”,而是由 Java 进程使用:
hadoop-env.sh路径一般在:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
export HADOOP_NAMENODE_OPTS="-Xms4g -Xmx4g $HADOOP_NAMENODE_OPTS"
export HADOOP_DATANODE_OPTS="-Xms2g -Xmx2g $HADOOP_DATANODE_OPTS"
export HADOOP_SECONDARYNAMENODE_OPTS="-Xms2g -Xmx2g"
建议
-Xms和-Xmx设成一样,避免频繁 GC
dfs.namenode.heapsizedfs.datanode.heapsizehdfs-site.xml
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
handler 数越多,内存占用越高
jps
top -p <pid>
jinfo <pid> | grep Xmx
Web UI:
http://namenode:9870
看 Heap Memory Usage
swapoff -a
并注释 /etc/fstab 中 swap
规则参考:
❌ 只改 hdfs-site.xml 不重启
❌ 内存超过物理内存导致 OOM
❌ NameNode 内存太小导致 GC 卡死
如果你能告诉我:
我可以给你具体内存数值建议。