Улучшения Apache Spark Structured Streaming в проекте Lightspeed от Databricks

обучение Spark SQL примеры курсы обучение, анализ данных Spark, Spark разработка конфигурирование приложений для разработчика примеры курсы обучение, Spark Databrics Lightspeed примеры курсы обучение, Apache Spark Structured Streaming примеры курсы обучение, разработка приложения Spark, Apache Spark разработчик примеры курсы обучение, обучение большим данным, курсы дата-инженер аналитик Big Data, Школа Больших Данных Учебный Центр Коммерсант

28 июня 2022 года в сотрудничестве с сообществом разработчиков Apache Spark компания Databricks анонсировала проект Lightspeed, новое поколение этого потокового движка. Читайте далее, что это такое и чем оно отличается от классического Apache Spark Structured Streaming.

Потоковая обработка данных с Apache Spark Structured Streaming

Потоковая передача событий весьма востребована современным бизнесом: это основа для принятия быстрых решений на огромных объемах входящих данных, генерируемых различными источниками. Обработка потоковых данных также технически сложна, и ее потребности намного отличаются и более сложны, чем в случае пакетных приложений. Для удовлетворения потребностей в потоковой обработке данных в Apache Spark 2.0 была введена структурированная потоковая передача. Spark Structured Streaming — это масштабируемый и отказоустойчивый механизм обработки потоков, построенный на основе механизма Spark SQL. Разработчик распределенного приложения может выразить логику с помощью SQL-запросов или Dataset/DataFrame API. Движок сам заботится о постепенном и непрерывном запуске конвейера и обновляет окончательный результат по мере поступления потоковых данных. Spark Structured Streaming широко применяется в тысячах организаций, обрабатывая более 1 ПБ данных ежедневно на одной только платформе Databricks.

Основное преимущество Spark Structured Streaming в том, что она использует тот же API, что и пакетная обработка структуры данных DataFrame в этом фреймворке, что значительно упрощает переход к вычислениям в реальном времени. Разработчик может просто написать вычисление с DataFrame, используя Python, SQL, Scala или R, и движок запустит этот код как приложение с инкрементной потоковой передачей. Затем вычисление будет выполняться поэтапно по мере поступления новых данных и автоматически восстанавливаться после сбоев с семантикой строго однократной доставки, выполняя ту же реализацию механизма, что и пакетное вычисление, что дает согласованные результаты. Это снижает сложность, устраняет возможность расхождения между пакетными и потоковыми рабочими нагрузками, снижая стоимость операций, а также инфраструктуры хранения и обработки данных. Кроме того, многие другие встроенные библиотеки Spark можно вызывать в контексте потоковой передачи, включая библиотеки машинного обучения.

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

Наконец, Spark Structured Streaming позволяет применять произвольную логику и операции к выходным данным потокового запроса с помощью метода foreachBatch(), что позволяет выполнять операции вставки, запись в несколько приемников и взаимодействие с внешними источниками данных. Наконец, структурированная потоковая передача Apache Spark поддерживает stateful-вычисления с поддержкой агрегатов и соединений с отслеживанием состояния, а также водяных знаков для обработки ограниченного состояния и позднего порядка. Кроме того, начиная с версии начиная с Spark 3.2 произвольные операции с отслеживанием состояния с [flat]mapGroupsWithState, поддерживаемые хранилищем состояний RocksDB, обеспечивают эффективное и отказоустойчивое управление состоянием.

Однако, несмотря отмеченные достоинства Spark Structured Streaming, эта библиотека все же имеет некоторую задержку, выполняя обработку данных в режиме близком к реальному времени, но не настолько быстро, как это делают Apache Storm или Flink. Поэтому компания Databricks, которая занимается коммерциализацией Apache Spark, решили развивать этот движок потоковой обработки Big Data в рамках нового проекта Lightspeed, о котором мы поговорим далее.

Что такое Lightspeed от Databrics

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

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

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

  • несколько stateful-операторов – сейчас структурированная потоковая передача поддерживает только один оператор с отслеживанием состояния для каждого задания. Но иногда нужно несколько операторов состояния, например, при агрегации цепочек временных окон с разным временным периодом, сложных внешних соединениях потоковых таблиц или объединение временного интервала между потоками с последующей агрегацией временных окон.
  • расширенное управление окнами — добавление в API поддержки произвольных групп оконных элементов, определения общей логики обработки для окна, условная логика запуска обработки данных, с вытеснением элементов окна до или после ее применения.
  • управление состоянием — поддержка состояния обеспечивается с помощью предопределенных агрегаторов и соединений с помощью специализированных API. Эта новая функциональная возможность в Lightspeed будет включать эволюцию схемы состояния по мере изменения логики обработки и возможность запрашивать состояние извне.
  • асинхронный ввод-вывод. Часто в ETL-конвейерах возникает необходимость соединения потока с внешними базами данных и микросервисами. Проект Lightspeed представит новый API, который управляет подключениями к внешним системам и пакетными запросами, обрабатывая их асинхронно.
  • Расширение Python API для stateful-обработки, включая функции хранения и управления состоянием. Также Lightspeed обеспечит более тесную интеграцию с популярными пакетами обработки данных Python, такими как Pandas, чтобы облегчить работу разработчиков и специалистов по Machine Learning.
  • Новые коннекторы для обработки данных и их записи в различные шины обмена сообщениями, такие как Apache Kafka, и системы хранения, такие как Delta Lake. В рамках проекта Lightspeed будут добавлены новые коннекторы, в частности, для Google Pub/Sub, Amazon DynamoDB и других провайдеров, чтобы разработчики могли легко использовать механизм Spark Structured Streaming с дополнительными шинами обмена сообщениями и системами хранения. Также в существующие коннекторы будут добавлены новые функции и улучшены существующие характеристики, к примеру, производительность. Будет реализована поддержка аутентификации AWS IAM в коннекторе к Apache Kafka и расширенная поддержка ветвлений в коннекторе к Amazon Kinesis.

Задания структурированной потоковой передачи выполняются непрерывно, пока не будут явно остановлены. Поэтому администратору кластера и дата-инженеру необходимо иметь соответствующие инструменты и показатели для мониторинга, отладки и генерации оповещений при превышении определенных пороговых значений. Чтобы упростить эти процессы, в проекте Lightspeed планируется улучшить наблюдаемость Apache Spark Streaming, в текущей версии которого метрики, генерируемые конвейерами, требуют специального кодирования для сбора и визуализации. Разработчики Databrikcs собираются унифицировать механизм сбора метрик и предоставить возможность их экспорта в разные системы и форматы. А также будут добавлены дополнительные показатели для устранения неполадок. Наконец, будут реализованы новые возможности визуализации конвейеров и того, как их операторы сгруппированы и сопоставлены с задачами, а также с исполнителями, на которых они выполняются. Кроме того, ожидается возможность детализации до конкретных исполнителей, просмотра их логов и различных показателей.

Освойте администрирование и использование Apache Spark для задач дата-инженерии, разработки распределенных приложений и аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://databricks.com/blog/2022/06/28/project-lightspeed-faster-and-simpler-stream-processing-with-apache-spark.html

Поиск по сайту