Debian 上 Hadoop 启动失败的原因非常多,不能只靠一句“启动失败”就定位问题。下面我按最常见原因 → 排查方法 → 解决思路给你一个系统性清单,你对照看是哪一种。
Hadoop 强依赖 Java。
症状
start-dfs.sh 一闪而过Error: JAVA_HOME is not set
排查
echo $JAVA_HOME
java -version
解决 编辑:
sudo nano /etc/profile
# 或
nano ~/.bashrc
加入:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
然后:
source /etc/profile
⚠️ Hadoop 3 推荐 Java 8 / 11,不要用 Java 17(很多坑)
Hadoop 启动自己要通过 SSH 连自己。
症状
localhost: Permission denied (publickey,password)
解决
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh localhost
常见错误:
fs.defaultFS 写错namenode 目录不存在或权限不对检查
cat $HADOOP_HOME/etc/hadoop/core-site.xml
cat $HADOOP_HOME/etc/hadoop/hdfs-site.xml
示例(伪分布式)
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/namenode</value>
</property>
然后:
mkdir -p /opt/hadoop/data/namenode
chown -R hadoop:hadoop /opt/hadoop
第一次启动必须格式化
hdfs namenode -format
⚠️ 重复格式化会丢数据
常见端口:
netstat -tunlp | grep 9000
不要只看终端输出,看日志:
cd $HADOOP_HOME/logs
ls
tail -100 hadoop-*-namenode-*.log
或者:
jps
正常至少应有:
NameNode
DataNode
ResourceManager
NodeManager
❌ Hadoop 不允许 root 启动
useradd hadoop
su - hadoop
如果你用 service 启动:
✅ 推荐直接:
start-dfs.sh
start-yarn.sh
如果你愿意,把下面内容贴出来:
例如:
Hadoop 3.3.6
伪分布式
start-dfs.sh 失败
日志:JAVA_HOME not set
我可以一步一步帮你修到能跑 jps 全绿。