Apache Flink 1.14: что нового?

Автор Категория ,
Apache Flink 1.14: что нового?

29 сентября 2021 года вышла новая версия популярного Big Data фреймворка Apache Flink. Мы сделали краткий обзор главных улучшений свежего релиза 1.14 общедоступного дистрибутива, а также его коммерциализации в Ververica Platform 2.6. Узнайте, как потоковая обработка и аналитики больших данных с Apache Flink станет еще проще и эффективнее.

Исправление ошибок

Обнаружена утечка памяти с коннектором Pulsar на Java 11 из-за того, что Netty (платформа быстрой разработки обслуживаемых высокопроизводительных протокольных серверов и клиентов для асинхронных сетевых приложений, управляемых событиями) в клиенте Pulsar по-разному распределяет память в разных версиях этого языка программирования. В Java 11 память выделяется из пула Java Direct Memory, и на нее влияет ограничение MaxDirectMemory. Текущий клиент Pulsar не имел параметров конфигурации для управления ограничениями памяти, что приводило к ошибкам нехватки памяти (OOM, Out Of Memory). Поэтому пользователям рекомендуется использовать коннектор Pulsar с Java 8 или выделять избыточную память для Flink.

Hadoop для инженеров данных

Код курса
HDDE
Ближайшая дата курса
6 декабря, 2021
Длительность обучения
40 ак.часов
Стоимость обучения
90 000 руб.

Изменение зависимостей

Удаление планировщика Bliink и стремление разработчиков в будущем избавиться от Scala в среде выполнения Flink, в результате чего зависимость Flink akka теперь загружается отдельным загрузчиком классов и больше не доступна извне, а некоторые модули, например, flink-runtime, больше не имеют суффикса scala в их artifactId (_2.11 / _2.12) и их следует удалить оттуда. Здесь же можно отметить обновление RocksDB до 6.20.3 и отказ от Apache Mesos для централизованного управления кластером.

API таблиц и SQL, а также коннекторы

Изменение имени заданий для программ API DataStream в пакетном режиме (вместо «Flink Streaming Job» теперь «Flink Batch Job»), распространение уникальных ключей для fromChangelogStream, добавление неявных преобразований Scala для новых методов API, новая система типов для Table.flatMap(), удаление поддержки файлов среды YAML в SQL-клиенте и других устаревших планировщиков, коннекторов и классов.

Особенно стоит выделить появление нового коннектора к Apache Kafka для записи данных – KafkaSink. При переходе от записи запроса к Kafka в режиме строго однократной доставки (exactly once) из более ранней версии Flink следует обязательно завершить старое приложение с помощью механизма сохранения stop-with-savepoint, чтобы избежать затягивания транзакций Kafka. Для работы в режиме однократной обработки приемнику необходим настраиваемый пользователем и уникальный префикс транзакции, чтобы транзакции разных приложений не мешали друг другу.

Теперь коннектор KafkaSink заменяет FlinkKafkaProducer, обеспечивая эффективную однократную запись с новым унифицированным интерфейсом приемника, поддерживая пакетный и потоковый режимы DataStream API.

А коннектор FlinkKafkaConsumer объявлен устаревшим и заменен на KafkaSource. Для перехода следует сохранить смещения в Kafka с помощью setCommitOffsetsOnCheckpoints в старом FlinkKafkaConsumer и остановиться на точке сохранения. При возобновлении с точки сохранения нужно использовать setStartingOffsets(OffsetsInitializer.committedOffsets()) в новом KafkaSourceBuilder, чтобы перенести смещения в новый источник. Говоря про коннекторы, стоит отметить, что в новой версии Flink они не содержат ссылки на flink-core.

Apache Kafka для разработчиков

Код курса
DEVKI
Ближайшая дата курса
1 февраля, 2022
Длительность обучения
32 ак.часов
Стоимость обучения
72 000 руб.

DataStream API

Исправление ​​обработки простоя для нескольких операторов ввода с помощью метода processWatermarkStatusX(), добавленного в классы AbstractStreamOperator, Input и др., чтобы учитывать статус водяного знака WatermarkStatus при их соединении в двух или нескольких операторах ввода. Аннотации @TypeInfo теперь могут использоваться в полях POJO, чтобы помочь определить настраиваемые сериализаторы для сторонних классов, которые не могут быть аннотированы сами. Улучшен метод SourceFunction.cancel(), чтобы сам источник не прерывал исходный поток и не ожидал прерывания при отмене. А введение параметра execute.batch-shuffle-mode позволяет при необходимости изменить режим перемешивания API DataStream на конвейерное поведение. Также новый Flink создает поток данных DAG, декларативно смешивая оптимизированное выполнение SQL с логикой DataStream, выполняемой пакетным способом.

Изменения в Python API

Теперь worker Flink и Python-клиент UDF могут повторно использовать одну и ту же виртуальную машину Python вместо запуска отдельного процесса. Worker будет повторно использовать процесс Python на стороне клиента при локальном выполнении заданий, что упрощает отладку UDF. Также добавлена поддержка конвейера Python UDF в DataStream API. В графе заданий DataStream API функции Python будут связаны для оптимизации производительности, что можно отключить явно установив для python.operator-chaining.enabled значение false.

Другие изменения и новинки Ververica

Также в новой версии Apache Flink улучшены механизмы контрольных точек, среды выполнения и управления кластером. В частности, интерфейс HighAvailabilityServices получил новый метод cleanupJobData() для очистки данных высокой доступности, связанных с заданием, после его завершения. Также улучшена производительность планировщика, чтобы сократить время создания графа выполнения, развертывания задачи и отработки отказа, чтобы ускорить эти процессы и избежать случаев, когда основной поток диспетчера заданий блокируется слишком долго и приводит к тайм-ауту периодического сигнала о работе узла (heartbeat).

Flink 1.14 больше не перезагружает метаданные контрольной точки из внешнего хранилища перед восстановлением состояния задачи после отработки отказа, кроме случаев, когда JobManager выполняет смену лидерства в кластере. Это приводит к меньшему количеству внешних операций ввода-вывода и ускорению отработки отказов.

Основы Hadoop

Код курса
INTR
Ближайшая дата курса
31 января, 2022
Длительность обучения
24 ак.часов
Стоимость обучения
54 000 руб.

Все вышеупомянутые и другие обновления Flink 1.14 оперативно отражены в свежей версии Ververica Platform 2.6 от немецкой компании Ververica, которая занимается коммерциализацией фреймворка для сектора enterprise. Этот выпуск содержит множество новых функций и улучшений в таких областях, как SQL API, дополнительная поддержка соединителей, контрольные точки и PyFlink. Основная область изменений – интегрированная потоковая и пакетная передача. Теперь Flink позволяет смешивать ограниченные и неограниченные потоки в приложении, поддерживая получение контрольных точек приложений, которые частично запущены и частично завершены, когда некоторые операторы достигли конца ограниченных входных данных. А ограниченные потоки теперь занимают последнюю контрольную точку при окончании, чтобы обеспечить плавную фиксацию результатов в приемниках.

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

Источники

  1. https://nightlies.apache.org/flink/flink-docs-release-1.14/release-notes/flink-1.14/
  2. https://flink.apache.org/news/2021/09/29/release-1.14.0.html
  3. https://www.ververica.com/blog/ververica-platform-2.6-apache-flink-1.14