У меня есть приложение spark, которое загружает данные из CSV-файлов, вызывает механизм Drools, использует flatmap и сохраняет результаты в выходные файлы (.csv)
Ниже приведены два теста:
1) Когда я запускаю это приложение с 2 рабочими узлами , имеющими одинаковую конфигурацию (8 ядер), приложению требуется 5,2 минуты для завершения:
2) Когда я запускаю это приложение с 3 рабочими узлами , имеющими одинаковую конфигурацию (8 ядер), приложению требуется 7,6 минут для завершения:
- Нет. Исполнителей: 266
- Общее количество ядер: 24
- используемая память: 3 ГБ (1 ГБ на исполнителя)
- Доступная память: 45 ГБ
Ожидаемый результат
Это займет меньше времени после добавления еще одного рабочего узла с такой же конфигурацией.
Фактический результат
Это займет больше времени после добавления еще одного рабочего узла с такой же конфигурацией.
Я запускаю приложение, используя команду spark-submit
в автономном режиме .
Здесь я хочу понять, почему увеличение рабочего узла не увеличивает производительность, разве это не правильное ожидание?
EDIT
Посмотрев на другой подобный вопрос по stackoverflow, я попытался запустить приложение с spark.dynamicAllocation.enabled=true
, однако это еще больше снижает производительность.