首页 > 解决方案 > 资源匮乏下 Kubernetes 上的 Spark 作业无限期等待 SPARK_MIN_EXECUTORS

问题描述

我正在使用 Spark 3.0.1 并在 Kubernetes 上进行项目 spark 部署,其中 Kubernetes 代理集群管理器用于 spark 作业和 spark 使用客户端模式提交作业。如果 Cluster 没有足够的资源(CPU/内存)来满足最少数量的 executor,则 executor 会无限期地进入 Pending 状态,直到资源释放。

假设,集群配置是:

total Memory=204Gi
used Memory=200Gi
free memory= 4Gi
SPARK.EXECUTOR.MEMORY=10G
SPARK.DYNAMICALLOCTION.MINEXECUTORS=4
SPARK.DYNAMICALLOCATION.MAXEXECUTORS=8

此处不应提交作业,因为分配的执行者少于 MIN_EXECUTORS。

在这种情况下,司机如何中止工作?

标签: apache-sparkkubernetes

解决方案


首先要提一下,kubernetes 尚不支持 spark 动态分配(从 3.0.1 版开始),它正在为将来的版本准备中Link

而对于您发布的要求,您可以通过在作业初始化之前运行资源监视器代码片段来解决,并以错误终止初始化 pod 本身。

如果你想从 CLI 运行它,你可以使用kubectl describe nodes/kube-capacity 实用程序来监控资源


推荐阅读