我想知道Spark执行器内存是否有任何大小限制?
考虑运行一个执行收集、联合、计数等的糟糕作业的情况
只是一点上下文,假设我有这些资源(2台机器)
Cores: 40 cores, Total = 80 cores
Memory: 156G, Total = 312
建议是什么,大的还是小的?
Spark开发团队的建议是不要使用超过64GB左右的执行器(Databricks经常在培训视频中提到)。其思想是,更大的JVM将具有更大的堆,这可能导致真正缓慢的垃圾收集周期。
我认为让你的执行者32GB甚至24GB或16GB是一个很好的做法。所以不是一个大的,而是2-4个小的。
它可能会有更多的协调开销,但我认为这些对于绝大多数应用程序来说应该是可以的。
如果你还没有读过这篇文章,请读。