温馨提示×

centos hdfs内存怎么配

小樊
44
2026-09-24 16:47:27
栏目: 智能运维

在 CentOS 上配置 HDFS 内存,通常分为 Hadoop 进程内存配置(NameNode / DataNode) 和 操作系统层面内存优化 两部分。下面按实际运维场景说明。


一、HDFS 关键进程内存参数(最重要)

HDFS 主要吃内存的是 NameNode,DataNode 一般内存需求不大。

1️⃣ NameNode 内存配置

NameNode 内存主要用来存 元数据(inode、block)。

修改方式(推荐)

编辑:

$HADOOP_HOME/etc/hadoop/hadoop-env.sh

设置:

export HADOOP_NAMENODE_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC"

示例:

  • 小集群(< 1000 万文件):-Xmx4g
  • 中集群(1000万~5000万文件):-Xmx8g~16g
  • 大集群(> 1亿文件):-Xmx32g+

⚠️ NameNode 不要使用 Swap


2️⃣ DataNode 内存配置

DataNode 内存主要用于:

  • 块汇报
  • 线程
  • 缓存(若开启)
export HADOOP_DATANODE_OPTS="-Xms2g -Xmx2g"

一般:

  • 小集群:1–2G
  • 大集群:4G 足够

3️⃣ SecondaryNameNode(如启用)

export HADOOP_SECONDARYNAMENODE_OPTS="-Xms2g -Xmx2g"

二、HDFS 相关内存参数(hdfs-site.xml)

1️⃣ 块大小(影响内存)

<property>
  <name>dfs.blocksize</name>
  <value>134217728</value> <!-- 128MB -->
</property>

块越大 → NameNode 内存占用越小


2️⃣ 副本数

<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>

副本多不影响 NameNode 内存,但影响磁盘


3️⃣ 堆外内存(Direct Memory)

如果开启了:

  • Short-Circuit Read
  • Native IO

建议加:

-XX:MaxDirectMemorySize=1g

三、CentOS 系统级内存优化(很重要)

1️⃣ 关闭 Swap(强烈建议)

swapoff -a

永久关闭:

vi /etc/fstab
# 注释 swap 行

2️⃣ 调整 vm.swappiness

sysctl vm.swappiness=1

永久:

echo "vm.swappiness=1" >> /etc/sysctl.conf

3️⃣ 调整文件句柄数(HDFS 很吃)

vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536

4️⃣ 大内存机器建议使用 G1 GC

-XX:+UseG1GC
-XX:MaxGCPauseMillis=200

四、快速估算 NameNode 内存公式

NameNode 内存 ≈
文件数 × 150~300 字节
+ 块数 × 150 字节

示例:

  • 5000 万文件 ≈ 8~12 GB

五、常见推荐配置(示例)

8G 内存机器

  • NameNode:4G
  • DataNode:2G

32G 内存机器

  • NameNode:16~24G
  • DataNode:4G

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

  • Hadoop 版本(2.x / 3.x)
  • 集群规模(节点数 / 文件数)
  • 单机内存大小

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

0 踩