在 CentOS 环境下 HDFS 节点掉线(DataNode / NameNode 失联) 是很常见的问题,通常不是单一原因,而是网络、资源、配置、系统层面叠加导致的。下面按最常见原因 → 排查方法 → 解决建议系统说明。
HDFS 依赖心跳:
dfs.heartbeat.interval = 3sdfs.namenode.heartbeat.recheck-interval 控制判定死亡时间原因:
✅ 表现:
DataNode x.x.x.x:50010 is dead非常常见!
systemctl status firewalld
HDFS 需要端口:
✅ 解决:
systemctl stop firewalld
systemctl disable firewalld
或开放端口。
getenforce
✅ 解决:
setenforce 0
# 永久
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
HDFS 极度依赖 hostname 解析
常见问题:
/etc/hosts 不一致✅ 正确示例:
cat /etc/hosts
192.168.1.10 namenode
192.168.1.11 datanode1
192.168.1.12 datanode2
✅ 检查:
hostname
hostname -f
CentOS 默认安全策略较严。
问题:
✅ 检查:
ls -ld /data/hadoop/dfs
✅ 修复:
chown -R hdfs:hadoop /data/hadoop
chmod 700 /data/hadoop/dfs
HDFS 对磁盘非常敏感。
df -h
df -i
✅ 现象:
No space left on device✅ 解决:
dfs.datanode.data.dirCentOS + JVM 常见。
✅ 查看:
dmesg | grep -i kill
✅ 调整:
<property>
<name>dfs.datanode.max.locked.memory</name>
<value>0</value>
</property>
或调大 JVM:
export HADOOP_HEAPSIZE=4096
HDFS 对时间敏感。
date
✅ 安装 NTP:
yum install -y ntp
systemctl enable ntpd
systemctl start ntpd
✅ 日志典型:
Incompatible clusterIDs
✅ 解决:
dfs/data# 1. 网络
ping namenode
telnet namenode 8020
# 2. 防火墙
systemctl status firewalld
# 3. 主机名
hostname
cat /etc/hosts
# 4. 磁盘
df -h
df -i
# 5. 日志
tail -200 $HADOOP_LOG_DIR/hadoop-hdfs-datanode-*.log
你可以直接贴:
hdfs dfsadmin -report我可以精确定位是哪一类掉线原因。