Spark如何实现任务之间的内存公平



我在看这个关于spark内存管理的演示。

他谈到了他们如何在一个执行者的不同任务之间实现公平(12:00(。他提出了任务之间动态分配的想法,并声明如果开始执行更多任务,Spark会将其他任务的页面溢出到磁盘。

我之前读过Spark中的任务本质上是线程,而在Java中,我们没有这种能力来管理线程的内存并在它们之间建立内存公平性。我想知道Spark是怎么做到的?

我不确定公平是否有效。

  • 这里有一个优秀的执行器内存读取,每个执行器划分超过1个内核https://www.davidmcginnis.net/post/spark-job-optimization-myth-5-increasing-executor-cores-is-always-a-good-idea,这与溢出到磁盘无关。

  • 溢出到磁盘对于可用内存来说太大。分区也可以被完全逐出,从而导致重新计算(从最后一个检查点开始(。

我所处的模式与本文相似,因为我们用一个Core运行了更多的执行器。Spark的默认值实际上也是1,我认为这是供应商经过深思熟虑的默认值。

最新更新