CentOS 启动不了 HDFS 的原因很多,需要结合报错日志来判断。下面我按最常见原因 → 排查步骤 → 解决办法给你一个系统性的排查清单。
HDFS 启动依赖 ssh localhost / 各节点之间免密登录
现象
Starting namenodes on [localhost]
localhost: ssh: connect to host localhost port 22: Connection refused
检查
ssh localhost
解决
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
检查
java -version
echo $JAVA_HOME
要求
JAVA_HOME 必须配置解决
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
并在:
$HADOOP_HOME/etc/hadoop/hadoop-env.sh
中设置:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
重点检查这几个文件:
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
export JAVA_HOME=你的JDK路径
现象
java.io.IOException: NameNode is not formatted
解决
hdfs namenode -format
⚠️ 只能执行一次(除非你清空数据)
CentOS 常见
systemctl stop firewalld
systemctl disable firewalld
netstat -tunlp | grep 9000
Hadoop 数据目录权限不足
sudo chown -R 你的用户:你的用户 /data/hadoop
或:
chmod -R 755 /data/hadoop
Hadoop 不是 systemd 服务,不要这样启动:
systemctl start hadoop
✅ 正确方式:
$HADOOP_HOME/sbin/start-dfs.sh
# 1. 检查 Java
java -version
# 2. 检查 SSH
ssh localhost
# 3. 格式化 NameNode(仅第一次)
hdfs namenode -format
# 4. 启动 HDFS
start-dfs.sh
# 5. 查看进程
jps
✅ 正常应看到:
NameNode
DataNode
SecondaryNameNode
如果还起不来,一定要看日志:
$HADOOP_HOME/logs/
重点看:
hadoop-*-namenode-*.loghadoop-*-datanode-*.log把报错前 10 行贴出来,我可以精准帮你定位。
你可以直接回复我:
jps 输出我可以一步一步帮你把 HDFS 拉起来 ✅