Учебники

Apache NiFi – Краткое руководство

Apache NiFi – Введение

Apache NiFi – это мощная, простая в использовании и надежная система для обработки и распределения данных между различными системами. Он основан на технологии Niagara Files, разработанной NSA, а затем, через 8 лет, передан в фонд Apache Software. Он распространяется под лицензией Apache License Version 2.0, январь 2004 года. Последняя версия для Apache NiFi – 1.7.1.

Apache NiFi – платформа приема данных в режиме реального времени, которая может передавать и управлять передачей данных между различными источниками и системами назначения. Он поддерживает широкий спектр форматов данных, таких как журналы, данные о географическом местоположении, социальные сети и т. Д. Он также поддерживает множество протоколов, таких как SFTP, HDFS и KAFKA, и т. Д. Эта поддержка широкого спектра источников данных и протоколов делает эту платформу популярной в многие ИТ-организации.

Apache NiFi – общие характеристики

Основные характеристики Apache NiFi следующие:

  • Apache NiFi предоставляет веб-интерфейс пользователя, который обеспечивает плавное взаимодействие между дизайном, управлением, обратной связью и мониторингом.

  • Это очень настраиваемый. Это помогает пользователям с гарантированной доставкой, низкой задержкой, высокой пропускной способностью, динамическим назначением приоритетов, обратным давлением и изменением потоков во время выполнения.

  • Он также предоставляет модуль происхождения данных для отслеживания и мониторинга данных от начала до конца потока.

  • Разработчики могут создавать свои собственные процессоры и задачи отчетности в соответствии со своими потребностями.

  • NiFi также обеспечивает поддержку безопасных протоколов, таких как SSL, HTTPS, SSH и других шифрований.

  • Он также поддерживает управление пользователями и ролями, а также может быть настроен с LDAP для авторизации.

Apache NiFi предоставляет веб-интерфейс пользователя, который обеспечивает плавное взаимодействие между дизайном, управлением, обратной связью и мониторингом.

Это очень настраиваемый. Это помогает пользователям с гарантированной доставкой, низкой задержкой, высокой пропускной способностью, динамическим назначением приоритетов, обратным давлением и изменением потоков во время выполнения.

Он также предоставляет модуль происхождения данных для отслеживания и мониторинга данных от начала до конца потока.

Разработчики могут создавать свои собственные процессоры и задачи отчетности в соответствии со своими потребностями.

NiFi также обеспечивает поддержку безопасных протоколов, таких как SSL, HTTPS, SSH и других шифрований.

Он также поддерживает управление пользователями и ролями, а также может быть настроен с LDAP для авторизации.

Apache NiFi – основные понятия

Основные понятия Apache NiFi следующие:

  • Группа процессов – это группа потоков NiFi, которая помогает пользователю управлять и поддерживать потоки в иерархическом порядке.

  • Поток – создается для соединения разных процессоров для передачи и изменения данных, если это необходимо, из одного источника данных или источников в другие источники данных назначения.

  • Процессор . Процессор – это Java-модуль, отвечающий за выборку данных из системы источников или сохранение их в системе назначения. Другие процессоры также используются для добавления атрибутов или изменения содержимого в потоковом файле.

  • Flowfile – это основное использование NiFi, которое представляет собой единый объект данных, выбранных из исходной системы в NiFi. NiFiprocessor делает изменения в потоковый файл, в то время как он перемещается от исходного процессора к месту назначения. Различные процессы, такие как CREATE, CLONE, RECEIVE и т. Д., Выполняются в поточном файле различными процессорами в потоке.

  • Событие – события представляют изменение потока файла при прохождении потока NiFi. Эти события отслеживаются в происхождении данных.

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

Группа процессов – это группа потоков NiFi, которая помогает пользователю управлять и поддерживать потоки в иерархическом порядке.

Поток – создается для соединения разных процессоров для передачи и изменения данных, если это необходимо, из одного источника данных или источников в другие источники данных назначения.

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

Flowfile – это основное использование NiFi, которое представляет собой единый объект данных, выбранных из исходной системы в NiFi. NiFiprocessor делает изменения в потоковый файл, в то время как он перемещается от исходного процессора к месту назначения. Различные процессы, такие как CREATE, CLONE, RECEIVE и т. Д., Выполняются в поточном файле различными процессорами в потоке.

Событие – события представляют изменение потока файла при прохождении потока NiFi. Эти события отслеживаются в происхождении данных.

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

Преимущества Apache NiFi

  • Apache NiFi позволяет получать данные с удаленных компьютеров с помощью SFTP и гарантирует передачу данных.

  • Apache NiFi поддерживает кластеризацию, поэтому он может работать на нескольких узлах с одинаковым потоком, обрабатывая разные данные, что повышает производительность обработки данных.

  • Он также предоставляет политики безопасности на уровне пользователя, группы процессов и других модулей.

  • Его пользовательский интерфейс также может работать по протоколу HTTPS, что делает взаимодействие пользователей с NiFi безопасным.

  • NiFi поддерживает около 188 процессоров, и пользователь также может создавать собственные плагины для поддержки широкого спектра систем данных.

Apache NiFi позволяет получать данные с удаленных компьютеров с помощью SFTP и гарантирует передачу данных.

Apache NiFi поддерживает кластеризацию, поэтому он может работать на нескольких узлах с одинаковым потоком, обрабатывая разные данные, что повышает производительность обработки данных.

Он также предоставляет политики безопасности на уровне пользователя, группы процессов и других модулей.

Его пользовательский интерфейс также может работать по протоколу HTTPS, что делает взаимодействие пользователей с NiFi безопасным.

NiFi поддерживает около 188 процессоров, и пользователь также может создавать собственные плагины для поддержки широкого спектра систем данных.

Недостатки Apache NiFi

  • Когда узел отключается от кластера NiFi, когда пользователь вносит в него какие-либо изменения, то flow.xml становится недействительным. Узел не может подключиться обратно к кластеру, если администратор не скопирует вручную файл flow.xml с подключенного узла.

  • Apache NiFi имеет проблему с сохранением состояния в случае переключения основного узла, что иногда делает процессоры неспособными получать данные из систем источников.

Когда узел отключается от кластера NiFi, когда пользователь вносит в него какие-либо изменения, то flow.xml становится недействительным. Узел не может подключиться обратно к кластеру, если администратор не скопирует вручную файл flow.xml с подключенного узла.

Apache NiFi имеет проблему с сохранением состояния в случае переключения основного узла, что иногда делает процессоры неспособными получать данные из систем источников.

Apache NiFi – Основные понятия

Apache NiFi состоит из веб-сервера, контроллера потока и процессора, который работает на виртуальной машине Java. Он также имеет 3 репозитория Flowfile Repository, Content Repository и Provenance Repository, как показано на рисунке ниже.

Веб-сервер Apache

Flowfile Repository

Этот репозиторий хранит текущее состояние и атрибуты каждого потокового файла, который проходит через потоки данных Apache NiFi. Расположение этого хранилища по умолчанию находится в корневом каталоге apache NiFi. Расположение этого репозитория можно изменить, изменив свойство с именем «nifi.flowfile.repository.directory».

Репозиторий контента

Этот репозиторий содержит все содержимое всех потоковых файлов NiFi. Его каталог по умолчанию также находится в корневом каталоге NiFi, и его можно изменить с помощью свойства «org.apache.nifi.controller.repository.FileSystemRepository». Этот каталог занимает много места на диске, поэтому желательно иметь достаточно места на установочном диске.

Хранилище прованс

Репозиторий отслеживает и хранит все события всех потоковых файлов, которые поступают в NiFi. Существует два репозитория провенанса – изменчивое хранилище провенанса (в этом репозитории все данные провенанса теряются после перезапуска) и постоянное хранилище провенанса . Его каталог по умолчанию также находится в корневом каталоге NiFi, и его можно изменить с помощью свойств «org.apache.nifi.provenance.PersistentProvenanceRepository» и «org.apache.nifi.provenance.VolatileProvenanceRepositor» для соответствующих репозиториев.

Хранилище прованс

Apache NiFi – настройка среды

В этой главе мы узнаем о настройке среды Apache NiFi. Шаги для установки Apache NiFi следующие:

Шаг 1 – Установите текущую версию Java на свой компьютер. Пожалуйста, установите JAVA_HOME на вашем компьютере. Вы можете проверить версию, как показано ниже:

В операционной системе Windows (ОС) (с использованием командной строки) –

> java -version

В ОС UNIX (с использованием терминала):

$ echo $JAVA_HOME

