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

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

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. Также удален устаревший режим гибридного перемешивания.

Одной из самых интересных новых функций 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/
[elementor-template id="13619"]