Предположим, у вас есть менеджер кластера Spark + Standalone. Вы открыли искровую сессию с некоторыми конфигами и хотите запустить SomeSparkJob
40 раз параллельно с разными аргументами.
Вопросы
- Как установить сумму возврата при сбое задания?
- Как программно перезапускать задания при сбое? Это может быть полезно, если задания завершаются сбоем из-за нехватки ресурсов. Затем я могу запускать по одному все задания, требующие дополнительных ресурсов.
- Как перезапустить приложение spark при сбое задания? Это может быть полезно, если заданию не хватает ресурсов, даже если оно запущено одновременно. Чтобы изменить конфигурацию ядер, ЦП и т. д., мне нужно перезапустить приложение в автономном диспетчере кластеров.
Мои обходные пути
1) Я почти уверен, что 1-й пункт возможен, поскольку это возможно по адресу активировать локальный режим. Я просто не знаю, как это сделать в автономном режиме.
2-3) Можно передать слушателю контекст искры, например spark.sparkContext().addSparkListener(new SparkListener() {
. Но кажется, что SparkListener
не хватает обратных вызовов сбоя.
Также есть куча методов с очень плохой документацией. Я никогда не использовал их, но, возможно, они могли бы помочь решить мою проблему.
spark.sparkContext().dagScheduler().runJob();
spark.sparkContext().runJob()
spark.sparkContext().submitJob()
spark.sparkContext().taskScheduler().submitTasks();
spark.sparkContext().dagScheduler().handleJobCancellation();
spark.sparkContext().statusTracker()