Шаг 2 – Загрузите Apache NiFi с https://nifi.apache.org/download.html

  • Для Windows OS скачать ZIP файл.

  • Для ОС UNIX скачать файл TAR.

  • Для изображений докера перейдите по следующей ссылке https://hub.docker.com/r/apache/nifi/.

Для Windows OS скачать ZIP файл.

Для ОС UNIX скачать файл TAR.

Для изображений докера перейдите по следующей ссылке https://hub.docker.com/r/apache/nifi/.

Шаг 3 – Процесс установки Apache NiFi очень прост. Процесс отличается с ОС –

  • ОС Windows – разархивируйте zip-пакет и установите Apache NiFi.

  • ОС UNIX – Извлеките tar-файл в любом месте, и Logstash будет установлен.

ОС Windows – разархивируйте zip-пакет и установите Apache NiFi.

ОС UNIX – Извлеките tar-файл в любом месте, и Logstash будет установлен.

$tar -xvf nifi-1.6.0-bin.tar.gz

Шаг 4 – Откройте командную строку, перейдите в каталог bin NiFi. Например, C: \ nifi-1.7.1 \ bin и выполните файл run-nifi.bat.

C:\nifi-1.7.1\bin>run-nifi.bat

Шаг 5 – Потребуется несколько минут, чтобы запустить интерфейс NiFi. Пользователь может проверить nifi-app.log, как только пользовательский интерфейс NiFi будет запущен, пользователь может ввести http: // localhost: 8080 / nifi / для доступа к пользовательскому интерфейсу.

Apache NiFi – пользовательский интерфейс

Apache – это веб-платформа, доступ к которой может получить пользователь с помощью веб-интерфейса. Пользовательский интерфейс NiFi очень интерактивен и предоставляет широкий спектр информации о NiFi. Как показано на рисунке ниже, пользователь может получить доступ к информации о следующих атрибутах:

  • Активные темы
  • Всего данных в очереди
  • Передача удаленных групп процессов
  • Не передавать удаленные группы процессов
  • Запущенные компоненты
  • Остановленные компоненты
  • Неверные компоненты
  • Отключенные компоненты
  • Последние версии групп процессов
  • Локально модифицированные версионные группы процессов
  • Устаревшие версионные группы процессов
  • Локально модифицированные и устаревшие группы процессов
  • Ошибка синхронизации версий групп процессов

Пользовательский интерфейс

Компоненты Apache NiFi

Apache NiFi UI имеет следующие компоненты –

процессоры

Пользователь может перетащить значок процесса на холст и выбрать нужный процессор для потока данных в NiFi.

Иконка процессораДобавить процессор

Входной порт

Значок ниже перетаскивается на холст, чтобы добавить входной порт в любой поток данных.

Входной порт используется для получения данных от процессора, которого нет в этой группе процессов.

Входной порт

После перетаскивания этого значка NiFi просит ввести имя порта ввода, а затем оно добавляется на холст NiFi.

Добавить порт

Выходной порт

Значок ниже перетаскивается на холст, чтобы добавить выходной порт в любой поток данных.

Выходной порт используется для передачи данных процессору, которого нет в этой группе процессов.

Выходной порт

После перетаскивания этого значка NiFi просит ввести имя выходного порта, а затем он добавляется на холст NiFi.

Выход Добавить порт

Группа процессов

Пользователь использует значок ниже, чтобы добавить группу процессов на холсте NiFi.

Gruop Icon

После перетаскивания этого значка NiFi просит ввести имя группы процессов, а затем оно добавляется на холст NiFi.

Добавить группу процессов

Удаленная группа процессов

Это используется для добавления удаленной группы процессов в холст NiFi.

Удаленная группа процессов

раструб

Воронка используется для передачи выходных данных процессора нескольким процессорам. Пользователь может использовать значок ниже, чтобы добавить воронку в поток данных NiFi.

Воронка Иконка

шаблон

Этот значок используется для добавления шаблона потока данных на холст NiFi. Это помогает повторно использовать поток данных в одном и том же или разных экземплярах NiFi.

Значок шаблона

После перетаскивания пользователь может выбрать шаблоны, уже добавленные в NiFi.

этикетка

Они используются для добавления текста на холсте NiFi о любом компоненте, присутствующем в NiFi. Он предлагает диапазон цветов, используемых пользователем, чтобы добавить эстетический смысл.

Значок ярлыка

Apache NiFi – Процессоры

Процессоры Apache NiFi являются основными блоками создания потока данных. Каждый процессор имеет разные функциональные возможности, что способствует созданию выходного потокового файла. Поток данных, показанный на изображении ниже, извлекает файл из одного каталога с использованием процессора GetFile и сохраняет его в другом каталоге с помощью процессора PutFile.

PutFile процессор

Получить файл

Процесс GetFile используется для извлечения файлов определенного формата из определенного каталога. Он также предоставляет пользователю другие возможности для большего контроля при извлечении. Мы обсудим это в разделе свойств ниже.

Получить файл

Настройки GetFile

Ниже приведены различные настройки процессора GetFile –

название

В настройке «Имя» пользователь может определить любое имя для процессоров в соответствии с проектом или тем, что делает имя более значимым.

включить

Пользователь может включить или отключить процессор, используя этот параметр.

Длительность штрафа

Этот параметр позволяет пользователю добавить длительность штрафного времени в случае сбоя потока файла.

Продолжительность урожая

Этот параметр используется для указания времени выхода для процессора. В этот период процесс не запланирован снова.

Уровень бюллетеня

Этот параметр используется для указания уровня журнала этого процессора.

Автоматически разорвать отношения

Здесь есть список проверок всех доступных отношений этого конкретного процесса. Установив флажки, пользователь может запрограммировать процессор на прекращение потока файла для этого события и не отправлять его дальше в потоке.

Автоматически разорвать отношения

Планирование GetFile

Это следующие параметры планирования, предлагаемые процессором GetFile:

График стратегии

Вы можете либо запланировать процесс на основе времени, выбрав время или указанную строку CRON, выбрав опцию драйвера CRON.

Параллельные задачи

Эта опция используется для определения расписания одновременных задач для этого процессора.

выполнение

Пользователь может определить, запускать ли процессор во всех узлах или только в основном узле, используя эту опцию.

Расписание запуска

Он используется для определения стратегии, основанной на времени, или выражения CRON для стратегии, управляемой CRON.

Расписание запуска

Свойства GetFile

GetFile предлагает несколько свойств, как показано на рисунке ниже, а также обязательные свойства, такие как Входной каталог и фильтр файлов, для дополнительных свойств, таких как Path Filter и Maximum File Size. Пользователь может управлять процессом извлечения файлов, используя эти свойства.

Свойства GetFile

GetFile Комментарии

Этот раздел используется для указания любой информации о процессоре.

GetFile Комментарии

PutFile

Процессор PutFile используется для хранения файла из потока данных в определенном месте.

PutFile

Настройки PutFile

Процессор PutFile имеет следующие настройки –

название

В настройке «Имя» пользователь может определить любое имя для процессоров в соответствии с проектом или тем, что делает имя более значимым.

включить

Пользователь может включить или отключить процессор, используя этот параметр.

Длительность штрафа

Этот параметр позволяет пользователю добавить длительность штрафного времени в случае сбоя потока файла.

Продолжительность урожая

Этот параметр используется для указания времени выхода для процессора. За это время процесс не запланирован снова.

Уровень бюллетеня

Этот параметр используется для указания уровня журнала этого процессора.

Автоматически разорвать отношения

В этих настройках есть список проверок всех доступных взаимосвязей этого конкретного процесса. Установив флажки, пользователь может запрограммировать процессор на прекращение потока файла для этого события и не отправлять его дальше в потоке.

Автоматически завершить

Планирование PutFile

Это следующие параметры планирования, предлагаемые процессором PutFile:

График стратегии

Вы можете запланировать процесс на основе времени, либо выбрав управляемый таймером, либо указав строку CRON, выбрав опцию драйвера CRON. Существует также экспериментальная стратегия Event Driven, которая запускает процессор при конкретном событии.

Параллельные задачи

Эта опция используется для определения расписания одновременных задач для этого процессора.

выполнение

Пользователь может определить, следует ли запускать процессор во всех узлах или только в основном узле, используя эту опцию.

Расписание запуска

Он используется для определения времени для стратегии, управляемой таймером, или выражения CRON для стратегии, управляемой CRON.

Расписание запуска Putfile

PutFile Properties

Процессор PutFile предоставляет такие свойства, как Directory, чтобы указать выходной каталог для передачи файлов, а другие – для управления передачей, как показано на рисунке ниже.

PutFile Properties

PutFile Комментарии

