Легковесный Apache NiFi для IoT: Docker-образ MiNiFi на Raspberry PI4 ARM64

Автор Категория , ,
Легковесный Apache NiFi для IoT: Docker-образ MiNiFi на Raspberry PI4 ARM64

Сегодня поговорим про совместное использование Apache NiFi с его легковесным агентом – MiNiFi. Преимущества для ETL-процессов в IoT-системах и не только, ограничения практического применения, а также пример контейнеризации и выполнения Docker-образа на Raspberry PI4 ARM64.

Internet of Things и Apache NiFi на периферии

Интернет вещей (Internet of Things, IoT) приводит к фундаментальному сдвигу в требованиях к ETL-инструментам и процессам из-за объема, разнообразия и сложности данных, которые приходят от множества устройств. Для их приема и конвейеризованной обработки платформы интернета вещей активно используют специализированные инструменты стека Big Data, например, Apache NiFi. NiFi обеспечивает простой сбор, потоковую обработку, аналитику и действия с любыми данными в любом месте (периферия, облако, ЦОД) благодаря встроенной сквозной безопасности и мониторингу происхождения. Для периферии есть легковесный подпроект Apache NiFi – MiNiFi, который представляет собой облегченный агент исходной среды.

MiNiFi можно интегрировать с NiFi, чтобы создать масштабируемое комплексное решение для управления потоками, которое обеспечит безопасную и полную цепочку обработки информации. А с учетом ограничений IoT-периферии, ключевыми преимуществами MiNiFi являются следующие:

  • небольшой размер и низкое потребление ресурсов;
  • центральное управление агентами;
  • генерация происхождения данных (полная цепочка хранения информации);
  • легкая интеграция с NiFi для последующего управления потоком данных.

Но несмотря на то, что MiNiFi был изначально создан для периферии, до сих пор возникают некоторые ограничения его практического применения на отдельных устройствах. В частности, в системах на базе модернизированной 64-битной архитектуры ЦП ARM64 из-за отсутствия готового Docker-образа. Как решить эту проблему, мы рассмотрим далее на примере одноплатного миникомпьютера Raspberry PI4.

Как создать Docker-образ MiNiFi на Raspberry PI4 ARM64

Напомним, Raspberry Pi – это одноплатный мини-компьютер размером с банковскую карту, изначально разработанный для обучения. Однако, сегодня этот одноплатный компьютер применяется не только в образовательных целях, но и является частью промышленных изделий и IoT-устройств. Raspberry Pi работает в основном на операционных системах на базе Linux. Учитывая вышеуказанные возможности Apache MiNiFi для систем интернета вещей на периферии, целесообразно использовать его преимущества в работе с Raspberry Pi.

Из-за отсутствия готового Docker-образа Apache MiNiFi для модернизированной 64-битной архитектуры ЦП ARM64, можно создать собственный, чтобы автоматизировать ETL-конвейеры на Raspberry PI4. В качестве примера используется Raspberry PI4 с 4 ГБ ОЗУ и чипом MicroSD на 16 ГБ. Перед тем, как приступить к созданию этого образа, следует настроить сам микрокомпьютер, выполнив следующие шаги:

  • на локальном компьютере разработчика поместить карту MicroSD в USB-устройство чтения карт памяти этого формата, чтобы прошить ее с помощью образа ubuntu-20.04-preinstalled-server-arm64+raspi.img.xz с https://ubuntu.com/download/raspberry-pi, загрузив образ 64-битной операционной системы с официального сайта Ubuntu, например, https://ubuntu.com/download/raspberry-pi/thank-you?version=20.04&architecture=arm64+raspi;
  • вставить MicroSD с установленным образом операционной системы в соответствующий слот Raspberry PI4;
  • включить микрокомпьютер и подключить его к кабелю локальной сети или к Wi-Fi, чтобы скопировать контейнер из Git-репозитория https://github.com/apache/nifi-MiNiFi

Само создание Docker-образа NiFi для ARM64 выполняется с помощью команды

# user @ puter in ~/Development/code/apache/nifi-MiNiFi/MiNiFi-docker/dockerhub_ARM64

Примечательно, что версия NiFi по умолчанию, указанная в Docker-файле, обычно является версией, которая не выпущена, если она работает из исходного кода. Чтобы создать образ для предыдущего релиза, можно переопределить аргумент сборки NIFI_VERSION с помощью команды docker build –build-arg=MINIFI_VERSION={Desired MiNiFi Version} -t apache/nifi-MiNiFi-arm64:latest

Запуск контейнера легковесного агента NiFi на ARM64 начинается с передачи конфигурации в контейнер. Основным средством настройки экземпляра MiNiFi является файл config.yml или bootstrap.conf за счет использования томов или наложения основного образа.

Тома конфигурации для предоставления экземпляру контейнера файлов config.yml или bootstrap.conf читают их на хосте и отображают для использования экземпляром MiNiFi. Это пригодится в сценариях, когда один образ используется для различных конфигураций.

docker run -d \

-v ~/MiNiFi-conf/config.yml:/opt/MiNiFi/MiNiFi-0.5.0/conf/config.yml \

-v ~/MiNiFi-conf/bootstrap.conf:/opt/MiNiFi/MiNiFi-0.5.0/conf/bootstrap.conf \

apache/nifi-MiNiFi-arm64:latest

В качестве альтернативы можно создать собственный образ на основе опубликованного Docker-файла, чтобы позволить пользователям постоянно конфигурировать его. Это реализуется через создание пользовательского Docker-образа с файлами конфигурации config.yml или bootstrap.conf, включенными в новый образ. Такой вариант подходит для приложений, где конфигурация четко определена и относительно статична, т.е. меняется не часто.

Узнайте все подробности администрирования и эксплуатации Apache NiFi для эффективной аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://umair-iftikhar.medium.com/etl-for-iot-MiNiFi-18391f681835
  2. https://kaustavmukherjee-66179.medium.com/containerize-execute-apache-nifi-MiNiFi-docker-on-raspberrypi4-arm64-in-less-than-15-minutes-fa5cd8e84464
  3. https://github.com/apache/nifi-MiNiFi/tree/master/MiNiFi-docker/dockerhub_ARM64