Рекомендации по развертыванию приложений Apache Spark
У меня есть несколько вариантов использования для приложений/скриптов Apache Spark, как правило, следующего вида:
общий случай использования ETL - более конкретно, преобразование семейства столбцов Cassandra, содержащего много событий (Источник событий think), в различные агрегированные семейства столбцов.
потоковое использование case - анализ событий в реальном времени по мере их поступления в систему.
на (1), мне нужно пнуть периодически отключайте приложение Spark.
на (2), просто начните длительный процесс потоковой передачи искры во время загрузки и отпустите его.
(примечание-Я использую Spark Standalone в качестве менеджера кластеров, поэтому нет пряжи или мезонов)
Я пытаюсь выяснить наиболее распространенные / лучшие стратегии развертывания практики для приложений Spark.
пока вариантов я вижу являются:
-
развертывание моей программы в виде jar и запуск различных задач с помощью spark-submit-что, по-видимому, рекомендуется в документах spark. Некоторые мысли об этой стратегии:
- как вы запускаете / останавливаете задачи-просто используя простые сценарии bash?
- как управляется планирование? - просто использовать cron?
- какой устойчивости? (например, кто планирует выполнение заданий, если сервер драйверов умирает?)
-
создание отдельного webapp программа драйвера.
- создает контекст spark программно, чтобы поговорить с кластером spark
- позволяет пользователям запускать задачи через интерфейс http
- использование кварца (например) для управления планированием
- может использовать кластер с ZooKeeper выборы для устойчивости
-
Искра сервер заданий (https://github.com/ooyala/spark-jobserver)
- я не думаю, что есть много преимуществ над (2) для меня, так как у меня нет (пока) много команд и проектов, говорящих с Spark, и все равно нужно какое-то приложение, чтобы поговорить с job server в любом случае
- нет планирования, встроенного, насколько я вижу
Я хотел бы понять общий консенсус w.r.t простая, но надежная стратегия развертывания - у меня нет пока что удалось определить его по тралению паутины.
спасибо!
1 ответов
даже если вы не используете Мезос для Spark, вы могли бы взглянуть на
-Хронос предлагая распределенный и отказоустойчивый cron
-марафон платформа Mesos для длительных приложений
обратите внимание, что это не означает, что вам нужно переместить развертывание spark в mesos, например, вы можете просто использовать chronos для запуска spark-submit.
надеюсь, я правильно понял вашу проблему, и это поможет вам немного!