Динамическое распределение для потоковой передачи искр

В нашем кластере запущено задание Spark Streaming с другими заданиями (базовые задания Spark). Я хочу использовать динамическое распределение ресурсов для этих заданий, включая Spark Streaming. Согласно нижеприведенной проблеме JIRA, динамическое распределение не поддерживается Spark Streaming(в версии 1.6.1). Но это исправлено в 2.0.0

JIRA ссылка

Согласно PDF в этом выпуске говорится, что должно быть поле конфигурацииspark.streaming.dynamicAllocation.enabled=trueНо я не вижу этой конфигурации в документации.

Может кто-нибудь, пожалуйста, подтвердите,

  1. Не могу ли я включить динамическое распределение ресурсов для Spark Streaming в версии 1.6.1.
  2. Это доступно в Spark 2.0.0. Если да, какую конфигурацию следует установить (spark.streaming.dynamicAllocation.enabled=true или же spark.dynamicAllocation.enabled=true)

1 ответ

Могу ли я включить динамическое распределение ресурсов для Spark Streaming для версии 1.6.1?

Да, вы можете включить, настроив динамическое выделение для любого искрового приложения с spark.dynamicAllocation.enabled=true Но у меня мало проблем с потоковым приложением (упомянуто в JIRA)

  1. Ваши исполнители никогда не могут бездействовать, так как они запускают что-то каждые N секунд
  2. Вы должны иметь хотя бы один приемник, работающий всегда
  3. Существующая эвристика не учитывает длину очереди пакета

Итак, им добавлено новое свойство (spark.streaming.dynamicAllocation.enabled) в Spark 2.0 только для потоковых приложений.

Это доступно в Spark 2.0.0 . Если да, какую конфигурацию следует установить spark.streaming.dynamicAllocation.enabled или spark.dynamicAllocation.enabled?

Должно быть spark.streaming.dynamicAllocation.enabled если приложение потоковое, в противном случае воспользуйтесь spark.dynamicAllocation.enabled

Изменить: (согласно комментарию на 2017-январь-05)

На сегодняшний день это не задокументировано, но я получаю это свойство и реализацию в исходном коде Spark. ExecutorAllocationManager.scala (Юнит тесты ExecutorAllocationManagerSuite.scala) класс был включен в Spark 2.0, и эта реализация отсутствует в Spark 1.6 и ниже.