Этот раздел используется для указания любой информации о процессоре.

Putfile Комментарии

Apache NiFi – классификация процессоров

В этой главе мы обсудим категоризацию процессов в Apache NiFi.

Процессоры загрузки данных

Процессоры в категории Data Ingestion используются для ввода данных в поток данных NiFi. Это в основном отправная точка любого потока данных в Apache NiFi. Некоторые из процессоров, которые принадлежат к этим категориям: GetFile, GetHTTP, GetFTP, GetKAFKA и т. Д.

Процессоры маршрутизации и посредничества

Процессоры маршрутизации и посредничества используются для маршрутизации потоковых файлов к различным процессорам или потокам данных в соответствии с информацией в атрибутах или содержимом этих потоковых файлов. Эти процессоры также отвечают за управление потоками данных NiFi. Некоторые из процессоров, которые принадлежат к этой категории, являются RouteOnAttribute, RouteOnContent, ControlRate, RouteText и т. Д.

Процессоры доступа к базам данных

Процессоры этой категории доступа к базе данных способны выбирать или вставлять данные или выполнять и подготавливать другие операторы SQL из базы данных. Эти процессоры в основном используют настройки контроллера пула соединений данных Apache NiFi. Некоторые из процессоров, которые относятся к этой категории, – это ExecuteSQL, PutSQL, PutDatabaseRecord, ListDatabaseTables и т. Д.

Процессоры извлечения атрибутов

Процессоры извлечения атрибутов отвечают за извлечение, анализ, изменение обработки атрибутов потокового файла в потоке данных NiFi. Некоторые из процессоров, которые принадлежат к этой категории, являются UpdateAttribute, EvaluateJSONPath, ExtractText, AttributesToJSON и т. Д.

Процессоры системного взаимодействия

Процессоры System Interaction используются для запуска процессов или команд в любой операционной системе. Эти процессоры также запускают сценарии на многих языках для взаимодействия с различными системами. Некоторые из процессоров, которые принадлежат к этой категории: ExecuteScript, ExecuteProcess, ExecuteGroovyScript, ExecuteStreamCommand и т. Д.

Процессоры преобразования данных

Процессоры, принадлежащие Data Transformation, способны изменять содержимое потоковых файлов. Они могут использоваться для полной замены данных потокового файла, обычно используемого, когда пользователь должен отправить потоковый файл как тело HTTP для вызова процессора HTP. Некоторые из процессоров, которые принадлежат к этой категории, являются ReplaceText, JoltTransformJSON и т. Д.

Отправка процессоров данных

Отправляющие процессоры данных обычно являются конечным процессором в потоке данных. Эти процессоры отвечают за хранение или отправку данных на целевой сервер. После успешного сохранения или отправки данных эти процессоры сбрасывают потоковый файл с успешным отношением. Некоторые из процессоров, которые относятся к этой категории: PutEmail, PutKafka, PutSFTP, PutFile, PutFTP и т. Д.

Процессоры расщепления и агрегации

Эти процессоры используются для разделения и объединения содержимого, присутствующего в потоковом файле. Некоторые из процессоров, которые относятся к этой категории: SplitText, SplitJson, SplitXml, MergeContent, SplitContent и т. Д.

HTTP-процессоры

Эти процессоры работают с вызовами HTTP и HTTPS. Некоторые из процессоров, которые относятся к этой категории: InvokeHTTP, PostHTTP, ListenHTTP и т. Д.

Процессоры AWS

Процессоры AWS отвечают за взаимодействие с системой веб-сервисов Amazon. Некоторые из процессоров, которые относятся к этой категории, – это GetSQS, PutSNS, PutS3Object, FetchS3Object и т. Д.

Apache NiFi – Процессоры Взаимоотношения

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

Настроить процессор

Как вы можете видеть на изображении выше, флажки в черном прямоугольнике являются отношениями. Если разработчик выберет эти флажки, потоковый файл прекратит работу в этом конкретном процессоре, когда связь будет успешной или неудачной, или и тем, и другим.

успех

Когда процессор успешно обрабатывает потоковый файл, например, сохраняет или извлекает данные из любого источника данных без получения какого-либо соединения, аутентификации или какой-либо другой ошибки, тогда потоковый файл переходит в отношение успеха.

недостаточность

Когда процессор не может обработать файл потока без ошибок, таких как ошибка аутентификации или проблема с подключением и т. Д., Тогда файл потока переходит в отношение сбоя.

Разработчик также может передавать потоковые файлы другим процессорам, используя соединения. Разработчик может выбрать, а также распределить нагрузку, но балансировка нагрузки только что выпущена в версии 1.8, которая не будет рассмотрена в этом руководстве.

недостаточность

Как вы можете видеть на изображении выше, соединение, отмеченное красным, имеет отношение сбоя, что означает, что все потоковые файлы с ошибками будут отправлены в процессор слева, и, соответственно, все потоковые файлы без ошибок будут перенесены в соединение, отмеченное зеленым.

Давайте теперь перейдем к другим отношениям.

comms.failure

Эта связь встречается, когда не удается получить потоковый файл с удаленного сервера из-за сбоя связи.

не найдено

Любой Flowfile, для которого мы получаем сообщение «Not Found» с удаленного сервера, переходит в отношение not.found .

доступ запрещен

Когда NiFi не может получить потоковый файл с удаленного сервера из-за недостаточного разрешения, он будет проходить через это отношение.

Apache NiFi – FlowFile

Поточный файл является основным объектом обработки в Apache NiFi. Он содержит содержимое и атрибуты данных, которые используются процессорами NiFi для обработки данных. Содержимое файла обычно содержит данные, полученные из исходных систем. Наиболее распространенные атрибуты Apache NiFi FlowFile –

FlowFile

UUID

Это означает универсальный уникальный идентификатор, который является уникальным идентификатором потокового файла, сгенерированного NiFi.

Имя файла

Этот атрибут содержит имя файла этого потокового файла, и он не должен содержать структуру каталогов.

Размер файла

Он содержит размер Apache NiFi FlowFile.

mime.type

Он определяет MIME-тип этого FlowFile.

дорожка

Этот атрибут содержит относительный путь к файлу, к которому принадлежит потоковый файл, и не содержит имя файла.

Apache NiFi – очереди

Подключение потока данных Apache NiFi имеет систему очередей для обработки большого объема данных. Эти очереди могут обрабатывать очень большое количество FlowFiles, чтобы процессор мог обрабатывать их последовательно.

Система массового обслуживания

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

Список очереди

Список потоковых файлов в очереди состоит из позиции, UUID, имени файла, размера файла, длительности очереди и длительности линии. Пользователь может просмотреть все атрибуты и содержимое потокового файла, щелкнув значок информации, присутствующий в первом столбце списка потокового файла.

Flowfile Подробности

Apache NiFi – Технологические группы

В Apache NiFi пользователь может поддерживать разные потоки данных в разных группах процессов. Эти группы могут основываться на разных проектах или организациях, которые поддерживает экземпляр Apache NiFi.

Группа процессов

Четвертый символ в меню в верхней части интерфейса NiFi, как показано на рисунке выше, используется для добавления группы процессов в холст NiFi. Группа процессов с именем «Tutorialspoint.com_ProcessGroup» содержит поток данных с четырьмя процессорами, которые в данный момент находятся в стадии остановки, как вы можете видеть на рисунке выше. Группы процессов могут быть созданы иерархически, чтобы управлять потоками данных в лучшей структуре, что легко понять.

Поток данных

В нижнем колонтитуле пользовательского интерфейса NiFi вы можете увидеть группы процессов и вернуться к началу группы процессов, в которой в настоящее время находится пользователь.

Чтобы увидеть полный список групп процессов, представленных в NiFi, пользователь может перейти к сводке, используя меню, представленное в левой верхней части интерфейса NiFi. Таким образом, есть вкладка групп процессов, в которой перечислены все группы процессов с такими параметрами, как состояние версии, перенесено / размер, в / размер, чтение / запись, выход / размер и т. Д., Как показано на рисунке ниже.

NiFi Резюме

Apache NiFi – этикетки

Apache NiFi предлагает ярлыки, позволяющие разработчику писать информацию о компонентах, представленных на холсте NiFI. Крайний левый значок в верхнем меню NiFi UI используется для добавления метки на холсте NiFi.

NiFI Canvas

Разработчик может изменить цвет метки и размер текста, щелкнув правой кнопкой мыши по метке и выбрав соответствующую опцию в меню.

Меню опций

Apache NiFi – Конфигурация

Apache NiFi – настраиваемая платформа. Файл nifi.properties в каталоге conf

содержит большую часть конфигурации.

