细粒度模式下的 Spark 会保留资源,即使它处于空闲状态并且不执行任何操作

Spark in fine-grained mode hold resources even it is idle and it doesn't perform any actions

我使用 Mesos 集群管理器以细粒度模式启动 Spark。

spark-shell.sh --conf 'spark.mesos.coarse=false' --executor-memory 20g --driver-memory 5g

而且我可以在 Mesos UI 上看到它不使用任何资源,这很好。然后我执行一些操作,在执行操作期间,Spark 使用所有集群资源,这也很好。

但是当操作完成后,Spark 仍然会永久保留一些 CPU 和内存。

为什么 Spark 在闲置且不执行任何操作时仍然需要一些资源,如果闲置如何释放所有资源?

尝试配置,例如spark.mesos.mesosExecutor.cores = 0.5 限制每个执行程序使用的核心数(在 fine-grained 模式下)。

您可以考虑降低 executor-memory,具体取决于您的工作表现。