Big Data NiFi (5): распределенная установка NiFi
Big Data NiFi (5): распределенная установка NiFi

Распределенная установка NiFi

1. Зачем нужен NiFi-кластер?

Пользователи NiFi DataFlow Manager (DFM) могут обнаружить, что использования одного экземпляра NiFi на одном сервере недостаточно для обработки имеющегося у них объема данных. Таким образом, одно из решений — запустить один и тот же поток данных на нескольких серверах NiFi. Однако это создает проблемы управления, поскольку каждый раз, когда DFM хочет изменить или обновить поток данных, им приходится вносить эти изменения на каждом сервере, а затем отслеживать каждый сервер индивидуально. Кластеризуя серверы NiFi, вы можете добавить вычислительную мощность, а также единый интерфейс, через который можно изменять и контролировать поток данных. Кластеризация позволяет DFM вносить изменения только один раз, а затем реплицировать их на все узлы кластера. Через единый интерфейс DFM также может отслеживать состояние и состояние всех узлов.

В предыдущей статье мы представили роли в кластере NiFi. Координатор кластера отвечает за выполнение задач, управление узлами в кластере и предоставление данных для вновь добавленных узлов.

Кластер NiFi состоит из одного или нескольких узлов. Узлы обрабатывают данные о состоянии и состоянии координатору кластера посредством тактовых импульсов. По умолчанию узлы отправляют тактовые импульсы каждые 5 секунд, если координатор кластера выходит из строя в течение 5 секунд. , Когда от узла будет получено тактовое сообщение, узел будет отключен.

Каждый кластер имеет главный узел, и на главном узле может быть запущен «независимый процессор». Zookeeper используется для автоматического выбора главного узла. Пользователи могут просматривать главный узел в текущем кластере через интерфейс WebUI. Вышеупомянутый «независимый процессор», работающий на главном узле, относится к тому факту, что в кластере NiFi процессор, обрабатывающий поток данных, работает на каждом узле, и мы не хотим, чтобы один и тот же поток данных обрабатывался процессором на каждом узле. node., например: процессор GetSFTP извлекает данные из удаленного каталога. Если процессор GetSFTP работает на каждом узле кластера и одновременно извлекает данные из одного и того же удаленного каталога, данные будут обрабатываться повторно, поэтому мы можем обрабатывать их. GetSFTP Для процессора установлен режим «автономный процессор», что означает, что процессор будет работать только на главном узле. При соответствующей конфигурации потока данных главный узел может получать данные, а затем выполнять балансировку нагрузки среди других узлов в кластере.

Распределенная установка NiFi может использовать встроенный Zookeeper или вы можете использовать кластер Zookeeper, установленный самостоятельно. После тестирования с использованием внешнего Zokeeper для установки кластера NiFi будет установлена ​​версия Zookeeper, соответствующая NiFi1.13.0. не менее 3,5 и выше. Поскольку разные версии NiFi используют разные версии Zookeeper, для завершения построения кластера NiFi рекомендуется использовать встроенный Zookeeper.

2. Используйте встроенный Zookeeper для создания кластера NiFi.

Используйте встроенный Zookeeper для создания кластера NiFi. Для настройки узлов Zookeeper также требуется нечетное количество узлов. Здесь для настройки встроенного Zookeeper используются также три узла. Этапы строительства следующие:

1. Разделите узлы, загрузите и распакуйте установочный пакет NiFi.

Для установки кластера NiFi можно использовать несколько узлов. Здесь для установки кластера NiFi выбраны три узла: node1, node2 и node3. JDK8 необходимо установить на каждом узле.

Язык кода:javascript
копировать
#Загрузить и распаковать установочный пакет
[root@node1 software]# tar -zxvf ./nifi-1.13.0-bin.tar.gz

#Отправляем установочный пакет на узлы node2 и node3
[root@node1 software]# scp -r ./nifi-1.13.0 node2:/software/
[root@node1 software]# scp -r ./nifi-1.13.0 node3:/software/

2. Настройте и используйте встроенный Zookeeper.

Отредактируйте файл $NIFI_HOME/conf/zookeeper.properties в каждом узле 1, узле 2 и узле 3 и добавьте следующий контент (будьте осторожны, удалите последнюю строку этого файла перед его добавлением), чтобы настроить Zookeeper:

Язык кода:javascript
копировать
#Настраиваем номер порта Zookeeper,Чтобы избежать конфликтов портов,Можно настроить2182
clientPort=2182
#Настраиваем IP-адреса для разных сервисов
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

Создайте новую папку $NIFI_HOME/state/zookeeper на каждом узле node1, node2 и node3. Создайте файл myid в этой папке и запишите 1, 2 и 3 соответственно.

Язык кода:javascript
копировать
#в узлы узле1, node2, node3 создают пути Zookeeper
cd /software/nifi-1.13.0
mkdir -p ./state/zookeeper

#в узле1 Создайте файл myid в $NIFI_HOME/state/zookeeper и напишите 1.
#в узле2 Создайте файл myid в $NIFI_HOME/state/zookeeper и напишите 2.
#в узле3 Создайте файл myid в $NIFI_HOME/state/zookeeper и напишите 3.

3. Отредактируйте файл $NIFI_HOME/conf/nifi.properties на каждом узле.

Ниже в качестве примера используется конфигурация node1:

Язык кода:javascript
копировать
#Укажите, использует ли NiFi встроенный Zookeeper, значение по умолчанию — false
nifi.state.management.embedded.zookeeper.start=true

#Настроить хост-узел Http, каждый узел имеет разную конфигурацию хоста
nifi.web.http.host=node1
#Настраиваем HTTP-порт, значение по умолчанию — 8080.
nifi.web.http.port=8989

