在 CentOS 上 HDFS 无法启动 是很常见的问题,原因可能很多。下面按最常见原因 → 排查方法 → 解决办法给你一个系统清单。
HDFS 依赖 Java。
检查:
java -version
echo $JAVA_HOME
问题表现:
start-dfs.sh 没反应JAVA_HOME is not set解决:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
并写入:
vi ~/.bashrc
或
vi /etc/profile
HDFS 通过 SSH 启动各节点。
检查:
ssh localhost
如果还要输入密码,说明没配好
解决:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
常见错误:
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
❌ 常见错误:
第一次启动 HDFS 必须格式化 NameNode
hdfs namenode -format
⚠️ 注意:
HDFS 目录不能属于 root 但用普通用户启动。
检查:
ls -ld /opt/hadoop
ls -ld /tmp/hadoop*
解决:
chown -R hadoop:hadoop /opt/hadoop
CentOS 默认防火墙很严格。
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
关闭 SELinux:
setenforce 0
vi /etc/selinux/config
# SELINUX=disabled
HDFS 默认端口:
检查:
netstat -tunlp | grep 9000
cd $HADOOP_HOME/logs
tail -100 hadoop-*-namenode-*.log
tail -100 hadoop-*-datanode-*.log
✅ Java 正常
✅ SSH 免密
✅ 格式化过 NameNode
✅ 配置文件正确
✅ 目录权限正确
✅ 防火墙 / SELinux 关闭
你可以把下面信息发我:
我可以直接告诉你 是哪一项导致的,怎么改。