Kubernetes 中的 Spark 作业卡在 RUNNING 状态

Vic*_*tor 3 apache-spark kubernetes

我正在本地运行的 Kubernetes(Docker 桌面)中提交 Spark 作业。我能够提交作业并在屏幕上看到它们的最终输出。

但是,即使它们已完成,驱动程序和执行程序 Pod 仍处于 RUNNING 状态。

用于将 Spark 作业提交到 kubernetes 的基本映像是 Spark 附带的映像,如文档中所述。

这是我的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
Run Code Online (Sandbox Code Playgroud)

这就是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
Run Code Online (Sandbox Code Playgroud)

Vic*_*tor 6

弄清楚了。我忘记stop了 Spark 上下文。我的脚本现在看起来像这样,完成后,驱动程序进入Completed状态,驱动程序被删除。

sc = SparkContext()

sqlContext = SQLContext(sc)

# code

sc.stop()
Run Code Online (Sandbox Code Playgroud)