在 CentOS 上运行 HDFS(Hadoop 分布式文件系统) 时出现“宕机”(NameNode / DataNode 停止、服务不可用、集群异常),常见原因可以归为以下几类。下面按出现频率从高到低说明,并给出排查思路。
HDFS 对磁盘非常敏感:
dfs.namenode.name.dir)dfs.datanode.data.dir)/var/log/hadoop)现象
No space left on device排查
df -h
du -sh /dfs/*
解决
hdfs-site.xml 中目录配置NameNode 需要大量内存:
现象
java.lang.OutOfMemoryError排查
free -h
less /var/log/hadoop/hdfs/hadoop-hdfs-namenode-*.log
解决 修改:
export HADOOP_NAMENODE_OPTS="-Xmx8g -Xms8g"
CentOS 默认:
现象
排查
systemctl status firewalld
getenforce
解决
systemctl stop firewalld
setenforce 0
(生产建议用白名单端口,而非直接关闭)
HDFS 严重依赖 hostname 解析。
现象
检查
hostname
cat /etc/hosts
正确示例
192.168.1.10 namenode
192.168.1.11 datanode1
现象
NameNode is not formatted解决
hdfs namenode -format
⚠️ 会清空元数据,仅限新集群
在 HA(高可用) 下:
排查
jps
zkServer.sh status
DataNode 多盘环境下:
现象
IOExceptioniostat 显示 100% utilHDFS 对时间敏感。
现象
解决
ntpdate cn.pool.ntp.org
现象
解决
ulimit -n 65536
# 1. 看进程
jps
# 2. 看日志
tail -n 200 /var/log/hadoop/hdfs/*.log
# 3. 看磁盘
df -h
# 4. 看内存
free -h
# 5. 看网络
ping namenode
telnet namenode 8020
你可以告诉我:
我可以帮你 精确定位原因并给出修复方案。