Распределение данных, прочитанных из GetMongo в кластере nifi - PullRequest
0 голосов
/ 07 ноября 2018

У меня кластерная настройка nifi, и мы запускаем процессор GetMongo с включенным основным режимом, чтобы дублированные данные не выбирались. Кажется, это работает нормально. Однако, получив эти данные, я хочу, чтобы следующие процессы в цепочке выполнялись в кластере, как при параллельной обработке этих данных, которые были получены. Почему-то этого не происходит. Поэтому мой вопрос ниже, если предположить, что GetMongo получил 30000 записей, и они находятся в очереди:

1) Как проверить, выполняет ли процессор свой процесс на одном узле или на всех узлах. Конфигурация была установлена ​​для всех узлов, но когда процессор работает, я вижу, что он отображает 1 в верхнем правом углу.

2) Если один процессор настроен для работы только на основном узле, все остальные процессоры в потоке также работают в основном режиме?

Пример:

enter image description here

На скриншоте выше мой getmongo работает на основном узле, как мне убедиться, что процессор исполняемых скриптов работает параллельно на всех 3 узлах nifi. На данный момент, если я проверяю историю состояния просмотра в процессе исполняемого сценария, я вижу данные, проходящие только через основной узел.

1 Ответ

0 голосов
/ 07 ноября 2018

Да, это правильно. Если вы помечаете исходный процессор для запуска только Primary Node, все последующие шаги будут выполняться только на этом узле, поскольку данные находятся только на этом узле (первичном узле), даже если у вас NiFi в кластерном режиме. Чтобы заставить его работать так, как вы хотите, вы можете использовать любой из следующих двух подходов:

Подход № 1: Комбинация RPG и Site-to-Site

Здесь ваш поток будет выглядеть так:

  • Создание входного порта в корневой группе (самый верхний уровень холста NiFi)
  • Заставить GetMongo работать только на основном узле.
  • Соедините отношение success процессора с группой удаленных процессоров (RPG). Эту RPG можно настроить с помощью самой информации о кластере и настроить ее для подключения к порту, который вы добавили на шаге 1.
  • Из входного порта подключите его к логике обработки.

enter image description here

enter image description here

Полезные ссылки:

Это громоздко и сделает ваш поток очень сложным, но это так, как это должно быть сделано, до NiFi 1.8. С NiFi 1.8 вы можете использовать следующий подход.

Подход № 2. Соединения с балансировкой нагрузки (Apache NiFi 1.8 +)

Apache NiFi выпустил новую версию - 1.8, неделю назад. В этом выпуске появилась новая функция (долгое время ожидаемая и очень желанная). Это называется соединениями с балансировкой нагрузки.

При таком подходе вы можете просто игнорировать комбинацию RPG / Site-to-Site и делать следующее:

  • Соедините выход вашего исходного процессора, в данном случае GetMongo с последующими процессорами.
  • Щелкните правой кнопкой мыши отношение success исходного процессора.
  • Нажмите configure
  • Перейти на Settings вкладку
  • Установите Load Balance Strategy на нужный, предпочтительно Roudd robin в вашем случае.

enter image description here

enter image description here

Полезные ссылки:

...