Рекомендации по развертыванию приложений Apache Spark

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

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

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

на (1), мне нужно пнуть периодически отключайте приложение Spark.

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

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

Я пытаюсь выяснить наиболее распространенные / лучшие стратегии развертывания практики для приложений Spark.

пока вариантов я вижу являются:

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

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

    • создает контекст spark программно, чтобы поговорить с кластером spark
    • позволяет пользователям запускать задачи через интерфейс http
    • использование кварца (например) для управления планированием
    • может использовать кластер с ZooKeeper выборы для устойчивости
  3. Искра сервер заданий (https://github.com/ooyala/spark-jobserver)

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

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

спасибо!

1 ответов


даже если вы не используете Мезос для Spark, вы могли бы взглянуть на

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

-марафон платформа Mesos для длительных приложений

обратите внимание, что это не означает, что вам нужно переместить развертывание spark в mesos, например, вы можете просто использовать chronos для запуска spark-submit.

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