Лучшие практики внедрения приложений 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 для приложений с большим сроком выполнения
Обратите внимание, что это не означает, что вам нужно переместить развертывание искры в мезос, например. вы могли бы просто использовать хроны, чтобы вызвать искру-прием.
Надеюсь, я правильно понял вашу проблему, и это немного поможет вам!