You need to enable JavaScript to run this app. Docker搭建Spark Standalone集群后spark-submit提交任务失败咨询
优惠活动
大模型
产品
解决方案
定价
更多

Docker搭建Spark Standalone集群后spark-submit提交任务失败咨询

1. spark-submit脚本路径问题

你在Jupyter容器内执行spark-submit命令时,直接填写Jupyter容器内的本地脚本路径即可,不需要保证Spark Master容器能访问到该路径:

  • spark-submit客户端运行在你执行命令的Jupyter容器上,会自动将提交的脚本分发到集群的Worker节点执行,无需Master节点读取本地脚本。

你提到的共享目录/opt/workspace找不到的问题,可以按以下方式排查:

  • 执行docker inspect <容器名>查看Mounts字段,确认共享卷是否挂载成功,比如检查spark-master、spark-worker容器的挂载配置是否正常
  • 确认你是否把脚本存到了Jupyter容器的/opt/workspace路径下,只有该路径下的内容才会同步到共享卷,其他路径的文件不会同步

2. 任务无资源报错的根因

你遇到的Initial job has not accepted any resources报错和脚本路径无关,是资源配置不匹配导致的:

  • 你的docker-compose配置中,每个Spark Worker节点仅分配了1核CPU、512M内存
  • 但你的代码里申请的Executor资源是1核CPU、2G内存,远大于Worker节点能提供的最大内存,Worker无法满足资源申请,因此任务一直处于等待状态
  • Jupyter中可以正常运行的原因是,你在Notebook中运行时实际使用的是本地模式,占用的是Jupyter容器的资源,不需要向集群Worker申请资源。

解决步骤

  1. 修改代码中的资源配置,将Executor内存调整到Worker可提供的范围内,示例:
# 调整为512m以内,预留部分内存给Worker进程本身
sparkConf.set("spark.executor.memory", "480m")
  1. 访问宿主机http://localhost:8080打开Spark Master的Web UI,确认两个Worker节点已正常注册,且可用内存、核心数符合配置
  2. 如果你的脚本依赖其他外部文件,建议将脚本和依赖文件都放到Jupyter容器的/opt/workspace路径下,该路径是所有节点共享的,可避免文件找不到的问题

内容的提问来源于stack exchange,提问作者J.C Guzman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 01:54:06