Как настроить несколько заданий потоковой передачи Spark с различной длительностью пакета?


Мы находимся на начальных этапах преобразования текущей архитектуры данных крупного предприятия, и в настоящее время я создаю платформу Spark Streaming ETL, в которой мы бы подключили все наши источники к назначениям (источником/назначениями могут быть темы Кафки, Flume, HDFS и т. д.) через преобразования. Это будет выглядеть примерно так:

SparkStreamingEtlManager.addEtl(Source, Transformation*, Destination) SparkStreamingEtlManager.streamEtl() streamingContext.start()

Предположение состоит в том, что, поскольку у нас должен быть только один SparkContext, мы развернем все конвейеры ETL в одном применение / баночка.

Проблема в том, что batchDuration является атрибутом самого контекста, а не ReceiverInputDStream (почему это так?). Нужно ли поэтому иметь несколько кластеров Spark или, допустим, несколько SparkContexts и развернуть несколько приложений? Существует ли какой-либо другой способ контролировать длительность пакета для каждого получателя?

Пожалуйста, дайте мне знать, если какие-либо из моих предположений наивны или нуждаются в перефразировании. Спасибо!
1 5

1 ответ:

По моему опыту, разные потоки имеют разные требования к настройке. Пропускная способность, задержка, пропускная способность принимающей стороны, SLA, которые должны соблюдаться, и т. д.

Чтобы удовлетворить эту множественность, мы должны настроить каждое потоковое задание Spark для решения указанной специфики. Таким образом, не только интервал пакетной обработки, но и ресурсы, такие как память и процессор, секционирование данных, # исполняющих узлов (когда нагрузки привязаны к сети).

Из этого следует, что каждое потоковое задание Spark становится отдельным развертывание заданий в кластере Spark. Это также позволит осуществлять мониторинг и управление отдельными трубопроводами независимо друг от друга и поможет в дальнейшей тонкой настройке процессов.

В нашем случае мы используем Mesos + Marathon для управления набором заданий Spark Streaming под управлением 3600x24x7.