Apache NiFi 1.15.0: что нового в ноябрьском релизе 2021?

Автор Категория ,
Apache NiFi 1.15.0: что нового в ноябрьском релизе 2021?

7 ноября 2021 года вышел очередной релиз Apache NiFi с новыми фичами, улучшениями и исправлениями ошибок. Краткий обзор самых важных новинок: от постоянного хранилища для stateless-потоков и настроек облачных провайдеров до интеграции процессоров с пользователями Kerberos и улучшения работы с GitHub.

Новинки и улучшения Apache NiFi 1.15.0

Свежий выпуск Apache NiFi 1.15.0 характеризуется следующим:

  • 10 новых фич;
  • 111 улучшений;
  • 80 исправленных ошибок.

Также внесены новые задачи и подзадачи, ключевыми из которых можно назвать такие:

  • контексты параметров теперь поддерживают наследование, что упрощает управление общими наборами свойств во многих потоках, и настройку только определенных параметров по мере необходимости для отдельного экземпляра;
  • API NiFi теперь позволяет компонентам предлагать механизм проверки, ориентированный на взаимодействие с внешними сервисами, возвращая результаты через REST API и пользовательский интерфейс NiFi. Это особенно полезно при работе с Kafka и внешними системами, позволяя проверить работу всего конвейера до его запуска. В частности, при работе с Apache Kafka, можно удостовериться, что нужный топик существует и доступен.
  • Появилось больше stateless-механизмов для запуска потоков NiFi без сохранения состояния. Это особенно пригодится для поддержки потоков Kafka с семантикой строго однократной доставки (exactly once). Напомним, раньше NiFi без сохранения состояния хранил все содержимое потокового файла в куче Java, что отлично подходит для небольших потоков сообщений. Но иногда требуется большой объем и кучи Java не хватает. Например, когда нужно загрузить файл размером несколько ГБ из AWS S3 и отправить его в другую корзину S3. В новой версии NiFi без сохранения состояния может использовать репозиторий контента, поддерживаемый файловой системой. Причем это изменение не означает, что данные будут постоянными при перезапусках приложения или при последовательных запусках потока данных. Таким образом, нововведение не предназначено для обеспечения постоянного хранения данных с отслеживанием состояния, а обеспечивает stateless-работу с потоковыми файлами, которые больше, чем доступный размер памяти.
  • популярные скриптовые процессоры работы с записями теперь поддерживают настраиваемую маршрутизацию и партиционирование. В частности, добавлен ScriptedTransformRecord, который можно использовать в качестве отправной точки для нескольких дополнительных скриптовых процессоров в общих задачах. Например, ScriptedPartitionRecord, который вернет имя раздела, куда попадут две записи из входящего FlowFile. ScriptedValidateRecord поможет пометить запись действительной или наоборот. А ScriptedFilterRecord для конкретной записи возвращает значение true, чтобы сохранить ее, и false, чтобы удалить.

Из области безопасности хочется отметить улучшение интеграции с Kerberos. В частности, реализация API KerberosUserService и его варианты, интеграция KerberosUserService с процессорами и сервисами HDFS, HBase, Solr, Kudu, Kafka, Accumulo и DBCPConnectionPool. Также добавлена поддержка чувствительных свойств внешних провайдеров (SPP, SensitivePropertiesProvide), таких как AWS, Azure, Google Cloud Storage. Здесь же стоит отметить расширение SPP-интерфейса SensitivePropertyProvider для Hashicorp Vault, чтобы NiFi стал еще более динамически масштабируемым с Docker и Kubernetes, поддерживая безопасную обработку «зашифрованной конфигурации» с внешними провайдерами.

В новой версии NiFi клиент ActiveMQ стал настраиваемым через службу контекста SSL в JMSConnectionFactoryProvider. Параметры SSL для ActiveMQSslConnectionFactory можно настроить с помощью динамических свойств в службе контроллера JMSConnectionFactoryProvider, например, динамическое свойство trustStore и вызов метода setTrustStore() в реализации ConnectionFactory. Напомним, в Apache NiFi класс ActiveMQConnectionFactory обеспечивает доступ к диспетчерам ключей и доверия, используемым для SSL_соединений. Не рекомендуется использовать этот класс без SSL, когда не нужно программно указывать менеджеры ключей и доверия.  Сервис контроллера также имеет свойство SSLContextService, использование которой для настройки SSL предпочтительнее, чем добавление динамических свойств.

Еще добавлено свойство максимального размера чтения на серверы распределенного кэша. NiFi-сервисы DistributedMapCacheServer и DistributedSetCacheServer включают сервер на основе сокетов, позволяющий клиентам совместно управлять кэшем значений данных. IPC выполняется через определенный набор API, которые реализуются как последовательность операций чтения и записи исходных сокетов. Добавленная в Apache NiFi сервисная обработка входящих данных сокета теперь проверяет и ограничивает их размер, чтобы гарантировать правильное функционирование сервера.

В заключение отметим пару полезных улучшений работы с GitHub. В частности, устранены дубли конфигурационных параметров workflow-цепочек для команд Maven и конфигурации кэша. Использование переменных конфигурации позволяет уменьшить дублирование при сохранении настроек для каждой операционной системы.

Также добавлены workflow-цепочки GitHub для системных тестов. Ранее существовавший модуль nifi-system-test-suite уже включал ряд интеграционных тестов с использованием загрузочных экземпляров NiFi, которые слишком долго запускались в рамках стандартного workflow-процесса GitHub для pull-запросов. Регулярное выполнение новых тестов системной интеграции с использованием основной ветви позволит тестировщикам выявить проблемы, которые могут не проявиться во время стандартного модульного тестирования. Читайте в нашей новой статье, почему разработчики NiFi решили под конец 2021 года, спустя 1,5 месяца выпустить новый релиз этого фреймворка. А как эти и другие улучшения отражены в новом выпуске Cloudera Flow Management 2.1.3, мы рассказываем здесь.

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

Источники

  1. https://cwiki.apache.org/confluence/display/NIFI/Release+Notes#ReleaseNotes-Version1.15.0
  2. https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12316020&version=12350382