Я пытаюсь настроить автоматическое масштабирование для наших заданий Spark Streaming, выполняющихся на YARN в соответствии с Elastic Spark Streaming .Между прочим, я решил не использовать внутреннего автоматического масштабирования Spark , потому что нам нужно было агрессивно увеличивать / уменьшать, чем было упомянуто там, наряду с несколькими другими параметрами для настройки масштабирования, но я использовал аналогичный код для выполнения масштабирования.
Итак, я использую экземпляр Планировщик пряжи , который я извлекаю из SparkContext в начале задания, чтобы периодически выполнять операции масштабирования.Я вижу, что YARN не отвечает на запросы масштабирования немедленно, даже когда у него достаточно ресурсов (как с точки зрения ядер, так и памяти).Он реагирует примерно через час работы заданий (примерно после 5-6 вызовов requestTotalExecutors
), и поведение здесь даже не является детерминированным с точки зрения того, когда оно начинается.Запросы на уменьшение при вызове killExecutors(Seq)
по-прежнему работают, как и ожидалось, поэтому масштабирование только по какой-то причине не работает.
Я не уверен, есть ли какая-то конфигурация на YARN или Spark, которую я пропустил, какаявызывает это странное поведение, и я здесь для помощи.