Jupyter Notebook无法连接VirtualBox内多节点Spark集群怎么办
连接失败排查及解决步骤
1 网络连通性校验
- 先将代码中的
MyMasterAddress替换为VirtualBox内Spark主节点的实际IP,不要使用hostname除非本地hosts文件已经配置了对应IP映射 - 确认VirtualBox的网络配置:若使用NAT模式,需手动配置7077、8080、4040等Spark常用端口的转发规则;若使用桥接模式,需确认主节点与本地计算机处于同一网段
- 本地终端执行
telnet 主节点实际IP 7077测试端口连通性,若连接失败先关闭主节点防火墙,或放行对应端口的入站规则 - 本地浏览器访问
http://主节点实际IP:8080,确认Spark Master WebUI可正常打开
2 集群配置校验
- 检查Spark主节点
conf/spark-env.sh文件,确认SPARK_MASTER_HOST配置的是主节点实际IP,而非127.0.0.1,绑定本地回环地址会导致外部机器无法连接 - 从Master WebUI页面确认展示的Master URL与代码中填写的
spark://xxx:7077完全一致 - 确认本地Jupyter环境安装的PySpark大版本,与VirtualBox集群的Spark大版本完全匹配,Python大版本也需和集群所有节点的Python版本一致,版本不兼容会直接导致连接失败
3 代码调整
可增加超时、资源限制配置避免初始化失败,参考代码如下:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Test") \ .master("spark://替换为实际主节点IP:7077") \ .config("spark.network.timeout", "600s") \ .config("spark.executor.heartbeatInterval", "60s") \ .config("spark.executor.memory", "1g") \ .config("spark.executor.cores", 1) \ .getOrCreate()
4 报错快速定位
- 若报错Connection refused:优先排查网络、端口、防火墙配置
- 若报错类不存在、版本不兼容:优先核对本地与集群的Spark、Python版本
- 若报错任务未分配到资源:检查集群是否有空闲资源,是否有其他运行中的任务占用了全部资源
内容的提问来源于stack exchange,提问作者John Keats
相关产品推荐
相关产品推荐

