1 июля 2024 г. опубликован очередной выпуск Apache NiFi 2.0.0. Знакомимся с его наиболее интересными добавлениями и улучшениями: критические изменения, обновленная интеграция с Kafka и новые процессоры для работы с файлами разных форматов.
Обновленная интеграция с Kafka и другие новинки Apache NiFi 2.0.0-M4
Выпуск мажорного релиза не всегда происходит одним этапом. Например, разработчики Apache NiFi публикуют обновления пошагово. В начале июля вышла четвертое дополнение релиза 2.0.0, которое включает довольно много изменений, в том числе критических. В частности, к ним относятся перемещение Python-расширений nifi-python-extensions в новый репозиторий Git, а также отказ от поддержки следующих фичей:
- защита свойств приложения и конфигурации шифрования encrypt-config;
- REST API для аутентификации Apache Knox SSO;
- REST API для аутентификации Kerberos SPNEGO.
Из значимых улучшений стоит отметить поддержку процессора Python во фреймворке MiNiFi и токена установки приложения в GitHub FlowRegistryClient. Также улучшена обработка хранилища ключей и доверенных хранилищ для поддержки динамической перезагрузки кластерной связи и вместо RSA теперь используется криптографическая схема Ed25519 для подписи и проверки токенов носителя приложений.
Наконец, перейдем к новым возможностям. Одной из них стал редизайн интеграции Apache NiFi с Kafka. Новый подход абстрагирует доступ к компонентам библиотеки Kafka, чтобы обеспечить более удобные в обслуживании процессоры Kafka, а также поддержку новых основных релизов этой платформы потоковой передачи событий. Подход включает службу контроллера Controller Service и вспомогательные классы, которые абстрагируют операции Kafka для публикации и потребления сообщений. Интерфейс Controller Service не зависит от библиотек и версий Kafka, определяя контракт для доступа к брокерам, чтобы реализации отвечали за настройки подключения и аутентификации. Реализации службы контроллера должны быть согласованы с основными версиями Kafka, что позволяет обновлять версии второстепенных зависимостей без изменения реализаций этого интерфейса.
Новые процессоры интеграции NiFi с Kafka поддерживают те же возможности, включая обработку целых FlowFiles как записей Kafka, использование настраиваемого разделителя и служб NiFi Record. Новые компоненты Kafka основаны на шаблоне модуля nifi-kafka-shared, обеспечивая повторное использование кода и модульное тестирование.
Еще в свежем выпуске расширен API Python, который теперь позволяет написать на Python процессор-источник, у которого нет входящих соединений, и он сам по себе создает новые FlowFiles. Это довольно удобно для большинства дата-инженеров, которые часто используют для разработки потоковых конвейеров именно этот язык программирования. Подробнее про API Python в NiFi мы писали здесь.
3 новых файловых процессора
Еще в Apache NiFi 2.0.0-M4 появились новые процессоры, например, SplitPCAP для разделения больших файлов формата PCAP (Packet Capture) с бинарными данными о дампах сетевых пакетов. Этот процессор может разделить FlowFile, содержащий большой файл PCAP, на файлы меньшего размера, в зависимости от максимального размера, установленного пользователем. Каждый из полученных FlowFile содержит валидный PCAP. Если исходный PCAP-файл имеет неправильный формат, размер или содержит пакет, размер которого превышает максимально допустимый, входящий FlowFile будет переведен в состояние сбоя и к нему добавится атрибут ошибки с описанием причины этого сбоя.
Также добавлен еще один процессор для работы с файлами Excel. Процессор SplitExcel конвертирует xls-файлы в CSV и при обработке Excel с несколькими листами создает FlowFile для каждого листа, разделяя исходный файл со всеми данными.
Наконец, добавлен процессор DeleteFile, который ожидает FlowFile и удаляет файл по пути, полученному из атрибутов этого FlowFile. Значения по умолчанию для определения пути к файлу совместимы с атрибутами, записанными существующим процессором перечисления списка файлов ListFiles. Ранее существовавшие процессоры FetchFile и GetFile поддерживают удаление файла из файловой системы после копирования его содержимого в FlowFile. Но иногда немедленное удаление файла из файловой системы невозможно. Например, когда репозиторий контента NiFi не соответствует достаточным гарантиям долговечности данных, удалить исходный файл можно только после его успешной обработки и передачи результата в долговечную систему-приемник. Реализовать это можно с помощью нового процессора DeleteFile вместо того, чтобы разрабатывать собственные скрипты или пользовательские процессоры.
Также в этой версии устранена XSS-уязвимость CVE-2024-37389, о которой мы рассказываем в новой статье.
Узнайте больше про администрирование и использование Apache NiFi для построения эффективных ETL-конвейеров потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники