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