Первое, что нужно выделить при распределении ядер (--executor-cores
), это помнить, что чем больше ядер в исполнителе, тем больше параллелизма, больше задач будет выполняться одновременно, лучше производительность.Но это не относится к искровой экосистеме.Оставив 1 ядро для ОС и других приложений, работающих на рабочем месте, исследование показало, что оптимально выделить 5 ядер для каждого исполнителя.
Например, если у вас есть рабочий узел с 16 ядрами, оптимальное общее число исполнителей и ядер на каждого исполнителя будет --num-executors 3
и --executor-cores 5
(как 5 * 3 = 15) соответственно.
Мало того, что оптимальное распределение ресурсов приносит лучшую производительность, это также зависит от того, как преобразования и действия выполняются на фреймах данных.Более перетасовка данных между разными исполнителями снижает производительность.