在 CentOS 上 HDFS 启动失败 的原因有很多种,下面按最常见 → 排查思路给你一个系统性的说明,你可以对照看是哪一种。
HDFS(尤其是 start-dfs.sh)需要通过 SSH 启动各节点。
症状
Permission denied (publickey)解决
ssh-keygen -t rsa
ssh-copy-id localhost
# 或
ssh-copy-id hadoop@datanode1
测试:
ssh localhost
CentOS 默认防火墙和 SELinux 很严格。
症状
解决
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
# 永久关闭
vi /etc/selinux/config
SELINUX=disabled
HDFS 强依赖 Java
检查
java -version
echo $JAVA_HOME
hadoop-env.sh 要配置
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
⚠️ 不建议用 OpenJDK 太新版本(Hadoop 2.x 最好用 JDK 8)
如果你执行过多次:
hdfs namenode -format
症状
Incompatible clusterIDs解决
dfs.datanode.data.dir 下的数据常见错误:
fs.defaultFS 写错示例:
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
目录必须存在且可写:
mkdir -p /data/hadoop
chown -R hadoop:hadoop /data/hadoop
症状
检查
hostname
cat /etc/hosts
建议:
127.0.0.1 localhost
192.168.1.10 namenode
192.168.1.11 datanode1
HDFS 启动失败 一定看日志
$HADOOP_HOME/logs/
重点看:
hadoop-*-namenode-*.loghadoop-*-datanode-*.log看 ERROR / FATAL 行
✅ ssh 免密通
✅ JAVA_HOME 配置
✅ 防火墙 / SELinux 关闭
✅ 只格式化一次 NameNode
✅ 数据目录存在且有权限
✅ hosts 配置正确
✅ 日志无 ERROR
你可以直接贴:
我可以直接告诉你 是哪一行配置或环境导致失败。