Обычно используемые свойства Apache NiFi следующие:

Основные свойства

Этот раздел содержит свойства, которые являются обязательными для запуска экземпляра NiFi.

S.No. Имя свойства Значение по умолчанию описание
1 nifi.flow.configuration.file ./conf/flow.xml.gz Это свойство содержит путь к файлу flow.xml. Этот файл содержит все потоки данных, созданные в NiFi.
2 nifi.flow.configuration.archive.enabled правда Это свойство используется для включения или отключения архивирования в NiFi.
3 nifi.flow.configuration.archive.dir ./conf/archive/ Это свойство используется для указания каталога архива.
4 nifi.flow.configuration.archive.max.time 30 дней Это используется для указания времени хранения для архивирования контента.
5 nifi.flow.configuration.archive.max.storage 500 МБ он содержит максимальный размер архива, каталог может расти.
6 nifi.authorizer.configuration.file ./conf/authorizers.xml Указать файл конфигурации авторизатора, который используется для авторизации пользователя.
7 nifi.login.identity.provider.configuration.file ./conf/login-identity-providers.xml Это свойство содержит конфигурацию провайдеров идентификации для входа,
8 nifi.templates.directory ./conf/templates Это свойство используется для указания каталога, в котором будут храниться шаблоны NiFi.
9 nifi.nar.library.directory ./lib Это свойство содержит путь к библиотеке, которую NiFi будет использовать для загрузки всех компонентов, использующих файлы NAR, присутствующие в этой папке lib.
10 nifi.nar.working.directory ./work/nar/ В этом каталоге будут храниться распакованные файлы nar после их обработки NiFi.
11 nifi.documentation.working.directory ./work/docs/components Этот каталог содержит документацию всех компонентов.

Государственное управление

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

S.No. Имя свойства Значение по умолчанию описание
1 nifi.state.management.configuration.file ./conf/state-management.xml Это свойство содержит путь к файлу state-management.xml. Этот файл содержит все состояние компонента, присутствующее в потоках данных этого экземпляра NiFi.
2 nifi.state.management.provider.local местный провайдер Он содержит идентификатор местного государственного провайдера.
3 nifi.state.management.provider.cluster гк-провайдер Это свойство содержит идентификатор поставщика состояния кластера. Это будет игнорироваться, если NiFi не кластеризован, но должен быть заполнен, если работает в кластере.
4 nifi.state.management. встроенный. работник зоопарка. Начните ложный Это свойство указывает, должен ли этот экземпляр NiFi запускать встроенный сервер ZooKeeper.
5 nifi.state.management. встроенный. zookeeper.properties ./conf/zookeeper.properties Это свойство содержит путь к файлу свойств, который предоставляет свойства ZooKeeper, чтобы использовать if <nifi.state.management. встроенный. работник зоопарка. начало> имеет значение true.

FlowFile Repository

Давайте теперь посмотрим на важные детали репозитория FlowFile –

S.No. Имя свойства Значение по умолчанию описание
1 nifi.flowfile.repository. реализация org.apache.nifi. контроллер. репозиторий. WriteAhead FlowFileRepository Это свойство используется для указания либо сохранения потоковых файлов в памяти или на диске. Если пользователь хочет сохранить потоковые файлы в памяти, измените его на «org.apache.nifi.controller. Repository.VolatileFlowFileRepository».
2 nifi.flowfile.repository.directory ./flowfile_repository Указать каталог для репозитория flowfile.

Apache NiFi – Администрация

Apache NiFi предлагает поддержку нескольких инструментов, таких как ambari, zookeeper для целей администрирования. NiFi также предоставляет конфигурацию в файле nifi.properties для настройки HTTPS и других вещей для администраторов.

работник зоопарка

Сам NiFi не управляет процессом голосования в кластере. Это означает, что при создании кластера все узлы являются основными и координирующими. Итак, zookeeper настроен для управления голосованием основного узла и координатора. Файл nifi.properties содержит некоторые свойства для настройки zookeeper.

S.No. Имя свойства Значение по умолчанию описание
1 nifi.state.management.embedded.zookeeper. свойства ./conf/zookeeper.properties Чтобы указать путь и имя файла свойств zookeeper.
2 nifi.zookeeper.connect.string пустой Чтобы указать строку подключения zookeeper.
3 nifi.zookeeper.connect.timeout 3 сек Чтобы указать время ожидания соединения зоопарка с NiFi.
4 nifi.zookeeper.session.timeout 3 сек Чтобы указать время ожидания сессии Zookeeper с NiFi.
5 nifi.zookeeper.root.node / Nifi Чтобы указать корневой узел для zookeeper.
6 nifi.zookeeper.auth.type пустой Чтобы указать тип аутентификации для zookeeper.

Включить HTTPS

Чтобы использовать NiFi поверх HTTPS, администраторы должны сгенерировать хранилище ключей и доверенных сертификатов и установить некоторые свойства в файле nifi.properties. Инструментарий TLS можно использовать для генерации всех необходимых ключей для включения HTTPS в apache NiFi.

S.No. Имя свойства Значение по умолчанию описание
1 nifi.web.https.port пустой Чтобы указать номер порта https.
2 nifi.web.https.network.interface.default пустой Стандартный интерфейс для https в NiFi.
3 nifi.security.keystore пустой Указать путь и имя файла хранилища ключей.
4 nifi.security.keystoreType пустой Чтобы указать тип хранилища ключей типа JKS.
5 nifi.security.keystorePasswd пустой Чтобы указать пароль хранилища ключей.
6 nifi.security.truststore пустой Чтобы указать путь и имя файла склада доверенных сертификатов.
7 nifi.security.truststoreType пустой Чтобы указать тип хранилища доверенных сертификатов, например, JKS.
8 nifi.security.truststorePasswd пустой Чтобы указать пароль склада доверенных сертификатов.

Другие свойства для администрации

Существуют и другие свойства, которые используются администраторами для управления NiFi и обеспечения непрерывности его обслуживания.

S.No. Имя свойства Значение по умолчанию описание
1 nifi.flowcontroller.graceful.shutdown.period 10 сек Чтобы указать время для постепенного отключения контроллера потока NiFi.
2 nifi.administrative.yield.duration 30 сек Указать длительность административной доходности для NiFi.
3 nifi.authorizer.configuration.file ./conf/authorizers.xml Указать путь и имя файла конфигурации авторизатора.
4 nifi.login.identity.provider.configuration.file ./conf/login-identity-providers.xml Чтобы указать путь и имя файла конфигурации провайдера идентификации.

Apache NiFi – Создание потоков

Apache NiFi предлагает большое количество компонентов, которые помогают разработчикам создавать потоки данных для любых типов протоколов или источников данных. Чтобы создать поток, разработчик перетаскивает компоненты из строки меню на холст и соединяет их, щелкая и перетаскивая мышь из одного компонента в другой.

Как правило, NiFi имеет компонент слушателя в начале потока, такой как getfile, который получает данные из исходной системы. На другом конце находится компонент-передатчик, такой как putfile, и между ними есть компоненты, которые обрабатывают данные.

Например, давайте создадим поток, который берет пустой файл из одного каталога, добавляет некоторый текст в этот файл и помещает его в другой каталог.

Создание потока

  • Для начала перетащите значок процессора на холст NiFi и выберите процессор GetFile из списка.

  • Создайте входной каталог, например, c: \ inputdir.

  • Щелкните правой кнопкой мыши по процессору и выберите «Настроить», на вкладке свойств добавьте « Входной каталог» (c: \ inputdir), нажмите «Применить» и вернитесь на холст.

  • Перетащите значок процессора на холст и выберите процессор ReplaceText из списка.

  • Щелкните правой кнопкой мыши по процессору и выберите «Настроить». На вкладке свойств добавьте текст типа «Hello tutorialspoint.com» в текстовое поле «Значение замены» и нажмите «Применить».

  • Перейдите на вкладку «Настройки», установите флажок «Ошибка» справа и вернитесь на холст.

  • Подключите процессор GetFIle к ReplaceText в случае успеха.

  • Перетащите значок процессора на холст и выберите процессор PutFile из списка.

  • Создайте выходной каталог, например, c: \ outputdir .

  • Щелкните правой кнопкой мыши по процессору и выберите «Настроить». На вкладке свойств добавьте каталог (c: \ outputdir), нажмите «Применить» и вернитесь на холст.

  • Перейдите на вкладку «Настройки» и установите флажок «Ошибка и успех» справа, а затем вернитесь на холст.

  • Подключите процессор ReplaceText к PutFile в случае успеха.

  • Теперь запустите поток и добавьте пустой файл во входной каталог, и вы увидите, что он переместится в выходной каталог, и текст будет добавлен в файл.

