Предварительный релиз Apache Flink 2.0: что нового?

Apache Flink для инженера данных, Apache Flink потоковая обработка данных, распределенная обработка данных Apache Flink, Школа Больших Данных Apache Flink

23 октября 2024 года опубликован предварительный выпуск Apache Flink. Знакомимся с самыми яркими новинками этого мажорного релиза: удаленные API, коннекторы и конфигурации, динамическая оптимизация логических планов, а также дизагрегированное состояние и управление им.

Критические изменения: удаление устаревших компонентов

Начнем с критических изменений, связанных с удалением устаревших компонентов. В Apache Flink 2.0 полностью удалены DataSet API, Scala DataStream и DataSet API. Вместо DataSet API используется DataStream API, о переходе на который мы писали здесь, а вместо Scala — Java DataStream API. Удалены SourceFuction, SinkFunction и Sink V1. Вместо них надо использовать Source и Sink V2. В связи с этой заменой скоро ожидается новая версия коннектора Kafka, а также коннекторов JDBC и ElasticSearch.

TableSoure и TableSink заменяются на DynamicTableSource и DynamicTableSink. Вместо TableSchema, TableColumn и Types используются Schema, Column и DataTypes соответственно. Также из API DataStream удалены некоторые устаревшие методы, а из REST API —  устаревшие поля. Удалены устаревшие параметры конфигурации, аннотированные @Public и @PublicEvolving. Файл конфигурации flink-conf.yaml больше не поддерживается – вместо него все конфигурации записываются в YMAL-файл config.yaml. Выполнить миграцию можно с помощью соответствующего инструмента. Конфигурационные API, которые принимают объекты Java в качестве аргументов, удалены из StreamExecutionEnvironment и ExecutionConfig. Теперь их следует устанавливать через Configuration и ConfigOption. Чтобы избежать раскрытия внутренних интерфейсов, пользовательские функции больше не имеют полного доступа к ExecutionConfig. Вместо этого необходимые функции, такие как createSerializer(), getGlobalJobParameters() и isObjectReuseEnabled() теперь могут быть доступны контексту исполнения RuntimeContext напрямую.

Совместимость состояний между релизами  версии 1 и 2 не гарантируется. Java 8 больше не поддерживается, минимальная версия Java 11. Также удален устаревший режим гибридного перемешивания.

Новые возможности Apache Flink 2.0

Одной из самых интересных новых функций Flink 2.0 стало введение дезагрегированного хранения и управления состоянием. Поскольку Flink разделяет вычисления от хранения данных, используя распределенные файловые системы (DFS) в качестве основного хранилища, можно обрабатывать терабайтные наборы данных, не беспокоясь об ограничениях локального диска. Задания можно масштабировать быстрее и эффективнее, адаптируясь к изменяющимся рабочим нагрузкам. Благодаря использованию моделей асинхронного выполнения потребление ресурсов становится более плавным, как и механизм создания контрольных точек.

С учетом перехода от эпохи MapReduce, где рабочие процессы — это тесно связанные узлы вычислений и хранения, к миру облачных вычислений контейнерных развертываний на Kubernetes в Apache Flink 2.0 введено ForStDB — дизагрегированное хранилище состояний. Оно удаленное хранилище, устраняя ограничения локального диска и скачкообразный рост потребления ресурсов. Также дизагрегированное хранилище состояний обеспечивает быстрое масштабирование для задач с большими состояниями (сотни терабайт) с быстрым созданием контрольных точек. Масштабные операции чтения/записи из удаленной DFS были невозможны в предыдущей версии Flink из-за существующей модели блокирующего выполнения. Поэтому в релизе 2.0 реализована асинхронная модель выполнения и дезагрегированное хранилище состояний с использованием Nexmark Q20 (SQL Filter Join). Это включает полную поддержку API асинхронного состояния и контрольных точек, асинхронный оператор SQL Join для асинхронного выполнения соединений, а также гибридный план выполнения SQL-запросов с прямым доступом к состоянию. Высокая производительность обеспечивается при прямой записи в DFS в асинхронном режиме выполнения.

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

Таким образом, Apache Flink 2.0 стал еще ближе к полноценной унификации пакетной и потоковой обработки в одном фреймворке. В заключение отметим, что версия 2.0 Preview не является стабильной и не рекомендуется для использования в производственных средах. Хотя она уже включает большинство критических изменений, запланированных для релиза 2.0, финальный выпуск может быть изменен. Поэтому знакомиться с новинками фреймворка лучше в среде разработки на тестовых проектах.

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

Источники

  1. https://www.ververica.com/blog/embracing-the-future-apache-flink-2.0
  2. https://flink.apache.org/2024/10/23/preview-release-of-apache-flink-2.0/
Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.
Поиск по сайту