Оглавление:

1. Что такое Apache NiFi .

2. Установка и настройка Apache NiFi.

3. Начало работы с Apache NiFi (NiFi Flow, Process Group, Processors).


Что такое Apache NiFi

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

Название NiFi происходит от «Niagara Files». Проект в течение восьми лет разрабатывался агентством национальной безопасности США, а в ноябре 2014 года его исходный код был открыт и передан Apache Software Foundation в рамках программы по передаче технологий (NSA Technology Transfer Program).

NiFi — мощный инструмент, который умеет работать с большим количеством источников данных. Вы можете получать данные из Интернета по HTTP (есть даже отдельный модуль для работы с Твиттером) или FTP, можно читать данные из локальных и даже распределенных (HDFS) каталогов или баз данных. Полученные данные можно обрабатывать, модифицировать, есть даже свой встроенный язык (Expression Language). Затем данные можно сохранить либо в файл, либо распределенное хранилище, либо базу данных. Особенно радует поддержка большого числа различных технологий и протоколов передачи и хранения данных: HDFS, Hive, HBase, Solr, Cassandra, MongoDB, ElastcSearch, Kafka, RabbitMQ, HTTPS, SFTP и другие.

Так же важной особенностью NiFi является кросплатформенность, он одинаково удобно устанавливается и работает в Windows и Linux системах.


Установка и настройка Apache NiFi.

Установка NiFi предельно проста. Сначала качаем нужную версию с официального сайта, на данный момент это файл nifi-1.11.4-bin.tar.gz. У меня уже установлена версия 1.9.0, поэтому далее в статье я буду оперировать командами под эту версию. Архив большой (1.2 ГБ), поэтому придется подождать.

После успешной загрузки файла его необходимо распаковать в необходимую директорию, у меня это /usr/local. На этом установка завершена, следует отметить, что для Windows абсолютно такая же последовательность действий, только качать удобнее архив zip.

Для работы в NiFi применяется web-интерфейс, доступный по адресу: http://Адрес_сервера:8080/nifi

Адрес_сервера - это на локальном компьютере localhost, на удаленном - IP или DNS-адрес удаленной машины.

8080 - порт, настроен по умолчанию.

У меня уже этот порт занят, поэтому изменим его. Для этого нужно войти в каталог conf в установочной директории NiFi:

cd /usr/local/nifi-1.9.0/conf

И отредактировать файл nifi.properties

sudo gedit nifi.properties

Далее в редакторе найти строку nifi.web.http.port и присвоить необходимое значение, у меня 1111.

Теперь все готово к запуску. В Linux это делается командой:


sudo /usr/local/nifi-1.9.0/bin/nifi.sh start


Для Windows в каталоге bin запустить двойным щелчком run-nifi.bat/

Запускается NiFi долго, несколько минут. Для работы необходимо запустить браузер, и набрать в адресной строке строку, указанную выше. Для моего примера так: http://Адрес_сервера:1111/nifi

Если все успешно прошло, вы увидите рабочую область, все готово к работе, но об этом поговорим далее.

Стоит отметить, браузер должен поддерживать HTML5.


Начало работы с Apache NiFi (NiFi Flow, Process Group, Processors).

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


Не буду расписывать назначение модулей, сразу приступим к практике. Каждый проект объединяется с помощью модуля Process Group. Основные функциональные модули - Processors.

NiFi поддерживает Drug and Drop, поэтому возьмем модуль Process Group и перетащим его в рабочую область, смотрим скриншоты.

Введем имя для группы процессоров, у меня MyTest. Вот что имеем:

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

Уровней вложенности может быть достаточно много, но обычно хватает одного или двух.

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

Сначала создадим на машине, где установлен NiFi (пример для ОС Linux), два каталога /usr/local/temp и /usr/local/temp1.

Теперь в модулях NiFi выберем Processor и перетащим его в рабочую область.

В результате появится окно выбора процессора, найдем нужный (GetFile), двойным кликом или кнопкой Add добавим его:

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

Для настройки процессора необходимо открыть окно конфигурации (двойной клик по процессору, или клик правой кнопкой и выбрать Configure, см скриншот.).

В открывшемся окне выбрать вкладку PROPERTIES и указать (двойной клик по значению свойства) нужное нам свойство - входной каталог (Input Directory, у нас /usr/local/temp), как на скриншоте.

Настроенный процессор будет читать все файлы (свойство FileFilter) из указанного каталога, удалять их (свойство Keep Source File) и в формате FlowFile (если файл успешно считался) отправлять на выход процессора Succes (вкладка настроек SETTINGS).

Для примера возьмем модуль Output Port и направим на него поток Succes от процессора GetFile. Смотрим серию скриншотов ниже:

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

После соединения модулей появится окно настроек потока.

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

Процессор PutFile производит запись файла из потока в директорию, указанную в настройках процессора (директория должна существовать в системе).

Осталось соединить выходной порт процессора MyTest (OUT) с процессором PutFile.

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

Откроем конфигурацию процессора, вкладка Settings и включим опцию уничтожать поток в случае успешной операции.

В случае ошибки обычно поток возвращают обратно в процессор.

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

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

Проект запущен, теперь создайте или скопируйте файл в каталог /usr/local/temp. Данный файл будет автоматически скопирован в каталог /usr/local/temp1 и удален.

Вот мы и создали первый проект в NiFi, но возможности данного средства очень широки, и позволяют копировать файлы в HDFS, топики Kafka, удаленные серверы TCP, HTTP, FTP.

Комментарии

Комментировать могуть только зарегистрированные пользователи

Перевести страницу (translate page)
Реклама