Для начала перетащите значок процессора на холст NiFi и выберите процессор GetFile из списка.

Создайте входной каталог, например, c: \ inputdir.

Щелкните правой кнопкой мыши по процессору и выберите «Настроить», на вкладке свойств добавьте « Входной каталог» (c: \ inputdir), нажмите «Применить» и вернитесь на холст.

Перетащите значок процессора на холст и выберите процессор ReplaceText из списка.

Щелкните правой кнопкой мыши по процессору и выберите «Настроить». На вкладке свойств добавьте текст типа «Hello tutorialspoint.com» в текстовое поле «Значение замены» и нажмите «Применить».

Перейдите на вкладку «Настройки», установите флажок «Ошибка» справа и вернитесь на холст.

Подключите процессор GetFIle к ReplaceText в случае успеха.

Перетащите значок процессора на холст и выберите процессор PutFile из списка.

Создайте выходной каталог, например, c: \ outputdir .

Щелкните правой кнопкой мыши по процессору и выберите «Настроить». На вкладке свойств добавьте каталог (c: \ outputdir), нажмите «Применить» и вернитесь на холст.

Перейдите на вкладку «Настройки» и установите флажок «Ошибка и успех» справа, а затем вернитесь на холст.

Подключите процессор ReplaceText к PutFile в случае успеха.

Теперь запустите поток и добавьте пустой файл во входной каталог, и вы увидите, что он переместится в выходной каталог, и текст будет добавлен в файл.

Выполнив вышеуказанные шаги, разработчики могут выбрать любой процессор и другой компонент NiFi, чтобы создать подходящий поток для своей организации или клиента.

Apache NiFi – шаблоны

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

Создать шаблон

Давайте создадим шаблон для потока, который мы создали в главе № 15 «Apache NiFi – Создание потоков».

Создать шаблон

Выделите все компоненты потока с помощью клавиши Shift, а затем щелкните значок создания шаблона в левой части холста NiFi. Вы также можете увидеть ящик для инструментов, как показано на рисунке выше. Нажмите на иконку создания шаблона, отмеченную синим, как на картинке выше. Введите имя для шаблона. Разработчик также может добавить описание, которое не является обязательным.

Скачать шаблон

Затем перейдите к пункту «Шаблоны NiFi» в меню в верхнем правом углу пользовательского интерфейса NiFi, как показано на рисунке ниже.

Скачать шаблон

Теперь щелкните значок загрузки (присутствует справа в списке) шаблона, который вы хотите загрузить. Файл XML с именем шаблона будет загружен.

Загрузить шаблон

Чтобы использовать шаблон в NiFi, разработчик должен загрузить свой XML-файл в NiFi с помощью пользовательского интерфейса. Рядом со значком «Создать шаблон» есть значок «Загрузить шаблон» (помечен синим цветом на изображении ниже) и просмотрите XML.

Загрузить шаблон

Добавить шаблон

На верхней панели инструментов NiFi UI значок шаблона находится перед значком метки. Значок помечен синим цветом, как показано на рисунке ниже.

Добавить шаблон

Перетащите значок шаблона, выберите шаблон из выпадающего списка и нажмите «Добавить». Это добавит шаблон к холсту NiFi.

Apache NiFi – API

NiFi предлагает большое количество API, который помогает разработчикам вносить изменения и получать информацию о NiFi из любого другого инструмента или пользовательских приложений. В этом уроке мы будем использовать приложение почтальона в Google Chrome, чтобы объяснить некоторые примеры.

Чтобы добавить ваш Google Chrome, перейдите по указанному ниже URL-адресу и нажмите кнопку «Добавить в Chrome». Теперь вы увидите новое приложение, добавленное в Google Chrome.

Интернет-магазин Chrome

Текущая версия NiFi rest API – 1.8.0, а документация представлена ​​в указанном ниже URL.

https://nifi.apache.org/docs/nifi-docs/rest-api/index.html

Ниже приведены наиболее часто используемые модули API отдыха NiFi –

  • http: // <URL-адрес nifi>: <порт nifi> / nifi-api / < путь-api >

  • Если HTTPS включен, https: // <URL-адрес nifi>: <порт nifi> / nifi-api / < путь-api >

http: // <URL-адрес nifi>: <порт nifi> / nifi-api / < путь-api >

Если HTTPS включен, https: // <URL-адрес nifi>: <порт nifi> / nifi-api / < путь-api >

S.No. Имя модуля API апи-путь Описание
1 Доступ /доступ Для аутентификации пользователя и получения токена доступа от NiFi.
2 контроллер / контроллер Управлять кластером и создавать отчетные задачи.
3 Услуги Контроллера / контроллер-услуги Он используется для управления службами контроллера и обновления ссылок на службы контроллера.
4 Задачи отчетности / отчетно-задачи Управлять отчетными задачами.
5 поток /течь Чтобы получить метаданные потока данных, статус компонента и историю запросов
6 Группы процессов / Процесс-групп Для загрузки и создания шаблона и создания компонентов.
7 процессоры / процессоры Создать и запланировать процессор и установить его свойства.
8 связи / соединения Чтобы создать соединение, установите приоритет очереди и обновите место назначения соединения
9 FlowFile Queues / flowfile-очереди Для просмотра содержимого очереди, загрузки содержимого потокового файла и пустой очереди.
10 Удаленные группы процессов / дистанционный процесс-групп Создать удаленную группу и включить передачу.
11 происхождение / источник Чтобы запросить происхождение и поиск происхождений событий.

Давайте теперь рассмотрим пример и запустим почтальона, чтобы получить подробную информацию о работающем экземпляре NiFi.

Запрос

GET http://localhost:8080/nifi-api/flow/about

отклик

{
   "about": {
      "title": "NiFi",
      "version": "1.7.1",
      "uri": "http://localhost:8080/nifi-api/",
      "contentViewerUrl": "../nifi-content-viewer/",
      "timezone": "SGT",
      "buildTag": "nifi-1.7.1-RC1",
      "buildTimestamp": "07/12/2018 12:54:43 SGT"
   }
}

Apache NiFi – провенанс данных

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

Провенанс данных

В следующей таблице перечислены различные поля в списке событий NiFi Data Provenance, имеющие следующие поля:

S.No. Имя поля Описание
1 Дата / время Дата и время события.
2 Тип Тип события, как «CREATE».
3 FlowFileUuid UUID файла потока, для которого выполняется событие.
4 Размер Размер потока файла.
5 Имя компонента Имя компонента, который выполнил событие.
6 Тип компонента Тип компонента.
7 Показать родословную В последнем столбце есть значок show lineage, который используется для просмотра линии потока файла, как показано на рисунке ниже.

Значок Lineage

Чтобы получить больше информации о событии, пользователь может щелкнуть значок информации в первом столбце интерфейса пользователя NiFi Data Provenance.

В файле nifi.properties есть некоторые свойства, которые используются для управления хранилищем данных NiFi Data Provenance.

S.No. Имя свойства Значение по умолчанию Описание
1 nifi.provenance.repository.directory.default ./provenance_repository Чтобы указать путь по умолчанию для данных о происхождении NiFi.
2 nifi.provenance.repository.max.storage.time 24 часа Указать максимальное время хранения данных о происхождении NiFi.
3 nifi.provenance.repository.max.storage.size 1 ГБ Указать максимальное хранилище данных о происхождении NiFi.
4 nifi.provenance.repository.rollover.time 30 секунд Указать время пролонгации данных происхождения NiFi.
5 nifi.provenance.repository.rollover.size 100 МБ Указать размер ролловера для данных о происхождении NiFi.
6 nifi.provenance.repository.indexed.fields EventType, FlowFileUUID, имя файла, ProcessorID, отношение Чтобы указать поля, используемые для поиска и индексации данных происхождения NiFi.

Apache NiFi – мониторинг

В Apache NiFi есть несколько способов отслеживать различные статистические данные системы, такие как ошибки, использование памяти, использование процессора, статистика потоков данных и т. Д. В этом руководстве мы обсудим наиболее популярные из них.

Встроенный мониторинг

В этом разделе мы узнаем больше о встроенном мониторинге в Apache NiFi.

Доска объявлений

На доске объявлений показаны последние ошибки и предупреждения, генерируемые процессорами NiFi, в режиме реального времени. Чтобы получить доступ к доске объявлений, пользователь должен перейти в выпадающее меню справа и выбрать опцию доски объявлений. Он обновляется автоматически, и пользователь также может отключить его. Пользователь также может перейти к фактическому процессору, дважды щелкнув по ошибке. Пользователь также может отфильтровать бюллетени, выполнив следующие действия:

  • по сообщению
  • по имени
  • по идентификатору
  • по идентификатору группы

