我正在本地运行的 Kubernetes(Docker 桌面)中提交 Spark 作业。我可以提交作业并在屏幕上查看它们的最终输出。
但是,即使它们已完成,驱动程序和执行程序 pod 仍处于 RUNNING 状态。
用于将 Spark 作业提交到 kubernetes 的基本镜像是 Spark 附带的,如 docs 中所述。 .
这就是我的spark-submit
命令看起来像:
~/spark-2.4.3-bin-hadoop2.7/bin/spark-submit \
--master k8s://https://kubernetes.docker.internal:6443 \
--deploy-mode cluster \
--name my-spark-job \
--conf spark.kubernetes.container.image=my-spark-job \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.kubernetes.submission.waitAppCompletion=false \
local:///opt/spark/work-dir/my-spark-job.py
这就是
kubectl get pods
返回:NAME READY STATUS RESTARTS AGE
my-spark-job-1568669908677-driver 1/1 Running 0 11m
my-spark-job-1568669908677-exec-1 1/1 Running 0 10m
my-spark-job-1568669908677-exec-2 1/1 Running 0 10m
最佳答案
弄清楚了。我忘了stop
Spark 上下文。我的脚本现在看起来像这样,完成后,驱动程序进入 Completed
状态和驱动程序被删除。
sc = SparkContext()
sqlContext = SQLContext(sc)
# code
sc.stop()
关于apache-spark - Kubernetes 中的 Spark 作业卡在 RUNNING 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964848/