下面按常见场景 + 逐步排查的方式,整理一份 Linux 环境下 Spark 安装疑难解答指南,涵盖从环境准备到运行出错的典型问题。
Spark 强依赖 Java。
java -version
| Spark 版本 | 推荐 JDK |
|---|---|
| Spark 3.x | JDK 8 / JDK 11 |
| Spark 2.x | JDK 8 |
⚠️ 不推荐 JDK 17+(除非你非常清楚兼容性问题)
echo $JAVA_HOME
若为空,编辑:
vim ~/.bashrc
添加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
生效:
source ~/.bashrc
✅ 推荐:
spark-3.x.x-bin-hadoop3.tgz
❌ 避免:
without-hadoop
除非你明确知道自己在做什么
tar -zxvf spark-*.tgz
若报错:
Permission denied
解决:
chmod +x spark-*.tgz
或:
sudo tar -zxvf spark-*.tgz -C /opt/
vim ~/.bashrc
添加:
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
生效:
source ~/.bashrc
验证:
spark-shell
spark-shell 启动报错JAVA_HOME is not set
✅ 解决:确认 JAVA_HOME 配置并 source ~/.bashrc
Address already in use
✅ 解决:
netstat -tunlp | grep 4040
kill -9 PID
或换端口:
spark-shell --conf spark.ui.port=4050
$SPARK_HOME/sbin/start-master.sh
$SPARK_HOME/sbin/start-worker.sh spark://master:7077
failed to launch: nice -n 0
✅ 解决:
cat $SPARK_HOME/logs/spark-*.out
检查:
hostname -f
确保:
/etc/hosts 配置正确systemctl stop firewalld
或开放端口:
7077 / 8080 / 8081
错误示例:
ClassNotFoundException: org.apache.hadoop.fs.FileSystem
✅ 解决:
HADOOP_HOMEPermission denied: user=root, access=WRITE
✅ 解决:
hdfs dfs -chmod -R 777 /user
或:
export HADOOP_USER_NAME=hdfs
Executor lost
✅ 修改:
spark-submit --executor-memory 1G --driver-memory 1G
或编辑:
$SPARK_HOME/conf/spark-defaults.conf
| 错误 | 原因 | 解决方案 |
|---|---|---|
| JAVA_HOME not set | Java 未配置 | 设置 JAVA_HOME |
| Address already in use | 端口占用 | 改端口 / kill |
| Worker 无法连接 Master | 网络 / hosts | 检查 hostname |
| ClassNotFoundException | Hadoop 缺失 | 使用 with-hadoop |
| Executor lost | 内存不足 | 调小内存 |
java -version
echo $JAVA_HOME
echo $SPARK_HOME
spark-shell
如果你愿意,可以把具体报错信息贴出来(完整异常栈),我可以逐行帮你分析并给出精确解决方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。