Пользовательский интерфейс данных

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

  • по названию компонента
  • по типу компонента
  • по типу

Обзор интерфейса NiFi

Доступ к сводке Apache NiFi также можно получить из того же меню, что и доска объявлений. Этот интерфейс содержит информацию обо всех компонентах этого конкретного экземпляра или кластера NiFi. Они могут быть отфильтрованы по имени, по типу или по URI. Существуют разные вкладки для разных типов компонентов. Ниже приведены компоненты, которые можно отслеживать в итоговом пользовательском интерфейсе NiFi.

  • процессоры
  • Входные порты
  • Выходные порты
  • Удаленные группы процессов
  • связи
  • Группы процессов

В этом пользовательском интерфейсе внизу справа есть ссылка с названием «Диагностика системы» для проверки статистики JVM.

Задачи отчетности

Apache NiFi предоставляет несколько задач отчетности для поддержки внешних систем мониторинга, таких как Ambari, Grafana и т. Д. Разработчик может создать настраиваемую задачу отчетности или настроить встроенные задачи для отправки метрик NiFi в системы внешнего мониторинга. В следующей таблице перечислены задачи отчетности, предлагаемые NiFi 1.7.1.

S.No. Название задачи отчетности Описание
1 AmbariReportingTask Чтобы настроить Ambari Metrics Service для NiFi.
2 ControllerStatusReportingTask Чтобы сообщить информацию из сводного интерфейса NiFi за последние 5 минут.
3 MonitorDiskUsage Чтобы сообщить и предупредить об использовании диска определенного каталога.
4 MonitorMemory Для наблюдения за количеством кучи Java, используемой в пуле памяти Java JVM.
5 SiteToSiteBulletinReportingTask Сообщать об ошибках и предупреждениях в бюллетенях с использованием протокола Site to Site.
6 SiteToSiteProvenanceReportingTask Чтобы сообщить о событиях NiFi Data Provenance с использованием протокола Site to Site.

NiFi API

Существует API, называемый системной диагностикой, который можно использовать для мониторинга статистики NiFI в любом специально разработанном приложении. Давайте проверим API в почтальоне.

Запрос

http://localhost:8080/nifi-api/system-diagnostics

отклик

{
   "systemDiagnostics": {
      "aggregateSnapshot": {
         "totalNonHeap": "183.89 MB",
         "totalNonHeapBytes": 192819200,
         "usedNonHeap": "173.47 MB",
         "usedNonHeapBytes": 181894560,
         "freeNonHeap": "10.42 MB",
         "freeNonHeapBytes": 10924640,
         "maxNonHeap": "-1 bytes",
         "maxNonHeapBytes": -1,
         "totalHeap": "512 MB",
         "totalHeapBytes": 536870912,
         "usedHeap": "273.37 MB",
         "usedHeapBytes": 286652264,
         "freeHeap": "238.63 MB",
         "freeHeapBytes": 250218648,
         "maxHeap": "512 MB",
         "maxHeapBytes": 536870912,
         "heapUtilization": "53.0%",
         "availableProcessors": 4,
         "processorLoadAverage": -1,
         "totalThreads": 71,
         "daemonThreads": 31,
         "uptime": "17:30:35.277",
         "flowFileRepositoryStorageUsage": {
            "freeSpace": "286.93 GB",
            "totalSpace": "464.78 GB",
            "usedSpace": "177.85 GB",
            "freeSpaceBytes": 308090789888,
            "totalSpaceBytes": 499057160192,
            "usedSpaceBytes": 190966370304,
            "utilization": "38.0%"
         },
         "contentRepositoryStorageUsage": [
            {
               "identifier": "default",
               "freeSpace": "286.93 GB",
               "totalSpace": "464.78 GB",
               "usedSpace": "177.85 GB",
               "freeSpaceBytes": 308090789888,
               "totalSpaceBytes": 499057160192,
               "usedSpaceBytes": 190966370304,
               "utilization": "38.0%"
            }
         ],
         "provenanceRepositoryStorageUsage": [
            {
               "identifier": "default",
               "freeSpace": "286.93 GB",
               "totalSpace": "464.78 GB",
               "usedSpace": "177.85 GB",
               "freeSpaceBytes": 308090789888,
               "totalSpaceBytes": 499057160192,
               "usedSpaceBytes": 190966370304,
               "utilization": "38.0%"
            }
         ],
         "garbageCollection": [
            {
               "name": "G1 Young Generation",
               "collectionCount": 344,
               "collectionTime": "00:00:06.239",
               "collectionMillis": 6239
            },
            {
               "name": "G1 Old Generation",
               "collectionCount": 0,
               "collectionTime": "00:00:00.000",
               "collectionMillis": 0
            }
         ],
         "statsLastRefreshed": "09:30:20 SGT",
         "versionInfo": {
            "niFiVersion": "1.7.1",
            "javaVendor": "Oracle Corporation",
            "javaVersion": "1.8.0_151",
            "osName": "Windows 7",
            "osVersion": "6.1",
            "osArchitecture": "amd64",
            "buildTag": "nifi-1.7.1-RC1",
            "buildTimestamp": "07/12/2018 12:54:43 SGT"
         }
      }
   }
}

Apache NiFi – Обновление

Перед началом обновления Apache NiFi ознакомьтесь с заметками о выпуске, чтобы узнать об изменениях и дополнениях. Пользователь должен оценить влияние этих дополнений и изменений в его / ее текущей установке NiFi. Ниже приведена ссылка для получения заметок о выпуске новых выпусков Apache NiFi.

https://cwiki.apache.org/confluence/display/NIFI/Release+Notes

В настройке кластера пользователь должен обновить установку NiFi каждого узла в кластере. Следуйте приведенным ниже инструкциям для обновления Apache NiFi.

  • Сделайте резервную копию всех пользовательских NAR-файлов, имеющихся в вашем текущем NiFi или lib или любой другой папке.

  • Загрузите новую версию Apache NiFi. Ниже приведена ссылка для загрузки исходного кода и бинарных файлов последней версии NiFi.

    https://nifi.apache.org/download.html

  • Создайте новый каталог в том же каталоге установки текущего NiFi и распакуйте новую версию Apache NiFi.

  • Останови Нифи изящно. Сначала остановите все процессоры и дайте обработать все потоковые файлы, присутствующие в потоке. Как только поток больше не будет, остановите NiFi.

  • Скопируйте конфигурацию authorizers.xml из текущей установки NiFi в новую версию.

  • Обновите значения в bootstrap-messages-services.xml и bootstrap.conf новой версии NiFi из текущей.

  • Добавьте пользовательский журнал из logback.xml в новую установку NiFi.

  • Сконфигурируйте провайдера идентификационных данных для входа в login-identity-provider.xml из текущей версии.

  • Обновите все свойства в nifi.properties новой установки NiFi с текущей версии.

  • Убедитесь, что группа и пользователь новой версии совпадают с текущей версией, чтобы избежать ошибок, связанных с отказом в разрешении.

  • Скопируйте конфигурацию из state-management.xml текущей версии в новую версию.

  • Скопируйте содержимое следующих каталогов из текущей версии установки NiFi в те же каталоги в новой версии.

    • ./conf/flow.xml.gz

    • Также flow.xml.gz из каталога архива.

    • Для провенанса и содержимого репозиториев измените значения в nifi. файл свойств для текущих репозиториев.

    • скопируйте состояние из ./state/local или измените nifi.properties, если указан любой другой внешний каталог.

  • Перепроверьте все выполненные изменения и проверьте, влияют ли они на какие-либо новые изменения, добавленные в новой версии NiFi. Если есть какое-либо влияние, проверьте решения.

  • Запустите все узлы NiFi и убедитесь, что все потоки работают правильно, а хранилища данных хранят данные, а пользовательский интерфейс извлекает их с любыми ошибками.

  • Следите за сообщениями в течение некоторого времени, чтобы проверить наличие новых ошибок.

  • Если новая версия работает правильно, то текущая версия может быть заархивирована и удалена из каталогов.

Сделайте резервную копию всех пользовательских NAR-файлов, имеющихся в вашем текущем NiFi или lib или любой другой папке.

Загрузите новую версию Apache NiFi. Ниже приведена ссылка для загрузки исходного кода и бинарных файлов последней версии NiFi.

https://nifi.apache.org/download.html

Создайте новый каталог в том же каталоге установки текущего NiFi и распакуйте новую версию Apache NiFi.

