Apache NiFi — это простая платформа обработки событий (сообщений), предоставляющая возможности управления потоками данных из разнообразных источников в режиме реального времени с использованием графического интерфейса. Программа Apache NiFi написана на Java и была разработана Агентством Национальной Безопасности (NSA) под кодовым названием «Niagara Files» для диспетчеризации данных, поддерживающих работу с разнообразными небольшими сетевыми граничными устройствами (типа Raspberry Pi и других подобных микропроцессоров), крупными кластерами данных и облачной инфраструктурой.
Apache NiFi использует концепцию потока, рассматриваемую как последовательность операций: передача, преобразование и обогащение данных над последовательностью отдельных событий (events). Таким образом, поток НЕ рассматривается как большая пакетная (batch) операция, требующая выполнения первоначальной загрузки всех данных перед началом обработки. Например, SQL база данных с миллионами строк рассматривается Apache NiFi как миллионы отдельных строк, требующие своей обработки.
Apache NiFi состоит из 3-х основных компонент:
- Flow Files — потоки файлов. Информация в NiFi состоит из двух частей: атрибуты и контейнер с данными (payload). FlowFiles обычно использует предопределенный набор атрибутов, которые могут быть добавлены (изменены) с помощью дополнительных операций. Payload (данные) представляют собой собственно информацию, которая обрабатывается процессорами.
- Flow File Processor — фрагменты кода, представляющие контейнер процессора с входами и выходами для данных. Например, процессор GetFTP получает данные с FTP-директории и создает поток файлов FlowFile, включающий атрибуты из директории (время создания, имя файла, данные). Полученный FlowFile далее может быть обработан другим процессором, который использует логику на основе атрибутов каждого FlowFile, таких как регулярные выражения Regex, работающие с именем файла.
- Connections — определение того, как FlowFiles передаются между процессорами. Потоки файлов, обработанные без сбоев, формируют выполненную очередь (success queue), а сообщения с проблемами обработки передаются в failure queue. Существуют и другие типы соединений.
Apache NiFi имеет богатый графический веб-интерфейс для создания и управления потоками данных, более 260 процессоров и коннекторов из коробки, что позволяет его использовать для сопряжения практически с любыми типами источников и потребителей данных. Асинхронный режим работы обеспечивающий высокую пропускную способность, удобную обработку ошибок и возможность версионного контроля компонент Apache NiFi.
Более подробно вы можете познакомиться с особенностями администрирования и настройки кластера Apache NiFi на наших 3-х дневных курсах в «Школе Больших Данных»