Продолжая разговор про практическое использование Apache NiFi в системах больших данных (Big Data) и интернета вещей (Internet of Things), сегодня мы рассмотрим, чем обусловлена популярность этой кластерной платформы маршрутизации, преобразования и доставки распределенной информации. Читайте в нашей статье про ключевые преимущества Apache NiFi в контексте прикладного использования этого инструмента.
10 основных преимуществ Apache Nifi
Напомним, Apache NiFi реализован по принципу распределенной архитектуры для быстрой параллельной загрузки и обработки данных, имеет большое количество плагинов для источников и преобразований, а также поддерживает версионирование конфигураций [1].
Главными достоинствами этой платформы маршрутизации, преобразования и доставки данных, особенно значимые для ее практического применения в Big Data проектах и системах интернета вещей, в т.ч. индустриального (Industrial IoT, IIoT), можно назвать следующие качества [2]:
- мощность и масштабируемость кластерной архитектуры в сочетании с легковесностью за счет MiNiFi, что позволяет включать его в комплексные Big Data системы, а также использовать NiFi в IoT/IIoT-проектах при ограниченной пропускной способности канала передачи данных и нестабильном интернет-соединении, о чем мы рассказывали здесь.
- поддержка любых форматов неструктурированных, полуструктурированных и структурированных данных благодаря отсутствию требований к предварительному определению форматов (Avro, JSON, CSV, Grok) и наличию встроенного реестра разных схем данных (Schema Registry) [3], работа которого похожа на аналогичный компонент Apache Kafka, о котором мы рассказывали в этой статье;
- легкая интеграция со множеством сторонних приемников и источников данных, включая базы и хранилища данных, а также протоколы передачи информации (HDFS, Hive, HBase, Solr, Cassandra, MongoDB, Amazon Elasticsearch, Kafka, RabbitMQ, Syslog, HTTPS, SFTP). Взаимодействие с конкретной СУБД реализуется за счет добавления соответствующего JDBC-драйвера. Также имеется API-интерфейс для написания своего модуля в качестве дополнительного приемника или преобразователя данных.
- Графический веб-интерфейс для создания потоков данных (DataFlow), который обеспечивает относительно низкий порог входа в технологию, позволяя работать с NiFi не только аналитику (Data Analyst) и инженеру (Data Engineer), но и разработчику, администратору и DevOps-инженеру. Поэтому пользователь может наглядно отслеживать полный жизненный цикл данных, наблюдая за изменением их содержимого и атрибутов в режиме онлайн.
- Наличие REST APIдля сбора статистики, мониторинга и управления компонентами DataFlow. Это обеспечивает программный доступ к управлению и управлению экземпляром NiFi в режиме реального времени, позволяя запускать и останавливать обработчики событий, отслеживать очереди, данные о происхождении запросов и многое другое [4].
- Поддержка SQL для преобразования, фильтрации и аналитики данных – можно задавать регулярные выражения, выполняя парсинг информации, фильтровать данные, добавлять поля и конвертировать форматы. Помимо SQL, NiFi поддерживает собственный язык регулярных выражений, богатый различными операторами и встроенными функциями. Благодаря этому легко выполнять многие операции с данными: добавление атрибутов и переменных, сравнение и вычисление значений, использование вычисленных значений в качестве параметров для дальнейших операций, например, при формировании пути для загрузки информации в HDFS или SQL-запроса к Hive, HBase или другой базе данных.
- 2 режима работы с данными – пакетный (batch) и потоковый (streaming), что позволяет использовать NiFi как в разных бизнес-приложениях, например, в качестве ETL-инструмента для BI-систем, так и для маршрутизации непрерывных потоков данных, что имеет место во многих Big Data и IoT/IIoT-проектах.
- Сервис версионирования Registry, позволяющий управлять изменениями. Этот реестр реализован как дополнительное, интегрированное с NiFi, приложение, которое обеспечивает централизацию для хранения и управления общими ресурсами через один или несколько экземпляров рассматриваемой платформы маршрутизации данных и ее легковесной версии MiNiFi. Это позволяет хранить, извлекать и обновлять конфигурацию информационных потоков, а также определять пользователей, группы и политики безопасности [5]. Впрочем, подробнее о кибербезопасности в NiFi мы напишем дальше.
- Обеспечение информационной безопасности — поддержка шифрования с помощью SSL, SSH, HTTPS, что обеспечивает защиту данных [6]. Также реализуется гибкое управление правами пользователей, в т.ч. на доступ к веб-интерфейсу, с помощью одного из нескольких механизмов аутентификации – сертификатов, задания имени пользователя и пароля через LDAP и Kerberos, Apache Knox, а также OpenID Connect. Для авторизации пользователей используются специальные провайдеры – FileUserGroupProvider и LdapUserGroupProvider.
- Активное развитие и поддержка сообщества – фреймворк является проектом фонда свободного программного обеспечения Apache Software Foundation, а также входит в дистрибутив Hortonworks Data Flow, который сейчас является продуктом компании Cloudera – вендора дистрибутива Apache Hadoop CDH и множества других коммерческих Big Data решений.
Таким образом, можно сделать вывод, что популярность Apache NiFi обусловлена широкими функциональными возможностями применения этой платформы маршрутизации данных в комплексных Big Data системах и IoT/IIoT-проектах. О недостатках этого инструмента мы поговорим в следующей статье.
Освойте тонкости реальной работы с распределенной платформой маршрутизации и быстрой загрузки данных на нашем практическом курсе Кластер Apache NiFi в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов (менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data) в Москве.
Источники
- https://habr.com/ru/post/465299/
- https://habr.com/ru/company/rostelecom/blog/432166/
- https://bryanbende.com/development/2017/06/20/apache-nifi-records-and-schema-registries
- https://nifi.apache.org/docs/nifi-docs/rest-api/index.html
- https://nifi.apache.org/registry.html
- https://nifi.apache.org/index.html