apache-spark - Kubernetes 中的 Spark 作业卡在 RUNNING 状态

标签 apache-spark kubernetes

我正在本地运行的 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/

相关文章:

python - 即使在正确的位置提到了该文件,输入文件也不存在 - pyspark

scala - 无法将卷挂载到 spark.kubernetes.executor

kubernetes - 如何设置显示给 Pod 的 CPU 内核数

kubernetes - 将jessie(Debian)用于Kubernetes集群

elasticsearch - 使用本地卷获取错误 'unknown field hostPath' Kubernetes Elasticsearch

java - 连接 2 个 Spark 数据帧,以列表形式获取结果

scala - 示例Spark程序

algorithm - 数量重新分配逻辑 - 具有外部数据集的 MapGroups

mpi - Kubernetes 和 MPI

ssl - kubectl 在 Linux 上回复连接被拒绝,而在另一台机器(Mac)上回复正常