HDFS 在 Linux 上启动失败的原因非常多,通常需要结合日志来定位。下面我先给你一个常见原因清单 + 排查思路,你可以对照看看;如果你愿意贴出 start-dfs.sh 报错或 logs/ 下的日志,我可以更精确地判断。
检查以下文件:
core-site.xmlhdfs-site.xmlhadoop-env.sh常见问题:
fs.defaultFS 写错(如 hdfs://localhost:9000 端口不对)dfs.namenode.name.dir / dfs.datanode.data.dir 路径不存在或无权限✅ 验证:
hadoop checknative
HDFS 强依赖 Java。
检查:
echo $JAVA_HOME
java -version
在 hadoop-env.sh 中必须有:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
start-dfs.sh 会通过 SSH 启动 DataNode。
测试:
ssh localhost
如果不行:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
HDFS 数据目录必须:
例如:
sudo chown -R hadoop:hadoop /data/hadoop
第一次启动必须格式化:
hdfs namenode -format
⚠️ 注意:
例如:
检查:
netstat -tunlp | grep 9000
systemctl stop firewalld
setenforce 0
df -h
NameNode / DataNode 目录空间不足会直接失败。
start-dfs.sh
cd $HADOOP_HOME/logs
tail -n 100 hadoop-*-namenode-*.log
tail -n 100 hadoop-*-datanode-*.log
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
我可以精确定位:
hdfs-site.xml / core-site.xml你可以直接把报错贴出来,我帮你逐行分析。