我正在考虑使用 Apache Spark 进行数据分析。过去,由于 NUMA 架构和对象在单个节点本地,我在 4 插槽服务器上遇到过 Java/Scala 速度变慢的情况。解决方案是为每个 NUMA 节点启动一个单独的固定 JVM,并让它们使用 Akka 相互通信。
NUMA 将如何在 Spark 中处理以避免类似情况?
最佳答案
如果您使用 --executor-cores=32
启动 Spark(假设每个插槽有 8 个虚拟核心),您将遇到同样的问题。但是你可以在每台机器上启动 4 个 worker,每个都用 --executor-cores=8
代替。然后您可以将这些执行程序固定到节点。
此设置会产生更多的通信开销,但可能是一个很好的权衡。 Spark 试图尽量减少执行者之间的通信,因为在典型情况下它们位于不同的机器上。
关于java - NUMA 系统上的 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758920/