首页 > 解决方案 > 为什么我们需要比 Spark 中的机器数量更多的执行器?

问题描述

请求比集群中可用机器更多的执行程序背后的逻辑是什么?

在理想情况下,我们希望每台机器上都有 1 个执行程序(=1 jvm),而且每台机器上都不少。
如果不是,那为什么?

提前致谢

标签: scalaapache-sparkpyspark

解决方案


在理想情况下,我们希望每台机器上都有 1 个执行程序(=1 jvm),而且每台机器上都不少。

不必要。根据可用内存量和 JVM 实现,单独的虚拟机可能是更好的选择,尤其是:

  • 改进大型机器的内存管理 - 例如为什么 35GB 堆小于 32GB – Java JVM Memory Oddities
  • 为了提高对不稳定工作负载的容错能力——如果一个 JVM 发生故障,您将失去所有相应线程的工作,因此保持较小可以使事情得到控制。
  • 为了最大限度地减少 GC 调整所需的工作量 - 非常大的实例可能非常难以调整。

推荐阅读