28 июня 2022 г. в сотрудничестве с сообществом Spark компания Databricks анонсировала Project Lightspeed, новое поколение потокового движка Spark.

По мере увеличения разнообразия приложений, переходящих на потоковую передачу данных, появились новые требования для поддержки наиболее востребованных рабочих нагрузок данных для Lakehouse, потоковой передачи данных. Структурированная потоковая передача Spark получила широкое распространение с первых дней потоковой передачи благодаря простоте использования, производительности, большой экосистеме и сообществам разработчиков. Имея это в виду, Databricks будет сотрудничать с сообществом и поощрять участие в Project Lightspeed для повышения производительности, поддержки экосистемы для соединителей, расширения функций обработки данных с помощью новых операторов и API, а также упрощения развертывания, эксплуатации, мониторинга и устранения неполадок. В рамках этого проекта будут вложены значительные средства в улучшение следующих областей:

Предсказуемая низкая задержка

Структурированная потоковая передача Apache Spark обеспечивает сбалансированную производительность по нескольким параметрам — пропускной способности, задержке и стоимости. По мере того, как структурированная потоковая передача расширялась и используется в новых приложениях, команда Databricks профилирует рабочие нагрузки своих клиентов, чтобы оптимизировать хвостовую задержку до 2 раз. Для достижения этой цели предпринимаются следующие инициативы:

  • Управление смещением. Профилирование рабочей нагрузки наших клиентов и эксперименты с производительностью показывают, что операции управления смещением занимают до 30–50 % времени для конвейеров. Это можно улучшить, сделав эти операции асинхронными и с настраиваемой частотой, тем самым уменьшив задержку.
  • Асинхронная контрольная точка. Текущий механизм контрольной точки синхронно записывает в хранилище объектов после обработки группы записей. Это существенно влияет на задержку. Это можно улучшить на целых 25 %, перекрывая выполнение следующей группы записей записью контрольной точки для предыдущей группы записей.
  • Частота контрольных точек состояния — Spark Structured Streaming проверяет состояние после обработки группы записей, что увеличивает сквозную задержку. Вместо этого, если мы сделаем его настраиваемым для проверки каждой N-й группы, задержка может быть дополнительно уменьшена в зависимости от выбора для N.

Коннекторы и экосистема

Соединители упрощают использование механизма Spark Structured Streaming для обработки данных и записи обработанных данных в различные шины обмена сообщениями, такие как Apache Kafka, и системы хранения, такие как Delta Lake. В рамках проекта Lightspeed команда будет работать над следующим:

  • Новые соединители. В Databricks будут добавлены новые соединители, работающие с партнерами (например, Google Pub/Sub, Amazon DynamoDB), чтобы разработчики могли легко использовать механизм Spark Structured Streaming с дополнительными шины обмена сообщениями и системы хранения, которые они предпочитают.
  • Улучшение коннектора — Databricks предоставит новые функции и повысит производительность существующих коннекторов. Некоторые примеры включают поддержку аутентификации AWS IAM в коннекторе Apache Kafka и расширенную поддержку разветвления в коннекторе Amazon Kinesis.

Расширенный функционал для обработки данных/событий

Spark Structured Streaming уже имеет богатую функциональность для выражения преобладающих наборов вариантов использования. По мере того, как предприятия расширяют возможности потоковой передачи для новых вариантов использования, для их краткого описания требуются дополнительные функциональные возможности. Project Lightspeed расширяет функциональность в следующих областях:

Несколько операторов с отслеживанием состояния. В настоящее время структурированная потоковая передача поддерживает только один оператор с отслеживанием состояния для каждого задания потоковой передачи. Однако в некоторых случаях использования требуется несколько операторов состояния в задании, например:

  • Агрегация цепочек временных окон (например, 5-минутная агрегация падающих окон, за которой следует 1-часовая агрегация падающих окон)
  • Сцепленное внешнее соединение потока-потока (например, левое внешнее соединение B левое внешнее соединение C)
  • Объединение временного интервала между потоками с последующей агрегацией временных окон
  • Project Lightspeed добавит поддержку этой возможности с последовательной семантикой.

Расширенная работа с окнами — Spark Structured Streaming обеспечивает базовую работу с окнами, которая подходит для большинства случаев использования. Усовершенствованная работа с окнами дополнит эту функциональность простым, удобным и интуитивно понятным API для поддержки произвольных групп оконных элементов, определения общей логики обработки для окна, возможности описать, когда запускать логику обработки, и возможности вытеснять элементы окна до или после применения логики обработки.

Управление состоянием. Поддержка состояния обеспечивается с помощью предопределенных агрегаторов и объединений. Кроме того, для прямого доступа к состоянию и управления им предусмотрены специализированные API. Новая функциональность в Lightspeed будет включать эволюцию схемы состояния по мере изменения логики обработки и возможность запрашивать состояние извне.

Асинхронный ввод-вывод. Часто в ETL возникает необходимость объединить поток с внешними базами данных и микросервисами. Project Lightspeed представит новый API, который управляет подключениями к внешним системам, пакетными запросами для повышения эффективности и обрабатывает их асинхронно.

Python API Parity. Хотя Python API популярен, ему по-прежнему не хватает примитивов для обработки с отслеживанием состояния. Lightspeed добавит мощный, но простой API для хранения и управления состоянием. Кроме того, Lightspeed обеспечит более тесную интеграцию с популярными пакетами обработки данных Python, такими как Pandas, чтобы облегчить работу разработчиков.

Операции и устранение неполадок

Задания структурированной потоковой передачи выполняются непрерывно, пока не будут явно остановлены. Из-за постоянно включенного характера необходимо иметь соответствующие инструменты и показатели для мониторинга, отладки и оповещения при превышении определенных пороговых значений. Для достижения этих целей Project Lightspeed улучшит следующее:

  • Наблюдаемость. В настоящее время для сбора и визуализации метрик, генерируемых из конвейеров структурированной потоковой передачи, требуется кодирование. Блоки данных объединят механизм сбора метрик и предоставят возможность экспорта в различные системы и форматы. Кроме того, на основе отзывов клиентов Databricks добавит дополнительные показатели для устранения неполадок.
  • Отладка. Блоки данных предоставляют возможности для визуализации конвейеров и того, как их операторы группируются и сопоставляются с задачами, а также с исполнителями, на которых выполняются задачи. Кроме того, в Databricks будет реализована возможность перехода к конкретным исполнителям, просмотра их журналов и различных показателей.

Чтобы узнать больше о приверженности Databricks сообществу открытого исходного кода, посетите: https://databricks.com/product/open-source.

Источник:https://databricks.com/blog

Спасибо за прочтение!

Если вам понравилась моя статья и вы хотите, чтобы я получал больше таких обновлений, подписывайтесь на меня на Medium.