温馨提示×

centos hdfs为什么启动不了

小樊
44
2026-09-18 13:13:44
栏目: 智能运维

在 CentOS 上 HDFS 启动不了 的原因很多,下面我按最常见原因 → 排查方法 → 解决办法给你系统梳理一下,你可以对照看是哪一类。


一、最常用排查入口(先看日志)

HDFS 起不来,90% 的问题都在日志里

# NameNode 日志
tail -n 200 $HADOOP_HOME/logs/hadoop-*-namenode-*.log

# DataNode 日志
tail -n 200 $HADOOP_HOME/logs/hadoop-*-datanode-*.log

⚠️ 一定要看日志,下面很多情况日志里都有明确报错。


二、最常见 8 种原因

1️⃣ 没格式化 NameNode(第一次启动)

症状

java.io.IOException: NameNode is not formatted

解决

hdfs namenode -format

⚠️ 只在第一次或清空元数据后执行,不要反复格式化!


2️⃣ JAVA_HOME 没配置

症状

Error: JAVA_HOME is not set

解决 编辑:

vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

确保有:

export JAVA_HOME=/usr/java/jdk1.8.0_xxx

查看 Java 路径:

which java
readlink -f $(which java)

3️⃣ 主机名 / hosts 配置错误(非常常见)

症状

Cannot resolve hostname
Connection refused

解决

vi /etc/hosts

示例:

127.0.0.1   localhost
192.168.1.10  master
192.168.1.11  slave1

hostname 必须和 core-site.xml 中一致。


4️⃣ SSH 免密没配置(start-dfs.sh 无效)

症状

root@slave1: Permission denied (publickey,password)

解决

ssh-keygen -t rsa
ssh-copy-id master
ssh-copy-id slave1

测试:

ssh master
ssh slave1

5️⃣ 端口被占用

症状

BindException: Address already in use

解决

netstat -tunlp | grep 9000

或:

ss -lntp | grep java

修改端口(core-site.xml):

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://master:9000</value>
</property>

6️⃣ 防火墙 / SELinux 没关

症状

Connection refused
DataNode 无法连接 NameNode

解决

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
vi /etc/selinux/config
# SELINUX=disabled

7️⃣ 目录权限不对(data / tmp)

症状

Permission denied
Cannot create directory

解决

chown -R hadoop:hadoop /hadoop
chmod -R 755 /hadoop

HDFS 数据目录不要放在 /root 下!


8️⃣ 多次格式化导致 clusterID 不一致

症状

DataNode 启动后就死
Incompatible clusterIDs

解决(简单粗暴)

rm -rf /hadoop/dfs/data/*

再重启 DataNode


三、正确启动 HDFS 的顺序

start-dfs.sh
jps

应看到:

  • NameNode
  • DataNode
  • SecondaryNameNode

访问:

http://master:9870

四、如果你愿意,我可以直接帮你定位

你可以把下面信息发我:

  1. start-dfs.sh 的完整报错
  2. NameNode / DataNode 日志最后 50 行
  3. core-site.xml + hdfs-site.xml
  4. CentOS 版本 + Hadoop 版本

我可以直接告诉你是哪一行配置错了。

0 踩