Учебное пособие по Apache NiFi Tutorial (Guide, Инструкция)

Введение в Apache NiFi

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

Apache NiFi — это система потоков данных, основанная на концепциях программирования на основе потоков. Он разработан Агентством национальной безопасности (АНБ), а затем в 2015 году стал официальной частью Apache Project Suite.

Каждые 6-8 недель Apache NiFi выпускает новое обновление для удовлетворения требований пользователей. 

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

Что такое Apache NiFi?

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

  • NiFi предлагает пользовательский веб-интерфейс для создания, мониторинга и управления потоками данных. NiFi расшифровывается как Niagara Files, который был разработан Агентством национальной безопасности (АНБ), но теперь поддерживается фондом Apache. 
  • Apache NiFi — это веб-платформа пользовательского интерфейса, в которой нам необходимо определить источник, место назначения и процессор для сбора, хранения и передачи данных соответственно.
  • У каждого процессора в NiFi есть отношения, которые используются при соединении одного процессора с другим.

Почему мы используем Apache NiFi?

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

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

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

Особенности Apache NiFi

Особенности Apache NiFi заключаются в следующем:

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

Архитектура Apache NiFi

Архитектура Apache NiFi включает веб-сервер, контроллер потока и процессор, работающий на виртуальной машине Java (JVM).

Он имеет три репозитория, такие как репозиторий FlowFile, репозиторий контента и репозиторий происхождения.

  • Веб сервер

Веб-сервер используется для размещения API управления и контроля на основе HTTP.

  • Контроллер потока

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

  • Расширения

Несколько типов расширений NiFi определены в других документах. Расширения используются для работы и выполнения в JVM.

  • Репозиторий FlowFile

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

Он отслеживает состояние, которое активно в потоке в данный момент. Стандартным подходом является непрерывный журнал упреждающей записи, который находится в описанном разделе диска.

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

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

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

  • Репозиторий происхождения

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

Данные о событиях индексируются и доступны для поиска в каждом месте.

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

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

Ключевые концепции Apache NiFi

Ключевые концепции Apache NiFi заключаются в следующем:

  • Поток : Поток создается для подключения различных процессоров для совместного использования и изменения данных, которые требуются от одного источника данных к другому месту назначения.
  • Соединение : Соединение используется для соединения процессоров, которые действуют как очередь для хранения данных в очереди, когда это необходимо. Он также известен как ограниченный буфер в терминах программирования на основе потоков (FBP). Это позволяет нескольким процессам взаимодействовать с разной скоростью.
  • Процессоры . Процессор — это модуль Java, который используется либо для извлечения данных из исходной системы, либо для их сохранения в целевой системе. Для добавления атрибута или изменения содержимого в FlowFile можно использовать несколько процессоров. Он отвечает за отправку, слияние, маршрутизацию, преобразование, обработку, создание, разделение и получение потоковых файлов.
  • FlowFile : FlowFile — это базовая концепция NiFi, которая представляет собой единый объект данных, выбранных из исходной системы в NiFi. Это позволяет пользователям вносить изменения в Flowfile, когда он перемещается из исходного процессора в место назначения. Различные события, такие как создание, получение, клонирование и т. д., которые выполняются в Flowfile с использованием разных процессоров в потоке.
  • Событие : событие представляет собой изменение в Flowfile при обходе потоком NiFi. Такие события отслеживаются в источнике данных.
  • Происхождение данных : Происхождение данных — это репозиторий, который позволяет пользователям проверять данные, касающиеся файла Flow, и помогает в устранении неполадок, если возникают какие-либо проблемы при обработке файла Flow.
  • Группа процессов : группа процессов представляет собой набор процессов и их соответствующих соединений, которые могут получать данные от входного порта и отправлять их через выходные порты.

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

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

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

Когда диспетчер потока данных (DFM) переходит к пользовательскому интерфейсу (UI), на экране появляется пустой холст, на котором можно построить поток данных.

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

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

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

Строка поиска используется для поиска информации о компонентах в DataFlow. Палитра навигации используется для панорамирования холста, а также для увеличения и уменьшения масштаба.

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

Палитра Operate в левой части экрана содержит различные кнопки, которые используются DFM для управления потоком, а также для доступа и настройки свойств системы.

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

Ниже перечислены компоненты Apache NiFi:

Процессор

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

Входной порт

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

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

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

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

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

Группа удаленных процессов

Воронка

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

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

Шаблон

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

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

Этикетка

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

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

Ниже приводится классификация процессов Apache NiFi.

  • Процессоры AWS

Процессоры AWS отвечают за связь с системой веб-сервисов Amazon. Такими обработчиками категорий являются PutSNS, FetchS3Object, GetSQS, PutS3Object и т. д.

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

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