#Установите значение true, если экземпляр является узлом в кластере. Значение по умолчанию — ложь
nifi.cluster.is.node=true
#Полный адрес узла. По умолчанию пусто, конфигурация каждого узла различна.
nifi.cluster.node.address=node1
#Порт протокола узла. По умолчанию пусто
nifi.cluster.node.protocol.port=28001
#Заранее укажите количество узлов, необходимое в кластере для выбора потоков. Это позволяет узлам кластера избежать длительного ожидания перед началом обработки.
nifi.cluster.flow.election.max.candidates=1

#Подключаем встроенный адрес подключения ZooKeeper
nifi.zookeeper.connect.string=node1:2182,node2:2182,node3:2182

Примечание. При настройке вышеуказанного файла nifi.properties на каждом узле следующие элементы конфигурации различны для каждого узла:

Язык кода:javascript
копировать
Узлу #node2/3 необходимо настроить файл nifi.properties и изменить соответствующий IP-адрес.
nifi.web.http.host=node2/node3
nifi.cluster.node.address=node2/node3

4. Настройте файл $NIFI_HOME/conf/state-management.xml для каждого узла node1, node2 и node3.

Язык кода:javascript
копировать
<cluster-provider>
    <id>zk-provider</id>
    <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class>
    <property name="Connect String">node1:2182,node2:2182,node3:2182</property>
    <property name="Root Node">/nifi</property>
    <property name="Session Timeout">10 seconds</property>
    <property name="Access Control">Open</property>
</cluster-provider>

5. Зарегистрируйте системные службы nifi на узлах node1, node2 и node3 соответственно и запустите nifi соответственно.

Язык кода:javascript
копировать
#в Узлы узле1, node2 и node3 регистрируют службу nifi соответственно.
cd /software/nifi-1.13.0/bin
./nifi.sh install
Service nifi installed

#в узле1、node2、узлы node3 запускают кластер отдельно
запуск службы нифи

6. Доступ к веб-интерфейсу

После запуска вам нужно подождать некоторое время, чтобы получить доступ к WebUI. через узел1,node2,Любой узел из трех узлов node3 может получить доступ к кластеру NiFi.,Войдите в браузерhttp://node1:8989/nifi/ Получите доступ к кластеру NiFi. Просмотрите главный узел кластера NiFi:

3. Используйте внешний Zookeeper для создания кластера NiFi.

Используйте внешний Zookeeper для создания кластера NiFi. Для NiFi 1.13.0 требуется Zookeeper версии 3.5 или выше. Этапы строительства следующие:

1. Разделите узлы и подготовьте базовую среду.

Для установки кластера NiFi можно использовать несколько узлов. Здесь для установки кластера NiFi выбраны три узла: node1, node2 и node3. JDK8 необходимо установить на каждом узле.

2. Загрузите и распакуйте установочный пакет NiFi на узле 1 и отредактируйте файл $NIFI_HOME/conf/nifi.properties.

Язык кода:javascript
копировать
#Настраиваем хост-узел HTTP
nifi.web.http.host=192.168.179.4

#Настраиваем HTTP-порт, значение по умолчанию — 8080.
nifi.web.http.port=8989

#Установите значение true, если экземпляр является узлом в кластере. Значение по умолчанию — ложь
nifi.cluster.is.node=true
#Полный адрес узла. По умолчанию пусто
nifi.cluster.node.address=192.168.179.4
#Порт протокола узла. По умолчанию пусто
nifi.cluster.node.protocol.port=28001
#Заранее укажите количество узлов, необходимое в кластере для выбора потоков. Это позволяет узлам кластера избежать длительного ожидания перед началом обработки.
nifi.cluster.flow.election.max.candidates=1

#Подключаемся к внешнему адресу подключения ZooKeeper
nifi.zookeeper.connect.string=node3:2181,node4:2181,node5:2181

3. Настройте $NIFI_HOME/conf/state-management.xml на узле node1, чтобы настроить внешний кластер Zookeeper.

Язык кода:javascript
копировать
<cluster-provider>
    <id>zk-provider</id>
    <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class>
    <property name="Connect String">node3:2181,node4:2181,node5:2181</property>
    <property name="Root Node">/nifi</property>
    <property name="Session Timeout">10 seconds</property>
    <property name="Access Control">Open</property>
</cluster-provider>

4. Отправьте NiFi, настроенный на узле 1, на узел 2 и узел 3 и настройте его на узле 2/3.

Язык кода:javascript
копировать
[root@node1 software]# scp -r ./nifi-1.13.0 node2:/software/
[root@node1 software]# scp -r ./nifi-1.13.0 node3:/software/

Узлу #node2/3 необходимо настроить файл nifi.properties и изменить соответствующий IP-адрес.
nifi.web.http.host=192.168.179.5/6
nifi.cluster.node.address=192.168.179.5/6

5. Запустите Zookeeper.

6. Зарегистрируйте системные службы nifi на узлах node1, node2 и node3 соответственно и запустите nifi соответственно.

Язык кода:javascript
копировать
#в Узлы узле1, node2 и node3 регистрируют службу nifi соответственно.
cd /software/nifi-1.13.0/bin
./nifi.sh install
Service nifi installed

#в узле1、node2、узлы node3 запускают кластер отдельно
запуск службы нифи

7. Получите доступ к веб-интерфейсу и просмотрите главный узел кластера.

После запуска вам нужно подождать некоторое время, чтобы получить доступ к WebUI. через узел1,node2,Любой узел из трех узлов node3 может получить доступ к кластеру NiFi.,Войдите в браузерhttp://node1:8989/nifi/ Получите доступ к кластеру NiFi. Просмотрите главный узел кластера NiFi:

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose