在AWS EKS集群中通过spark submit启动Driver Pod失败
解决EKS集群中Spark Cluster模式Driver Pod启动报错问题
可能原因及修复步骤
1. Spark镜像配置错误
Spark官方镜像(如apache/spark或bitnami/spark)在cluster模式下,启动Driver的正确入口并非直接使用driver命令。如果你的Pod配置里把command设为["driver"],必然会出现找不到可执行文件的报错。
修复:
- 确认
--conf spark.kubernetes.driver.container.image指定的镜像为官方合规镜像,确保镜像包含完整的Spark运行环境。 - 若自定义了Driver Pod的启动命令,应使用镜像内置的
spark-submit脚本,比如官方镜像用/opt/spark/bin/spark-submit,bitnami镜像用/opt/bitnami/spark/bin/spark-submit。
2. 自定义镜像缺失必要文件或路径配置错误
如果用的是自己构建的Spark镜像,可能存在Spark二进制文件未正确打包、$PATH未包含Spark的bin目录等问题。
修复:
- 构建镜像时,在Dockerfile中添加环境变量配置,将Spark的bin目录加入
PATH:ENV PATH="/opt/spark/bin:${PATH}" - 验证镜像内存在
spark-submit等必要可执行文件,且文件拥有可执行权限。
3. Spark提交参数错误
提交任务时错误设置了spark.kubernetes.driver.command参数,指定了不存在的driver命令,会直接导致启动失败。
修复:
- 检查提交命令,移除错误的
spark.kubernetes.driver.command配置,或者替换为正确的启动命令。示例正确提交命令:spark-submit \ --master k8s://https://<eks-api-server-url> \ --deploy-mode cluster \ --name spark-test \ --conf spark.kubernetes.container.image=apache/spark:3.5.0 \ --conf spark.kubernetes.driver.pod.name=spark-driver-test \ local:///opt/spark/examples/src/main/python/pi.py - 注意任务文件路径要使用
local://前缀,且路径需与镜像内的实际文件位置一致。
4. EKS节点容器运行时配置异常
极少数情况下,containerd配置异常会导致无法正确解析镜像内的可执行文件路径。
修复:
- 检查EKS节点上的containerd配置,确保容器环境变量继承正常,未被错误覆盖。
- 重启节点的containerd服务,或重新部署节点组,恢复正常的运行时环境。
内容的提问来源于stack exchange,提问作者falloutboy
相关产品推荐
相关产品推荐