Останови Нифи изящно. Сначала остановите все процессоры и дайте обработать все потоковые файлы, присутствующие в потоке. Как только поток больше не будет, остановите NiFi.

Скопируйте конфигурацию authorizers.xml из текущей установки NiFi в новую версию.

Обновите значения в bootstrap-messages-services.xml и bootstrap.conf новой версии NiFi из текущей.

Добавьте пользовательский журнал из logback.xml в новую установку NiFi.

Сконфигурируйте провайдера идентификационных данных для входа в login-identity-provider.xml из текущей версии.

Обновите все свойства в nifi.properties новой установки NiFi с текущей версии.

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

Скопируйте конфигурацию из state-management.xml текущей версии в новую версию.

Скопируйте содержимое следующих каталогов из текущей версии установки NiFi в те же каталоги в новой версии.

./conf/flow.xml.gz

Также flow.xml.gz из каталога архива.

Для провенанса и содержимого репозиториев измените значения в nifi. файл свойств для текущих репозиториев.

скопируйте состояние из ./state/local или измените nifi.properties, если указан любой другой внешний каталог.

Перепроверьте все выполненные изменения и проверьте, влияют ли они на какие-либо новые изменения, добавленные в новой версии NiFi. Если есть какое-либо влияние, проверьте решения.

Запустите все узлы NiFi и убедитесь, что все потоки работают правильно, а хранилища данных хранят данные, а пользовательский интерфейс извлекает их с любыми ошибками.

Следите за сообщениями в течение некоторого времени, чтобы проверить наличие новых ошибок.

Если новая версия работает правильно, то текущая версия может быть заархивирована и удалена из каталогов.

Apache NiFi – группа удаленных процессов

Apache NiFi Remote Process Group или RPG позволяет потоку направлять потоки файлов в поток к различным экземплярам NiFi с использованием протокола Site-to-Site. Начиная с версии 1.7.1, NiFi не предлагает сбалансированных отношений, поэтому RPG используется для балансировки нагрузки в потоке данных NiFi.

Удаленный процесс

Разработчик может добавить RPG с верхней панели инструментов пользовательского интерфейса NiFi, перетащив значок, как показано на рисунке выше, на холст. Чтобы настроить RPG, Разработчик должен добавить следующие поля:

S.No. Имя поля Описание
1 URL-адрес Чтобы указать разделенные запятыми URL-адреса удаленных целевых NiFi.
2 Транспортный протокол Чтобы указать транспортный протокол для удаленных экземпляров NiFi. Это либо RAW, либо HTTP.
3 Интерфейс локальной сети Чтобы указать локальный сетевой интерфейс для отправки / получения данных.
4 HTTP прокси-сервер имя хоста Чтобы указать имя хоста прокси-сервера для транспортировки в RPG.
5 Порт прокси-сервера HTTP Указать порт прокси-сервера для транспортной цели в RPG.
6 Пользователь HTTP-прокси Это необязательное поле для указания имени пользователя для HTTP-прокси.
7 Пароль прокси HTTP Это необязательное поле для указания пароля для указанного выше имени пользователя.

Разработчик должен включить его, прежде чем использовать его, как мы запускаем процессоры, прежде чем их использовать.

NiFi Flow

Apache NiFi – Настройки контроллера

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

Чтобы получить доступ к настройкам контроллера, используйте раскрывающееся меню в правом верхнем углу интерфейса NiFi, как показано на рисунке ниже.

Настройки контроллера

Apache NiFi предлагает множество настроек контроллера, мы обсудим наиболее часто используемые и их настройку в NiFi.

DBCPConnectionPool

Добавьте знак «плюс» на странице «Настройки Nifi» после выбора параметра «Настройки контроллера». Затем выберите DBCPConnectionPool из списка настроек контроллера. DBCPConnectionPool будет добавлен на главной странице настроек NiFi, как показано на рисунке ниже.

Пул подключений

Он содержит следующую информацию о настройке контроллера : Имя

  • Тип
  • сверток
  • государственный
  • Объем
  • Настроить и удалить значок

Нажмите на иконку конфигурации и заполните необходимые поля. Поля перечислены в таблице ниже –

S.No. Имя поля Значение по умолчанию описание
1 URL соединения с базой данных пустой Чтобы указать URL-адрес подключения к базе данных.
2 Имя класса драйвера базы данных пустой Чтобы указать имя класса драйвера для базы данных, например com.mysql.jdbc.Driver для mysql.
3 Максимальное время ожидания 500 миллис Указать время ожидания данных от соединения с базой данных.
4 Макс. Всего подключений 8 Указать максимальное количество выделенного соединения в пуле соединений с базой данных.

Чтобы остановить или настроить параметры контроллера, сначала необходимо остановить все подключенные компоненты NiFi. NiFi также добавляет область действия в настройках контроллера для управления его конфигурацией. Следовательно, не будут затронуты только те, которые имеют одни и те же настройки и будут использовать те же настройки контроллера.

Apache NiFi – задача отчетности

Задачи отчетов Apache NiFi аналогичны службам контроллера, которые работают в фоновом режиме и отправляют или регистрируют статистику экземпляра NiFi. Доступ к задаче создания отчетов NiFi также можно получить на той же странице, что и настройки контроллера, но на другой вкладке.

Задача отчетности

Чтобы добавить задачу отчетности, разработчику необходимо нажать на кнопку «плюс», расположенную в правой верхней части страницы задач отчетности. Эти задачи отчетности в основном используются для мониторинга деятельности экземпляра NiFi, в бюллетенях или происхождении. Главным образом в этих задачах по отчетности используется передача данных с сайта на сайт для передачи статистических данных NiFi на другой узел или внешнюю систему.

Давайте теперь добавим настроенную задачу отчетности для большего понимания.

MonitorMemory

Эта задача создания отчетов используется для создания бюллетеней, когда пул памяти пересекает указанный процент. Выполните следующие действия, чтобы настроить задачу создания отчетов MonitorMemory.

  • Добавьте знак «плюс» и найдите MonitorMemory в списке.

  • Выберите MonitorMemory и нажмите ДОБАВИТЬ.

  • Как только он будет добавлен на главную страницу главной задачи отчетов, нажмите на значок настройки.

  • На вкладке свойств выберите пул памяти, который вы хотите отслеживать.

  • Выберите процент, после которого вы хотите, чтобы бюллетени оповещали пользователей.

  • Запустите задачу отчетности.

Добавьте знак «плюс» и найдите MonitorMemory в списке.

Выберите MonitorMemory и нажмите ДОБАВИТЬ.

Как только он будет добавлен на главную страницу главной задачи отчетов, нажмите на значок настройки.

На вкладке свойств выберите пул памяти, который вы хотите отслеживать.

Выберите процент, после которого вы хотите, чтобы бюллетени оповещали пользователей.

Запустите задачу отчетности.

Apache NiFi – пользовательский процессор

Apache NiFi является платформой с открытым исходным кодом и дает разработчикам возможность добавить свой собственный процессор в библиотеку NiFi. Выполните следующие действия, чтобы создать собственный процессор.

  • Загрузите последнюю версию Maven по ссылке, приведенной ниже.

    https://maven.apache.org/download.cgi

  • Добавьте переменную среды с именем M2_HOME и задайте значение в качестве установочного каталога maven.

  • Загрузите Eclipse IDE по ссылке ниже.

    https://www.eclipse.org/downloads/download.php

  • Откройте командную строку и выполните команду Maven Archetype.

Загрузите последнюю версию Maven по ссылке, приведенной ниже.

https://maven.apache.org/download.cgi

Добавьте переменную среды с именем M2_HOME и задайте значение в качестве установочного каталога maven.

Загрузите Eclipse IDE по ссылке ниже.

https://www.eclipse.org/downloads/download.php

Откройте командную строку и выполните команду Maven Archetype.

> mvn archetype:generate
  • Ищите тип nifi в проектах архетипов.

  • Выберите org.apache.nifi: проект nifi-процессор-пакет-архетип.

  • Затем из списка версий выберите последнюю версию, т. Е. 1.7.1, для этого урока.

  • Введите groupId, artifactId, версию, пакет, artifactBaseName и т. Д.

  • Тогда будет создан maven проект с каталогами.

    • nifi- <artifactBaseName> -processors

    • nifi- <artifactBaseName> -nar

  • Запустите приведенную ниже команду в каталоге nifi- <artifactBaseName> -processors, чтобы добавить проект в eclipse.

Ищите тип nifi в проектах архетипов.

Выберите org.apache.nifi: проект nifi-процессор-пакет-архетип.

Затем из списка версий выберите последнюю версию, т. Е. 1.7.1, для этого урока.

