Лучшие практики внедрения приложений Apache Spark

У меня есть несколько вариантов использования для Apache Spark-приложений/скриптов, как правило, следующего вида:

Общий вариант использования ETL - более конкретно преобразование семейства столбцов Кассандры, содержащее множество событий (поиск источников событий) в различные агрегированные семейства столбцов.

Потоковое использование - в реальном времени анализ событий по мере их поступления в систему.

Для (1) мне нужно будет периодически запускать приложение Spark.

Для (2) просто запускайте длительный процесс Spark Streaming во время загрузки и отпустите его.

(Примечание. Я использую Spark Standalone в качестве менеджера кластера, поэтому нет нити или мезо)

Я пытаюсь выяснить наиболее распространенные стратегии внедрения приложений Spark.

Пока есть варианты, которые я вижу:

  • Развертывание моей программы в качестве баннера и запуск различных задач с помощью функции spark-submit - которая, как представляется, рекомендуется в искровых документах. Некоторые мысли об этой стратегии:

    • как вы начинаете/останавливаете задачи - просто используя простые скрипты bash?
    • как управляется планирование? - просто используйте cron?
    • любая устойчивость? (например, Кто планирует выполнение заданий для запуска, если сервер драйвера умирает?)
  • Создание отдельной webapp в качестве программы драйвера.

    • создает контекст искры программно, чтобы поговорить с искровым кластером.
    • позволяет пользователям запускать задачи через http-интерфейс
    • с помощью Quartz (например) для управления расписанием
    • может использовать кластер с выборами в zookeeper для повышения устойчивости.
  • Сервер справки Spark (https://github.com/ooyala/spark-jobserver)

    • Я не думаю, что для меня много пользы (2), поскольку у меня нет (пока) много команд и проектов, говорящих с Spark, и все равно потребуется приложение, чтобы поговорить с сервером заданий в любом случае
    • Невозможно создать расписание, насколько я могу видеть

Я хотел бы понять общий консенсус w.r.t простую, но надежную стратегию развертывания. Я пока не смог определить ее, травля в Интернете.

Большое спасибо!

Ответы

Ответ 1

Даже если вы не используете Mesos для Spark, вы можете посмотреть

- Chronos предлагает распределенный и отказоустойчивый cron

- Marathon Рамка Mesos для приложений с большим сроком выполнения

Обратите внимание, что это не означает, что вам нужно переместить развертывание искры в мезос, например. вы могли бы просто использовать хроны, чтобы вызвать искру-прием.

Надеюсь, я правильно понял вашу проблему, и это немного поможет вам!