Как построить IIoT-систему на базе Apache Nifi: разбираем прототип

Industrial Internet Of Things, Apache Nifi, MiniFi, MQTT, Big Data, Большие данные, предиктивная аналитика, Цифровая трансформация, цифровизация, Internet of Things, IoT, IIoT, интернет вещей, архитектура

Мы уже рассказывали о многоуровневой системе промышленного интернета вещей и ее smart-компонентах, обеспечивающих первичную обработку и оперативную передачу технологических данных с конечных устройств в интеллектуальные сервисы IoT-платформы. Сегодня рассмотрим прототип такой IIoT-системы, построенной с использованием Big Data средств ETL-обработки информационных потоков – Apache NiFi и MiniFi, а также поговорим о брокере обмена сообщениями Mosquitto и протоколе MQTT.

Архитектура IIoT-прототипа на основе Big Data средств

Прежде всего отметим, что в данной статье описан достаточно простой пример IIoT-системы с целью показать возможности инструментария Big Data для сбора информации с конечных устройств и маршрутизации данных в облачную IoT-платформу для последующей обработки [1].

Итак, на уровне периферии датчики собирают информацию о параметрах технологического процесса и отправляют ее на шлюз (gateway) через различные проводные и беспроводные протоколы (Serial, RS-485, MODBUS, CAN bus, OPC UA, BLE, WiFi и т.д.). Шлюз выполняет операции сбора и первичной обработки информации с последующей отправкой данных на облачный сервер. В качестве шлюза может выступать, например, одноплатный мини-компьютер Raspberry Pi, управляющий брокером сообщений Mosquitto и агентом MiNiFi. Как правило, IoT-решения на базе Raspberry Pi, в основном, относятся к бытовому интернету вещей. В промышленных масштабах используются более сложные устройства с повышенной надежностью. Однако, настоящая статья фокусируется в большей степени на программных особенностях реализации, поэтому вопрос о выборе hardware-основы для шлюза оставим за рамками этого материала. Подробнее об установке Mosquitto на Raspberry Pi можно почитать здесь.

Mosquitto – это легковесный брокер обмена сообщениями с открытым исходным кодом, обеспечивающий предоставление данных от датчиков через протокол MQTT (Message Queue Telemetry Transport). На все топики брокера Mosquitto подписывается легковесный агент Apache MiNiFi, который будет пересылать каждое новое сообщение в NiFi на региональном уровне. Помимо взаимодействия с IIoT-датчиками, Apache MiNiFi также может подключаться к SCADA- системе и другим источникам операционных технологических данных (OT) [2].

MiNiFi – это компактная вариация Apache NiFi – платформы маршрутизации, преобразования и доставки данных из множества сторонних систем [1]. По сути Apache NiFi – это распределенный ETL-инструмент с открытым исходным кодом, гарантированной доставкой, умением хранить данные (до выгрузки их другими, более медленными системами), балансировкой нагрузки и GUI для проектирования потоков данных [3].

В рассматриваемом примере IIoT-системы NiFi играет роль центрального звена, обеспечивающего сбор данных с каждого источника и маршрутизацию их в разные приемники (HDFS, HBase, Kafka, S3 и другие системы, базы данных и приложения). Конфигурирование разных агентов MiNiFi реализуется с помощью сервера C2 (Commande&Control), который, как и MiNiFi, является подпроектом Apache NiFi. Сервер C2 управляет версионными классами приложений, которые являются конфигурациями потоков MiNiFi, предоставляя REST-подобный API-интерфейс, к которому периодически подключаются агенты для обновления своих конфигурации [2].

Наконец, когда сервер Apache NiFi передаст технологическую информацию в облако или центр обработки данных, где развернута интеллектуальная IoT-платформа, специализированные Big Data инструменты решают задачи предиктивной аналитики, мониторинга в режиме реального времени, загрузки информации в корпоративные базы, хранилища и озера данных (Data Lake) и т.д. [1].

Apache MiNiFi интегрируется с NiFi через протокол Site-to-Site (S2S), предполагающего непосредственный обмен данными между двумя точками. А возможность шлюза собирать технологические данные из разных источников в условиях нестабильного интернет-соединения реализуется с помощью протокола MQTT, о котором рассказано далее.

IoT-архитектура Apache NiFi
IoT-архитектура на базе Apache NiFi и MiNiFi

Что такое протокол MQTT и как он работает в Industrial Internet of Things

MQTT представляет собой асинхронный, легкий, компактный и открытый протокол обмена данными с удалённых локаций, в условиях ограниченной пропускной способности канала и нестабильной связи на линии передачи информации. Существует версия протокола для сенсорных сетей MQTT-SN (MQTT for Sensor Networks), ранее известная как MQTT-S, которая предназначена для встраиваемых беспроводных устройств без поддержки TCP/IP сетей, таких как Zigbee. MQTT работает на прикладном уровне модели OSI поверх семейства протоколов TCP/IP и по умолчанию использует 1883 порт, а при подключении через защищенное соединение SSL – 8883 [4].

протокол MQTT
Протокол MQTT работает поверх TCP/IP

Спецификация MQTT 3.1.1 была стандартизирована некоммерческой организацией по разработке и принятию промышленных стандартов электронной коммерции OASIS в 2014 году. Благодаря компактности, легковесности и универсальности MQTT очень часто используется в IoT-решениях и аппаратном обеспечении с ограниченными ресурсами: мобильных телефонах, микроконтроллерах и т.д. [5]. С точки зрения Industrial Internet of Things, протокол MQTT, полезен для работы с телеметрическими данными от различных датчиков, сенсоров и других smart-устройств, т.к. позволяет работать с любыми форматами передаваемых данных, которые не требуется заранее определять. Такая универсальность обеспечивается работой по модели подписки, когда клиент (client), который может быть издателем (publisher) или подписчиком (subscriber), обменивается сообщением с брокером (broker). Издатель отправляет данные на MQTT-брокер, указывая в сообщении определенную тему, топик (topic). Подписчики получают разные данные от множества издателей в зависимости от подписки на соответствующие топики. Роль брокера сообщения в рассматриваемом нами примере играет Mosquitto [4].

Конвейер IIoT-процессов
Конвейер IIoT-процессов с использованием Apache NiFi, Spark и других Big Data средств

Таким образом, с применением достаточно простых инструментов Big Data, можно быстро развернуть несложную систему интернета вещей для бытового использования, которую можно расширить на промышленные масштабы, подключив специализированные средства аналитической обработки данных, например, Apache Phoenix, Spark SQL, MLLib и т.д. [6]. Другие примеры практического использования Apache NiFi в промышленности читайте в нашей следующей статье.

Станьте профессионалом по Apache NiFi и другим технологиями Industrial Internet of Things на наших практических курсах для менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков больших данных в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

расписание компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Смотреть расписание занятий
регистрация на компьютерные курсы для руководителей, аналитиков, программистов, администраторов и пользователей Internet of Things, Big Data и Machine Learning Зарегистрироваться на курс

Источники

  1. https://www.freecodecamp.org/news/building-an-iiot-system-using-apache-nifi-mqtt-and-raspberry-pi-ce1d6ed565bc/
  2. https://habr.com/ru/company/itsumma/blog/415933/
  3. https://axmor.ru/blog/kak-primieniat-apache-nifi-v-bi-proiektakh/
  4. https://ipc2u.ru/articles/prostye-resheniya/chto-takoe-mqtt/
  5. https://ru.wikipedia.org/wiki/MQTT
  6. https://habr.com/ru/company/croc/blog/466933/