Введите groupId, artifactId, версию, пакет, artifactBaseName и т. Д.

Тогда будет создан maven проект с каталогами.

nifi- <artifactBaseName> -processors

nifi- <artifactBaseName> -nar

Запустите приведенную ниже команду в каталоге nifi- <artifactBaseName> -processors, чтобы добавить проект в eclipse.

mvn install eclipse:eclipse
  • Откройте затмение и выберите импорт из меню файла.

  • Затем выберите «Существующие проекты в рабочую область» и добавьте проект из каталога nifi- <artifactBaseName> -processors в eclipse.

  • Добавьте свой код в публичную функцию void onTrigger (контекст ProcessContext, сеанс ProcessSession), которая запускается, когда запланирован запуск процессора.

  • Затем упакуйте код в файл NAR, выполнив указанную ниже команду.

Откройте затмение и выберите импорт из меню файла.

Затем выберите «Существующие проекты в рабочую область» и добавьте проект из каталога nifi- <artifactBaseName> -processors в eclipse.

Добавьте свой код в публичную функцию void onTrigger (контекст ProcessContext, сеанс ProcessSession), которая запускается, когда запланирован запуск процессора.

Затем упакуйте код в файл NAR, выполнив указанную ниже команду.

mvn clean install
  • Файл NAR будет создан в nifi -nar / целевой каталог.

  • Скопируйте файл NAR в папку lib Apache NiFi и перезапустите NiFi.

  • После успешного перезапуска NiFi проверьте список процессоров для нового пользовательского процессора.

  • На наличие ошибок проверьте файл ./logs/nifi.log.

Файл NAR будет создан в nifi -nar / целевой каталог.

Скопируйте файл NAR в папку lib Apache NiFi и перезапустите NiFi.

После успешного перезапуска NiFi проверьте список процессоров для нового пользовательского процессора.

На наличие ошибок проверьте файл ./logs/nifi.log.

Apache NiFi – Сервис пользовательских контроллеров

Apache NiFi является платформой с открытым исходным кодом и предоставляет разработчикам возможность добавить свои собственные сервисы контроллеров в Apache NiFi. Шаги и инструменты почти такие же, как и для создания собственного процессора.

  • Откройте командную строку и выполните команду Maven Archetype.

Откройте командную строку и выполните команду Maven Archetype.

> mvn archetype:generate
  • Ищите тип nifi в проектах архетипов.

  • Выберите org.apache.nifi: проект nifi-service-bundle-archetype .

  • Затем из списка версий выберите самую последнюю версию – 1.7.1 для этого урока.

  • Введите groupId, artifactId, версию, пакет, artifactBaseName и т. Д.

  • Будет создан Maven проект с каталогами.

    • nifi- <artifactBaseName>

    • nifi- <artifactBaseName> -nar

    • nifi- <artifactBaseName> -api

    • nifi- <artifactBaseName> -api-Нар

  • Запустите приведенную ниже команду в каталогах nifi- <artifactBaseName> и nifi- <artifactBaseName> -api, чтобы добавить эти два проекта в затмение.

    • mvn установить затмение: затмение

  • Откройте затмение и выберите импорт из меню файла.

  • Затем выберите «Существующие проекты в рабочую область» и добавьте проект из каталогов nifi- <artifactBaseName> и nifi- <artifactBaseName> -api в eclipse.

  • Добавьте свой код в исходные файлы.

  • Затем упакуйте код в файл NAR, выполнив указанную ниже команду.

    • mvn clean install

  • Два файла NAR будут созданы в каждом каталоге nifi- <artifactBaseName> / target и nifi- <artifactBaseName> -api / target.

  • Скопируйте эти файлы NAR в папку lib Apache NiFi и перезапустите NiFi.

  • После успешного перезапуска NiFi проверьте список процессоров для нового пользовательского процессора.

  • На наличие ошибок проверьте файл ./logs/nifi.log .

Ищите тип nifi в проектах архетипов.

Выберите org.apache.nifi: проект nifi-service-bundle-archetype .

Затем из списка версий выберите самую последнюю версию – 1.7.1 для этого урока.

Введите groupId, artifactId, версию, пакет, artifactBaseName и т. Д.

Будет создан Maven проект с каталогами.

nifi- <artifactBaseName>

nifi- <artifactBaseName> -nar

nifi- <artifactBaseName> -api

nifi- <artifactBaseName> -api-Нар

Запустите приведенную ниже команду в каталогах nifi- <artifactBaseName> и nifi- <artifactBaseName> -api, чтобы добавить эти два проекта в затмение.

mvn установить затмение: затмение

Откройте затмение и выберите импорт из меню файла.

Затем выберите «Существующие проекты в рабочую область» и добавьте проект из каталогов nifi- <artifactBaseName> и nifi- <artifactBaseName> -api в eclipse.

Добавьте свой код в исходные файлы.

Затем упакуйте код в файл NAR, выполнив указанную ниже команду.

mvn clean install

Два файла NAR будут созданы в каждом каталоге nifi- <artifactBaseName> / target и nifi- <artifactBaseName> -api / target.

Скопируйте эти файлы NAR в папку lib Apache NiFi и перезапустите NiFi.

После успешного перезапуска NiFi проверьте список процессоров для нового пользовательского процессора.

На наличие ошибок проверьте файл ./logs/nifi.log .

Apache NiFi – логирование

Apache NiFi использует библиотеку logback для обработки своей регистрации. В каталоге conf NiFi есть файл logback.xml, который используется для настройки регистрации в NiFi. Журналы создаются в папке журналов NiFi, а файлы журналов описаны ниже.

Nifi-app.log

Это основной файл журнала nifi, в котором регистрируются все действия приложения apache NiFi, начиная с загрузки файлов NAR и заканчивая ошибками во время выполнения или сообщениями, встречающимися компонентами NiFi. Ниже приведен стандартный appender в файле logback.xml для файла nifi-app.log .

<appender name="APP_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
   <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app.log</file>
   <rollingPolicy
      class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>
         ${org.apache.nifi.bootstrap.config.log.dir}/
	      nifi-app_%d{yyyy-MM-dd_HH}.%i.log
      </fileNamePattern>
      <maxFileSize>100MB</maxFileSize>
      <maxHistory>30</maxHistory>
   </rollingPolicy>
   <immediateFlush>true</immediateFlush>
   <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
   </encoder>
</appender>

Имя приложения – APP_FILE, а класс – RollingFileAppender, что означает, что регистратор использует политику отката. По умолчанию максимальный размер файла составляет 100 МБ и может быть изменен до необходимого размера. Максимальное время хранения APP_FILE составляет 30 файлов журнала и может быть изменено в соответствии с требованиями пользователя.

Nifi-user.log

Этот журнал содержит пользовательские события, такие как веб-безопасность, конфигурация веб-API, авторизация пользователя и т. Д. Ниже приведен пример добавления файла nifi-user.log в файл logback.xml.

<appender name="USER_FILE"
   class="ch.qos.logback.core.rolling.RollingFileAppender">
   <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user.log</file>
   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>
         ${org.apache.nifi.bootstrap.config.log.dir}/
	      nifi-user_%d.log
      </fileNamePattern>
      <maxHistory>30</maxHistory>
   </rollingPolicy>
   <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
   </encoder>
</appender>

Имя приложения – USER_FILE. Это следует политике ролловера. Максимальный срок хранения для USER_FILE – 30 файлов журнала. Ниже приведены стандартные регистраторы для приложения USER_FILE, присутствующего в nifi-user.log.

<logger name="org.apache.nifi.web.security" level="INFO" additivity="false">
   <appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.api.config" level="INFO" additivity="false">
   <appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.authorization" level="INFO" additivity="false">
   <appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
   <appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
   <appender-ref ref="USER_FILE"/>
</logger>

Nifi-bootstrap.log

Этот журнал содержит журналы начальной загрузки, стандартный вывод apache NiFi (все system.out написаны в коде в основном для отладки) и стандартную ошибку (все system.err написаны в коде). Ниже по умолчанию добавлен nifi-bootstrap.log в logback.log.

<appender name="BOOTSTRAP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap.log</file>
   <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>
         ${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap_%d.log
      </fileNamePattern>
      <maxHistory>5</maxHistory>
   </rollingPolicy>
   <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
   </encoder>
</appender>

Файл nifi-bootstrap.log, имя аппендера – BOOTSTRAP_FILE, что также соответствует политике отката. Максимальное время хранения для приложения BOOTSTRAP_FILE составляет 5 файлов журнала. Ниже приведены стандартные логгеры для файла nifi-bootstrap.log.