在 CentOS 上出现 HDFS 卡顿,通常不是单一原因,而是 系统、Hadoop 配置、硬件、负载 多个因素叠加。下面按 常见原因 → 排查要点 → 解决建议 来系统说明。
HDFS 极度依赖磁盘吞吐。
表现
iostat 中 %util 接近 100%put / get 卡住CentOS 常见问题
✅ 解决
iostat -x 1
dfs.datanode.data.dir 多目录分散磁盘HDFS 严重依赖 JVM。
表现
Full GC✅ 排查
jstat -gcutil <pid> 1000
✅ 解决
export HADOOP_NAMENODE_OPTS="-Xms8g -Xmx8g"
export HADOOP_DATANODE_OPTS="-Xms4g -Xmx4g"
HDFS 是 网络密集型 系统。
常见问题
✅ 排查
ifconfig
ethtool eth0
ping <datanode>
✅ 解决
setenforce 0
systemctl status firewalld
表现
✅ 排查
hdfs dfsadmin -report
hdfs fsck / -files -blocks
✅ 解决
dfs.namenode.handler.count
dfs.namenode.service.handler.count
默认值对 Hadoop 不友好。
✅ 重点优化项
ulimit -n
建议:
/etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
sysctl vm.swappiness
建议:
vm.swappiness = 1
net.core.somaxconn = 4096
net.ipv4.tcp_tw_reuse = 1
dfs.replication = 3
✅ 小集群可改为 2
dfs.heartbeat.interval
dfs.namenode.heartbeat.recheck-interval
dfs.blocksize = 128M 或 256M
✅ 1. 看系统
top
free -h
iostat -x 1
✅ 2. 看 HDFS
hdfs dfsadmin -report
hdfs fsck /
✅ 3. 看 GC
jstat -gcutil <pid> 1000
✅ 4. 看日志
$HADOOP_LOG_DIR/hadoop-hdfs-namenode.log
hadoop-hdfs-datanode.log
| 场景 | 原因 | 解决 |
|---|---|---|
| 写入慢 | 磁盘 IO | 换 SSD / 多盘 |
| 偶发卡顿 | GC | 调 JVM |
| 集群不稳定 | 网络 | 查网卡 / 防火墙 |
| 小文件多 | NameNode | 合并文件 |
| 系统卡 | 未优化 | limits / swappiness |
你可以直接告诉我:
top / iostat 输出我可以 直接帮你判断是哪一类卡顿,并给出精确参数。