Если вы выполняете задание Spark с 4 исполнителями (4 различными процессами Java), и каждый из них настроен на 1 ГБ памяти и только 1 ядро (--executor-memory 1g --executor-cores 1)тогда это означает, что вы можете запускать только одну рабочую задачу за раз.Увеличение числа исполнителей, использующих те же конфигурации, что и у вас, даст лучшие результаты.
Если вы хотите улучшить производительность, используя только 4 исполнителя, то увеличение количества ядер увеличит уровень параллелизма (одновременно выполняется больше рабочих задач).Тем не менее, вам, скорее всего, потребуется больше памяти по мере увеличения количества ядер, а также по мере увеличения использования памяти вы должны быть уверены, что не столкнетесь с проблемами производительности Java (Сборка мусора).
ответьте на ваш вопрос очень кратко, без каких-либо других деталей, теоретически вы МОЖЕТЕ получить лучшие результаты с 4 исполнителями с 3 или 4 ядрами в каждом (12 или 16 задач, выполняющихся параллельно), в отличие от 6 или 10 исполнителей только с 1 ядром в каждом (6 или 10 задач, выполняемых одновременно).
Отредактировано:
Я игнорирую ваше утверждение здесь о "Spark Streaming".Существует гораздо больше факторов, которые могут повлиять на производительность вашего потокового приложения Spark, а не только количество исполнителей.В некоторых случаях, например, при чтении данных только из одного тематического раздела Kafka с использованием прямого API, увеличение числа исполнителей и ядер не окажет никакого влияния.