Примерами являются ExtractText, EvaluateJSONPath, AttributeToJSON, UpdateAttribute и т. д.

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

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

Такие процессоры используют настройки контроллера подключения к данным Apache NiFi. Примерами являются PutSQL, ListDatabaseTables, ExecuteSQL, PutDatabaseRecord и т. д.

  • Процессоры приема данных

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

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

Процессоры преобразования данных используются для изменения содержимого FlowFiles.

Их можно использовать для замены данных FlowFile, когда пользователю необходимо отправить FlowFile в формате HTTP для вызова процессора HTTP. Примеры: JoltTransformJSON ReplaceText и т. д. 

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

Процессоры HTTP работают с вызовами HTTP и HTTPS. Примеры: InvokeHTTP, ListenHTTP, PostHTTP и т. д.

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

Процессоры маршрутизации и посредничества используются для маршрутизации FlowFiles к разным процессорам в зависимости от информации в атрибутах FlowFiles.

Он отвечает за управление потоками данных NiFi. Примерами являются RouteOnContent, RouteText, RouteOnAttribute и т. д.

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

Отправляющие процессоры данных — это конечные процессоры в потоке данных. Он отвечает за хранение или отправку данных в пункт назначения.

После отправки данных процессор DROP FlowFile с успешным отношением. Примеры: PutKAFKA, PutFTP, PutSFTP, PutEmail и т. д.

  • Процессоры разделения и агрегации

Процессоры разделения и агрегации используются для разделения и объединения контента, доступного в потоке данных. Примеры: SplitXML, SplitJSON, SplitContent, MergeContent и т. д.

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

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

Примерами являются ExecuteScript, ExecuteStreamCommand, ExecuteGroovyScript, ExecuteProcess и т. д.

Как установить Apache NiFi?

Чтобы установить Apache NiFi, выполните следующие действия.

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

2. В разделе «Двоичные файлы» щелкните zip-файл установки приложения NiFi для ОС Windows.

3. Приведенная выше ссылка перенаправляет вас на новую страницу. Здесь вы получите ссылку для загрузки Apache NiFi.

4. После загрузки файла распакуйте его.

5. Откройте папку bin (т.е. nifi-1.12.1 > bin) и нажмите run-nifi и запустите для запуска.

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

Как построить поток?

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

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

Чтобы добавить и настроить процессоры, выполните следующие действия.

  1. Перейдите в раздел компонентов на панели инструментов и перетащите процессор. Откроется окно Добавить процессор со списком процессоров. 
  2. Найдите нужный процессор или сократите список процессоров в зависимости от категории и функциональности.
  3. Нажмите на процессор, который вы хотите выбрать, и добавьте его на холст, дважды щелкнув процессор или нажав «Добавить».
  4. Если вы знаете имя процессора, вы можете ввести его в строке фильтра. Добавьте еще один процессор на холст.
  5. Вы увидите, что оба процессора недействительны, потому что они имеют предупреждающее сообщение, указывающее, что требования должны быть настроены, чтобы сделать процессоры действительными и выполняться.
  6. Чтобы удовлетворить требования предупреждения, нам нужно настроить и запустить процессоры.

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

Преимущества Apache NiFi заключаются в следующем:

  • Apache NiFi предлагает пользовательский веб-интерфейс (UI). Чтобы он мог работать в веб-браузере, используя порт и локальный хост. 
  • В веб-браузере Apache NiFi использует протокол HTTPS для обеспечения безопасного взаимодействия с пользователем.
  • Он поддерживает протокол SFTP, который позволяет получать данные с удаленных компьютеров.
  • Он также предоставляет политики безопасности на уровне группы процессов, уровне пользователя и других модулях.
  • NiFi поддерживает все устройства, на которых работает Java.
  • Он обеспечивает управление в режиме реального времени, что упрощает перемещение данных между источником и получателем.
  • Apache NiFi поддерживает кластеризацию, поэтому он может работать на нескольких узлах с одним и тем же потоком, обрабатывая разные данные, что повышает производительность обработки данных.
  • NiFi поддерживает более 188 процессоров, и пользователь может создавать собственные плагины для поддержки различных типов систем данных.

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

Ниже приведены недостатки Apache NiFi.

  • У Apache NiFi есть проблема с сохранением состояния в случае переключения основного узла, из-за которого процессоры не могут получать данные из исходных систем.
  • При внесении пользователем каких-либо изменений узел отключается от кластера, а затем файл flow.xml становится недействительным. Узел не может подключиться к кластеру, пока администратор не скопирует XML-файл вручную с узла.
  • Чтобы работать с Apache NiFi, вы должны хорошо разбираться в базовой системе.
  • Он предлагает уровень темы, и авторизации SSL может быть недостаточно.
  • Требуется поддерживать цепочку хранения данных.

Вывод

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

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

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x