Спарк-тюнинг оптимизирует время работы с исполнителями - PullRequest
0 голосов
/ 19 октября 2018

Когда я запускаю приложение для потокового воспроизведения, можно ли получить лучшее время выполнения для 4 исполнителей, чем для 1,2,6,10 исполнителей?

1 Ответ

0 голосов
/ 21 октября 2018

Если вы выполняете задание 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, увеличение числа исполнителей и ядер не окажет никакого влияния.

...