NUMA 系统上的 Spark

Spark on NUMA systems

我正在考虑使用 Apache Spark 进行数据分析。过去,由于 NUMA 架构和对象在单个节点本地,我在 4 插槽服务器上经历过 Java/Scala 速度下降。解决方案是为每个 NUMA 节点启动一个单独的固定 JVM,并让它们使用 Akka 相互通信。

NUMA 将如何在 Spark 中处理以避免类似情况?

如果您使用 --executor-cores=32 启动 Spark(假设每个插槽有 8 个虚拟核心),您将遇到同样的问题。但是你可以在每台机器上启动 4 个工人,每个工人用 --executor-cores=8 代替。然后你可以将这些执行程序固定到节点上。

此设置会产生更多的通信开销,但可能是一个很好的权衡。 Spark 试图最小化执行者之间的通信,因为在典型情况下它们在不同的机器上。