Применение SeaTunnel для управления SQL-заданиями Apache Flink и Spark

SeaTunnel Spark SQL Flink, курсы Apache Flink Spark SQL примеры обучение, Flink Spark SQL примеры обучение курсы, обучение большим данных, курсы по flink Spark SQL , обучение Apache Hadoop Flink Spark SQL, Flink Spark SQL, курсы Apache Hadoop Flink SQL, курсы Hadoop для инженеров данных обучение примеры, курсы Spark SQL примеры обучение, обучение большим данным, обучение Kafka, Школа Больших Данных Учебный центр Коммерсант

Мы регулярно добавляем в наши курсы по Apache Flink и Spark для дата-инженеров полезные материалы и инструменты, которые помогают повысить эффективность разработки и эксплуатации приложений аналитики больших данных. Читайте далее, что такое SeaTunnel и как эта высокопроизводительная платформа интеграции распределенных данных упрощает их потоковую синхронизацию средствами SQL-заданий Apache Flink и Spark.

Потоковая синхронизация данных c SQL для Flink и Spark

Популярный распределенный фреймворк для создания потоковых stateful-приложений, Apache Flink, дает возможность создавать задачи обработки данных не только на Scala/Java, но и посредством SQL-запросов, что снижает порог входа в технологию. Профессиональные Scala/Java-разработчики чаще используют DataSet или DataStream API для создания заданий Flink. При обращении к источнику данных этот метод требует большого количества кода, в основном, для расширения коннектора. А применение SQL-запросов основано на декларативном подходе: коннекторы обнаруживаются с помощью методов интерфейсов поставщиков услуг Java (SPI, Service Provider Interface).

Напомним, Flink поддерживает использование SQL-операторов CREATE TABLE для регистрации таблиц: можно определить имя таблицы, ее схему и параметры для подключения к внешней системе. Желаемые свойства подключения преобразуются в пары ключ-значение на основе строк. Фабрики будут создавать сконфигурированные источники таблиц, приемники таблиц и соответствующие форматы из пар ключ-значение на основе идентификаторов фабрики. Все фабрики, которые можно найти через Java SPI, учитываются при поиске только одной подходящей фабрики для каждого компонента. Если фабрика не может быть найдена или несколько фабрик соответствуют заданным свойствам, выдается соответствующее исключение с дополнительной информацией о рассматриваемых фабриках и поддерживаемых свойствах.

Apache Flink использует Java SPI для загрузки фабрик коннекторов и форматов таблиц по их идентификаторам. Поскольку файл ресурсов SPI с именем org.apache.flink.table.factories.Factory для каждого коннектора и формата таблицы находится в одном и том же каталоге META-INF/services, эти файлы ресурсов будут переопределять друг друга при сборке uber-jar проекта, где их используется более одного.

Таким образом, для дата-инженера API DataSet или DataStream более гибок, чем SQL, но хуже с точки зрения масштабируемости, т.к. каждый раз при добавлении нового коннектора нужно писать код. А SQL создает коннектор на основе механизма SPI, требуется лишь ввести Jar-пакет коннектора в кластер. Поэтому SQL проще для синхронизации данных из источника для вычислений в реальном времени.

Чтобы повысить эффективность потоковой синхронизации данных, можно использовать специализированное решение, например, Apache SeaTunnel — высокопроизводительную платформу интеграции распределенных данных, которая может стабильно синхронизировать десятки миллиардов событий ежедневно в режиме реального времени. Ее можно использовать не только с движком Flink, но и со Spark. Как это сделать, рассмотрим далее.

Как работает Apache SeaTunnel

Основными сценариями использования Apache SeaTunnel являются массовая синхронизация, агрегация и интеграция данных, выполнение ETL-процессов со множеством данных и обработка данных из нескольких источников. Во всех этих сценариях также могут быть задействованы Apache Flink и Spark. Например, SeaTunnel локально запускает Spark, создает клиента и настраивает соответствующие параметры в конфигурации задания. После отправки задания генерируется команда spark-submit, которая запускает задание в кластере. С использованием SeaTunnel логика этого задания пройдет через основной класс SeaTunnel Spark и сделает некоторые дополнения в соответствии с файлом шаблона. Это определенный файл конфигурации, который содержит 4 части: конфигурацию Spark, определение источника данных, определение приемника данных и преобразование данных. Spark запустит задание на основе конфигурации и сгенерирует соответствующий результат.

Аналогичным образом можно применить SeaTunnel  к заданиям Flink SQL: сперва команда считывается через оболочку, параметры объединяются и отправляются в кластер Flink. Затем можно получить конфигурацию среды Flink и тип коннектора через парсинг SQL, загрузить его в CLASSPATH, установить параметры, закончить парсинг и отправить в кластер. Так очень просто добавить любые коннекторы: нужно лишь добавить подмодуль (Sub-module) в Flink SQL под коннектором SeaTunnel, включая зависимости самого Flink, и вывести его по нужному адресу при упаковке. Недостатком текущей реализации модуля Flink SQL является плохая поддержка режима приложения. Сейчас его можно развернуть только на YARN и Kubernetes.

Подводя итог пользе совместного применения Apache SeaTunnel с движками Flink и Spark, подчеркнем, что это способ динамической конфигурации заданий массовой обработки больших данных в режиме реального времени. SeaTunnel поможет решить проблемы, которые могут возникнуть при синхронизации больших объемов данных: потеря и дублирование, накопление и задержка задач, низкая пропускная способность, длительный цикл задания в производственной среде и отсутствие мониторинга состояния работы приложений. Эта платформа позволяет дата-инженеру напрямую построить конвейер обработки данных с помощью SQL, сократив количество сложного кода на Java/Scala. Пока еще проект SeaTunnel находится в инкубаторе фонда Apache, но активно развивается.

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

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

Источники

  1. https://seatunnel.medium.com/how-to-simplify-data-synchronization-using-flink-sql-in-apache-seatunnel-incubating-f972c1685fdf
  2. https://seatunnel.apache.org/docs/2.1.3/intro/about/
  3. https://github.com/apache/incubator-seatunnel
Поиск по сайту