Лучшие практики планирования Spark Streaming - PullRequest
0 голосов
/ 03 февраля 2019

У нас есть потоковое задание, которое выполняется каждые 30 минут и занимает 15 секунд, чтобы завершить работу.Каковы рекомендуемые лучшие практики в этих сценариях.Я думаю, что могу запланировать запуск конвейера данных AWS каждые 30 минут, чтобы EMR завершался через 15 секунд и создавался заново.Это рекомендуемый подход?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Для потоковых связанных заданий -> ключ должен был бы избежать ввода-вывода в вашем случае - поскольку задание, похоже, занимает всего 15 секунд.Поместите ваши сообщения в очередь (AWS SQS).Имейте функцию шага AWS, запускаемую событием Cloudwatch (реализует расписание, подобное Cron, в вашем случае каждые 30 минут - для вызова функции шага AWS), чтобы читать сообщения из SQS и идеально обрабатывать их в лямбда-выражениях.

Итакодна опция (без сервера):

Потоковая передача сообщений -> AWS SQS -> (каждые 30 минут cloudwatch запускает пошаговую функцию) -> которая запускает лямбда-сервис для обработки всех сообщений в очереди

https://aws.amazon.com/getting-started/tutorials/scheduling-a-serverless-workflow-step-functions-cloudwatch-events/

Вариант 2:

Потоковая передача сообщений ---> AWS SQS -> Обработка сообщений с использованием приложения Python / приложения Java Spring, имеющего запланированное задание, которое активируется каждые 30 минут ичитает сообщения из очереди и обрабатывает их в памяти.

Я использовал вариант 2 для решения аналитических задач, хотя моя аналитическая задача заняла 10 минут и требовала большого объема данных. Кроме того, для варианта 2 необходим мониторинг виртуальной машины (контейнер), где выполняется процесс.С другой стороны, Вариант 1 без сервера.Наконец, все сводится к программному стеку, который у вас уже есть, и программному обеспечению, необходимому для обработки потоковых данных.

0 голосов
/ 03 февраля 2019

Для задания, которое требует 15 seconds, выполнение его на EMR - пустая трата времени и ресурсов, вы, вероятно, подождите несколько минут, пока кластер EMR загрузится.

AWS Data Pipeline или AWS Batch будутимеет смысл, только если у вас долгая работа.

Во-первых, убедитесь, что вам действительно нужен Spark, поскольку, как вы описали, это может быть излишним.

Лямбда с планированием событий CloudWatch может быть всем, что вам нужно для такой быстрой работы без инфраструктуры для управления.

...