“Linux 上 Hadoop 报错怎么办”这个问题比较宽泛,排查思路是通用的,下面我按常见报错类型 + 排查步骤给你一个实用指南,你可以对照自己的报错来定位。
不管什么报错,先确认:
# 看 Hadoop 日志
cd $HADOOP_HOME/logs
ls
tail -n 200 hadoop-*-namenode-*.log
tail -n 200 hadoop-*-datanode-*.log
hadoop version
报错示例
Error: JAVA_HOME is not set and could not be found
✅ 解决:
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
添加:
export JAVA_HOME=/usr/java/jdk1.8.0_xxx
报错示例
Permission denied (publickey,password)
✅ 解决:
ssh-keygen -t rsa
ssh-copy-id localhost
# 或
ssh-copy-id hadoop@slave1
测试:
ssh localhost
常见原因
✅ 解决:
hdfs namenode -format
⚠️ 注意:会清空 HDFS 数据
或同步 clusterID:
cat $HADOOP_HOME/data/dfs/name/current/VERSION
cat $HADOOP_HOME/data/dfs/data/current/VERSION
报错示例
Initialization failed for Block pool
✅ 常见原因:
解决:
rm -rf $HADOOP_HOME/data/dfs/data
hdfs namenode -format
报错示例
BindException: Address already in use
✅ 解决:
netstat -tunlp | grep 9000
kill -9 PID
报错示例
mkdir: Permission denied
✅ 解决:
chown -R hadoop:hadoop $HADOOP_HOME
✅ 检查:
hostname
cat /etc/hosts
建议:
127.0.0.1 localhost
192.168.1.10 master
192.168.1.11 slave1
关闭防火墙:
systemctl stop firewalld
你可以直接把 报错日志贴出来(或截图文字),例如:
start-dfs.sh 报错hadoop fs -put 报错我可以逐行帮你分析并给具体命令。