“Linux + Hadoop 宕机”的原因非常多,通常可以分成系统层面、Hadoop 自身、资源与配置、外部因素几类。下面按常见场景给你梳理,便于排查。
一、系统层面(Linux 本身问题)
1. 内存耗尽(OOM)
- 现象:节点突然掉线、dmesg 中有
Out of memory: Kill process
- 常见原因:
- NameNode / DataNode / YARN 内存设置过大
- 容器或任务占用内存超配
- 排查:
dmesg | grep -i oom
free -h
2. 磁盘满或 inode 耗尽
- HDFS 对磁盘非常敏感
- 现象:
- DataNode 无法写块
- 节点被标记为 dead
- 排查:
df -h
df -i
3. 磁盘 IO 故障
- 坏盘、RAID 降级
- 日志中出现
I/O error
- 排查:
dmesg | grep error
smartctl -a /dev/sdX
4. 网络中断
- 心跳超时 → NameNode 认为 DataNode 死亡
- 常见原因:
二、Hadoop 自身问题
1. NameNode 宕机
可能原因:
- 元数据存储盘满
- edits/logs 写入失败
- 内存不足
- ZooKeeper 异常(HA 模式)
2. DataNode 宕机
- 心跳超时(默认 10 次 × 3s)
- 块报告失败
- 磁盘不可用
3. ResourceManager / NodeManager 崩溃
- YARN 内存配置不合理
- 容器超用
- JVM 崩溃(core dump)
三、资源配置与参数问题(非常常见)
1. JVM 堆内存设置不合理
NameNode: 太大 → OOM
DataNode: 太小 → GC 频繁
2. YARN 资源超配
yarn.nodemanager.resource.memory-mb 超过物理内存
- 容器被 Linux kill
3. HDFS 块大小 / 副本数异常
- 小文件过多 → NameNode 压力爆炸
- 副本数过高 → 磁盘写爆
四、人为 & 外部因素
- 误杀进程(
kill -9)
- 定时任务重启机器
- 内核升级 / 补丁重启
- 云平台:
五、快速排查思路(实战)
- 先看节点是否在线
hdfs dfsadmin -report
yarn node -list
- 看系统日志
/var/log/messages
/var/log/syslog
dmesg
- 看 Hadoop 日志
$HADOOP_HOME/logs/
重点看:
hadoop-*-namenode-*.log
hadoop-*-datanode-*.log
- 看是否 OOM / 磁盘满
free -h
df -h
六、常见一句话总结
Hadoop 宕机,90% 是:内存爆了、磁盘满了、网络断了。
如果你愿意,可以告诉我:
- 是 NameNode / DataNode / 整个集群 宕机?
- 有没有 具体报错日志?
- 是 物理机 / 虚拟机 / 云?
我可以直接帮你定位到具体原因。