В искровой литературе говорится
Каждое приложение получает свои собственные процессы-исполнители, которые остаются активными на протяжении всего приложения и выполняют задачи в нескольких потоках.
И если я правильно понимаю, при статическом распределении исполнители приобретаются приложением Spark, когда контекст Spark создается на всех узлах в кластере (в кластерном режиме). у меня есть пара вопросов
Если исполнители приобретаются на всех узлах и останутся выделенными для этого приложения в течение всего времени работы всего приложения, нет ли шанса, что многие узлы останутся бездействующими?
В чем преимущество получения ресурсов при создании контекста Spark, а не в DAGScheduler? Я имею в виду, что приложение может быть сколь угодно длинным и просто удерживать ресурсы.
Итак, когда DAGScheduler пытается получить предпочтительные местоположения, а исполнители на этих узлах выполняют задачи, отказывается ли он от исполнителей на других узлах?
Я проверил связанный с этим вопрос Искра на пряже работать с локацией данных при запуске экзекьюторов
Но я не уверен, что есть окончательный ответ