如果我在服务器上为Spark集群分配所有可用核心,会发生什么?

时间:2019-01-27 15:53:02

标签: apache-spark bigdata

众所周知,提交我们的申请时有可能增加内核数。实际上,我正在尝试为Spark应用程序分配服务器上所有可用的内核。我想知道表演会怎样?它会减少还是比平常更好?

2 个答案:

答案 0 :(得分:0)

关于分配内核(--executor-cores)的第一件事可能是要记住,执行程序中的内核越多意味着并行性越强,更多的任务将被并发执行,从而获得更好的性能。但是对于星火生态系统而言并非如此。研究表明,为操作系统中的os和其他应用程序保留1个内核后,研究表明,为每个执行程序分配5个内核是最佳选择。

例如,如果您的工作节点具有16个核心,则最佳执行者总数和每个执行者的核心总数分别为--num-executors 3--executor-cores 5(按5 * 3 = 15)。

最佳资源分配不仅可以带来更好的性能,还取决于如何在数据帧上完成转换和操作。不同执行者之间更多的数据改组会影响性能。

答案 1 :(得分:-1)

您的操作系统始终需要满足其绝对需求的资源。
最好为操作系统和其他应用程序保留1个内核和1 GB内存。
如果您将所有资源分配给spark,那么它将不会提高您的性能,您的其他应用程序会紧缺资源。
我认为最好只分配所有资源来激发火花。
如果您想调整Spark集群,请遵循以下帖子 How to tune spark executor number, cores and executor memory?