在 CentOS 上部署 HDFS(Hadoop Distributed File System) 时,调优主要从 操作系统、JVM、HDFS 参数、磁盘与网络 四个方面入手。下面给你一套可落地的 HDFS 调优思路,适用于生产环境(Hadoop 2.x / 3.x 通用)。
HDFS 会打开大量文件和网络连接。
# 查看当前限制
ulimit -n
# 永久修改
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
重启或重新登录生效。
swap 会导致 JVM GC 停顿,严重影响 HDFS 性能。
swapoff -a
永久禁用:
vi /etc/fstab
# 注释 swap 行
对 JVM 和 HDFS 不利。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
写入开机脚本:
vi /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
建议:
noopdeadlineecho deadline > /sys/block/sda/queue/scheduler
测试 / 生产环境建议关闭:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
SELINUX=disabled
hadoop-env.sh
export HADOOP_NAMENODE_OPTS="-Xms8g -Xmx8g -XX:+UseG1GC"
推荐:
-Xms 和 -Xmx 保持一致,避免动态扩容export HADOOP_DATANODE_OPTS="-Xms2g -Xmx2g -XX:+UseG1GC"
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
生产环境通常是 3
测试环境可调成 1 或 2
<property>
<name>dfs.blocksize</name>
<value>256m</value>
</property>
建议:
<property>
<name>dfs.datanode.handler.count</name>
<value>64</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>64</value>
</property>
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>16384</value>
</property>
<property>
<name>dfs.datanode.write/packet.size</name>
<value>65536</value>
</property>
<property>
<name>ipc.client.connect.timeout</name>
<value>60000</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
避免所有数据写到一个盘:
<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/dfs,/data2/dfs,/data3/dfs</value>
</property>
✅ 每个盘单独挂载
✅ 不要放在系统盘
defaults,noatime,nodiratime
vi /etc/sysctl.conf
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.core.netdev_max_backlog = 16384
sysctl -p
vi /etc/hosts
✅ 必须包含:
<IP> <hostname>
| 问题 | 原因 | 解决方法 |
|---|---|---|
| NameNode 卡顿 | JVM GC | 调大内存 + G1 |
| DataNode 写入慢 | 磁盘性能 | 多盘 + deadline |
| 小文件太多 | 元数据压力 | HDFS Federation / HBase |
| 网络瓶颈 | 千兆网卡 | 万兆 + 端口聚合 |
| 组件 | 内存 |
|---|---|
| NameNode | 8–16 GB |
| DataNode | 2–4 GB |
| 块大小 | 128–256 MB |
| 副本数 | 3 |
| GC | G1 |
如果你愿意,可以告诉我:
我可以 直接给你一份生产级 hdfs-site.xml + core-site.xml 配置模板。