у меня есть два вопроса вокруг настройки производительности в Spark:Spark - количество исполнителей против числа для ядер
Я понимаю, один из ключевых моментов для управления параллелизмом в искровой работе является количеством разделов которые существуют в обрабатываемом RDD, а затем контролируют исполнители и ядра, обрабатывающие эти разделы. Могу ли я считать, что это так:
- # исполнителей * # исполнителей cores shoud be < = # разделов. т. е. один раздел всегда обрабатывается в одном ядре одного исполнителя. Там нет смысла иметь больше исполнителей * ядра, чем число разделов
Я понимаю, что наличие большого числа ядер на исполнитель может иметь -ve влияния на таких вещах, как пишет HDFS, но вот мой второй вопрос, чисто с точки зрения обработки данных, какая разница между этими двумя? Напр. если у меня есть 10 узлы кластера, что будет разница между этими двумя работами (при условии, что есть достаточно памяти для каждого узла, чтобы обработать все):
5 исполнителей * 2 исполнителя сердечники
2 исполнителей * 5 исполнителя стержни
Предполагая, что существует бесконечная память и процессор, с точки зрения производительности мы должны ожидать, что предыдущие два будут выполнять то же самое?
Это хорошая идея иметь больше исполнителей, чем количество узлов? Не было бы лучше иметь больше ядер для каждого исполнителя, если каждый исполнитель не будет использовать достаточное количество CPU/памяти на узле? – Shay