Linux 上 Hadoop 运行缓慢通常不是单一原因,而是 硬件、系统配置、Hadoop 参数、数据特征 等多个因素叠加。下面按常见原因 → 排查思路 → 优化建议系统说明。
| 类别 | 常见原因 |
|---|---|
| 硬件 | CPU / 内存 / 磁盘 / 网络不足 |
| 系统 | Linux 参数未优化 |
| HDFS | 块大小不合理、副本过多 |
| YARN | 内存/CPU 配置不合理 |
| MapReduce / Spark | 任务数过多或过少 |
| 数据 | 数据倾斜、小文件过多 |
| 其他 | JVM、GC、磁盘满、swap 使用 |
Hadoop 非常吃内存:
表现
✅ 建议:
free -h
top
Hadoop 是 IO 密集型系统。
检查
iostat -x 1
常见问题:
✅ 建议:
dfs.datanode.data.dir节点间 shuffle、副本复制非常依赖网络。
检查
ping node2
iperf3
✅ 建议:
systemctl stop firewalld
Hadoop 强烈不建议使用 swap
✅ 临时关闭:
swapoff -a
✅ 永久关闭:
vim /etc/fstab
# 注释 swap 行
导致 DataNode / NodeManager 卡死
ulimit -n
✅ 建议:
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
sysctl net.core.somaxconn
建议:
net.core.somaxconn = 4096
错误示例
✅ 示例(16G 机器):
yarn.nodemanager.resource.memory-mb=12288
yarn.scheduler.maximum-allocation-mb=8192
小文件多 → NameNode 压力大
hdfs fsck / -files -blocks
✅ 建议:
dfs.blocksize=128M 或 256M
测试环境没必要 3 副本
dfs.replication=1
少数 task 特别慢
✅ 表现:
✅ 解决:
combinesaltingHadoop 最怕小文件
✅ 合并小文件:
hadoop fs -getmerge /input /local/bigfile
或使用 HDFS Archive(HAR)
jstat -gc <pid>
✅ 建议:
export HADOOP_OPTS="-XX:+UseG1GC -Xmx4g"
# 内存
free -h
# CPU
top
# 磁盘
df -h
iostat -x 1
# 网络
ping nodeX
# swap
swapon -s
# Hadoop
hdfs dfsadmin -report
yarn node -list
Hadoop 慢,80% 是内存、磁盘 IO、YARN 配置、小文件或 swap 的问题。
如果你愿意,可以告诉我:
我可以 直接帮你给出针对性优化参数。