Автоматизация доставки flow Π² Apache NiFi

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!

Автоматизация доставки flow Π² Apache NiFi

Π—Π°Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ β€” Π΅ΡΡ‚ΡŒ flow, прСдставлСнный Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π΄ΠΎ Ρ€Π°ΡΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ Π½Π° N сСрвСров с Apache NiFi. Flow тСстовый β€” ΠΈΠ΄Π΅Ρ‚ гСнСрация Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ инстанс NiFi. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° NiFi Site to Site.

NiFi Site to Site (S2S) β€” бСзопасный, Π»Π΅Π³ΠΊΠΎ настраиваСмый способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ инстансами NiFi. Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ S2S смотритС Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ инстанс NiFi, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ S2S смотритС Ρ‚ΡƒΡ‚.

Π’ Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ S2S β€” ΠΎΠ΄ΠΈΠ½ инстанс называСтся клиСнтским, Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрвСрным. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ отправляСт Π΄Π°Π½Π½Ρ‹Π΅, сСрвСрный β€” ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚. Π”Π²Π° способа Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ:

  1. Push. Π‘ клиСнтского инстанса Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Remote Process Group (RPG). На сСрвСрном инстансС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Input Port
  2. Pull. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RPG, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ отправляСт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Output port.


Flow для раскатки Ρ…Ρ€Π°Π½ΠΈΠΌ Π² Apache Registry.

Apache NiFi Registry β€” ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Apache NiFi, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ инструмСнт для хранСния flow ΠΈ управлСния вСрсиями. Π­Ρ‚Π°ΠΊΠΈΠΉ GIT. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± установкС, настройкС ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с registry ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Flow для хранСния ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ΡΡ Π² process group ΠΈ Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ хранится Π² registry. Π”Π°Π»Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΊ этому Π΅Ρ‰Π΅ вСрнСмся.

На стартС, ΠΊΠΎΠ³Π΄Π° N ΠΌΠ°Π»ΠΎΠ΅ число, flow доставляСтся ΠΈ актуализируСтся Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ врСмя.

Но с ростом N, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ становится большС:

  1. Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ flow ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Надо Π·Π°ΠΉΡ‚ΠΈ Π½Π° всС сСрвСра
  2. Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ошибки Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ шаблонов. Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ, Π° Ρ‚ΡƒΡ‚ Π·Π°Π±Ρ‹Π»ΠΈ
  3. ошибки Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ большого количСства ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

Всё это ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ‚ нас ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс. Π― ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ способы Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MiNiFi вмСсто NiFi
  2. NiFi CLI
  3. NiPyAPI

ИспользованиС MiNiFi

Apache MiNiFy β€” ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Apache NiFi. MiNiFy β€” ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Π°Π³Π΅Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ ΠΆΠ΅ самыС процСссоры, Ρ‡Ρ‚ΠΎ ΠΈ NiFi, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ flow, Ρ‡Ρ‚ΠΎ ΠΈ Π² NiFi. Π›Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡ‚ΡŒ Π°Π³Π΅Π½Ρ‚Π° достигаСтся Π² Ρ‚ΠΎΠΌ числС Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ MiNiFy Π½Π΅Ρ‚ графичСского интСрфСйса для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ flow. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ графичСского интСрфСйса Ρƒ MiNiFy ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ доставки flow Π² minifi. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, MiNiFy Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² IOT, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ процСсс доставки flow Π΄ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… экзСмпляров minifi Π½Π°Π΄ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Знакомая Π·Π°Π΄Π°Ρ‡Π°, ΠΏΡ€Π°Π²Π΄Π°?

Π Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” MiNiFi C2 Server. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ раскатки ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. Как ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ β€” описано Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π° Π₯Π°Π±Ρ€Π΅ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ достаточно для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ. MiNiFi Π² связкС с C2 server автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ обновляСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Ρƒ сСбя. ЕдинствСнный нСдостаток Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° β€” приходится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π½Π° C2 Server, простого ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² registry Π½Π΅ достаточно.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚, описанный Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΈ Π½Π΅ слоТный для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π½Π°Π΄ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. Π’ minifi Π΅ΡΡ‚ΡŒ Π½Π΅ всС процСссоры ΠΈΠ· nifi
  2. ВСрсии процСссоров Π² Minifi ΠΎΡ‚ΡΡ‚Π°ΡŽΡ‚ ΠΎΡ‚ вСрсий процСссоров Π² NiFi.

На ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ послСдняя вСрсия NiFi β€” 1.9.2. ВСрсия процСссоров послСднСй вСрсии MiNiFi β€” 1.7.0. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² MiNiFi, Π½ΠΎ ΠΈΠ·-Π·Π° расхоТдСния вСрсий ΠΌΠ΅ΠΆΠ΄Ρƒ процСссорами NiFi ΠΈ MiNiFi это ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

NiFi CLI

Будя ΠΏΠΎ описанию инструмСнта Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС, это инструмСнт для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ взаимодСйствия NiFI ΠΈ NiFi Registry Π² области доставки flow ΠΈΠ»ΠΈ управлСния процСссами. Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ этот инструмСнт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚ΡΡŽΠ΄Π°.

ЗапускаСм ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ

./bin/cli.sh
           _     ___  _
 Apache   (_)  .' ..](_)   ,
 _ .--.   __  _| |_  __    )
[ `.-. | [  |'-| |-'[  |  /  
|  | | |  | |  | |   | | '    '
[___||__][___][___] [___]',  ,'
                           `'
          CLI v1.9.2

Type 'help' to see a list of available commands, use tab to auto-complete.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΌ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ flow ΠΈΠ· registry, Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ (bucket identifier) ΠΈ самого flow (flow identifier). Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· cli, Π»ΠΈΠ±ΠΎ Π² Π²Π΅Π±-интСрфСйсС NiFi registry. Π’ Π²Π΅Π± интСрфСйсС выглядит Ρ‚Π°ΠΊ:

Автоматизация доставки flow Π² Apache NiFi

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CLI дСлаСтся Ρ‚Π°ΠΊ:

#> registry list-buckets -u http://nifi-registry:18080

#   Name             Id                                     Description
-   --------------   ------------------------------------   -----------
1   test_bucket   709d387a-9ce9-4535-8546-3621efe38e96   (empty)

#> registry list-flows -b 709d387a-9ce9-4535-8546-3621efe38e96 -u http://nifi-registry:18080

#   Name           Id                                     Description
-   ------------   ------------------------------------   -----------
1   test_flow   d27af00a-5b47-4910-89cd-9c664cd91e85

ЗапускаСм ΠΈΠΌΠΏΠΎΡ€Ρ‚ process group ΠΈΠ· registry:

#> nifi pg-import -b 709d387a-9ce9-4535-8546-3621efe38e96 -f d27af00a-5b47-4910-89cd-9c664cd91e85 -fv 1 -u http://nifi:8080

7f522a13-016e-1000-e504-d5b15587f2f3

Π’Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” Π² качСствС хоста, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π°ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅ΠΌ process group ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ любой инстанс nifi.

Process group Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ со стопнутыми процСссорами, ΠΈΡ… Π½Π°Π΄ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, процСссоры стартанули. Однако, Π½Π°ΠΌ ΠΏΠΎ условиям Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ инстансы NiFi отправляли Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инстансы. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСр Π²Ρ‹Π±Ρ€Π°Π»ΠΈ способ Push. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π΄ΠΎ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΌ Remote Process Group (RPG), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² наш flow Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… (Enable transmitting).

Автоматизация доставки flow Π² Apache NiFi

Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² CLI ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… источниках я Π½Π΅ нашСл способа Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅, поТалуйста, Π² коммСнтариях.

Π Π°Π· ΡƒΠΆ Ρƒ нас bash ΠΈ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΈΠ΄Ρ‚ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° β€” Π½Π°ΠΉΠ΄Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄! МоТно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ NiFi API для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, ID Π±Π΅Ρ€Π΅ΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹ΡˆΠ΅ (Π² нашСм случаС это 7f522a13-016e-1000-e504-d5b15587f2f3). ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² NiFi API Ρ‚ΡƒΡ‚.

Автоматизация доставки flow Π² Apache NiFi
Π’ body Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ JSON, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

{
    "revision": {
	    "clientId": "value",
	    "version": 0,
	    "lastModifier": "value"
	},
    "state": "value",
    "disconnectedNodeAcknowledged": true
}

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ β€œΠ·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎβ€:
state β€” статус ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Доступно TRANSMITTING для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, STOPPED для Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
version β€” вСрсия процСссора

version ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ 0 ΠΏΡ€ΠΈ создании, Π½ΠΎ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄

Автоматизация доставки flow Π² Apache NiFi

Для Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ bash скриптов Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ, Π½ΠΎ ΠΌΠ½Π΅ тяТСловато β€” bash скрипты Π½Π΅ самоС ΠΌΠΎΠ΅ любимоС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ способ поинтСрСснСС ΠΈ ΠΏΠΎΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π½Π° ΠΌΠΎΠΉ взгляд.

NiPyAPI

NiPyAPI β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для языка Python для взаимодСйствия с инстансами NiFi. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ содСрТит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Quick start описан Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° github.

Наш скрипт для раскатки ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΠ° Π½Π° языкС Python. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΊΠΎΠ΄ΠΈΠ½Π³Ρƒ.
НастраиваСм ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹. Нам понадобятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

nipyapi.config.nifi_config.host = 'http://nifi:8080/nifi-api' #ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ nifi-api инстанса, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ process group
nipyapi.config.registry_config.host = 'http://nifi-registry:18080/nifi-registry-api' #ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ nifi-registry-api registry
nipyapi.config.registry_name = 'MyBeutifulRegistry' #Π½Π°Π·Π²Π°Π½ΠΈΠ΅ registry, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² инстансС nifi
nipyapi.config.bucket_name = 'BucketName' #Π½Π°Π·Π²Π°Π½ΠΈΠ΅ bucket, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ подтягиваСм flow
nipyapi.config.flow_name = 'FlowName' #Π½Π°Π·Π²Π°Π½ΠΈΠ΅ flow, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ подтягиваСм

Π”Π°Π»ΡŒΡˆΠ΅ Π±ΡƒΠ΄Ρƒ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ названия ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ описаны Ρ‚ΡƒΡ‚.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ registry ΠΊ инстансу nifi с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

nipyapi.versioning.create_registry_client

На этом шагС ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ registry ΡƒΠΆΠ΅ ΠΊ инстансу Π΄ΠΎΠ±Π°Π²Π»Π΅Π½, для этого ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

nipyapi.versioning.list_registry_clients

Находим bucket для дальнСйшСго поиска flow Π² ΠΊΠΎΡ€Π·ΠΈΠ½Π΅

nipyapi.versioning.get_registry_bucket

По Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ bucket ΠΈΡ‰Π΅ΠΌ flow

nipyapi.versioning.get_flow_in_bucket

Π”Π°Π»ΡŒΡˆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π»ΠΈ ΡƒΠΆΠ΅ этот process group. Process group размСщаСтся ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ ситуация, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° налоТится Π²Ρ‚ΠΎΡ€ΠΎΠΉ. Π― провСрял, Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ πŸ™‚ Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ process group ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄

nipyapi.canvas.list_all_process_groups

ΠΈ дальшС ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ процСсс обновлСния шаблона, скаТу лишь, Ρ‡Ρ‚ΠΎ Ссли Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии шаблона процСссоры Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ сообщСний Π² очСрСдях Π½Π΅Ρ‚. А Π²ΠΎΡ‚ Ссли процСссоры ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ (nifi Π½Π΅ Π΄Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ процСссор, Ссли ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ скопилась ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСний). Если Π²Π°ΠΌ интСрСсно ΠΊΠ°ΠΊ я Ρ€Π΅ΡˆΠΈΠ» эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ β€” Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠ½Π΅, поТалуйста, обсудим этот ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡˆΠ°Π³Ρƒ добавлСния process group.

ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ скрипта я столкнулся с ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ Π½Π΅ всСгда подтягиваСтся послСдняя вСрсия flow, поэтому Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ сначала эту Π²Π΅Ρ€ΡΠΈΡŽ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ:

nipyapi.versioning.get_latest_flow_ver

Π”Π΅ΠΏΠ»ΠΎΠΈΠΌ process group:

nipyapi.versioning.deploy_flow_version

ЗапускаСм процСссоры:

nipyapi.canvas.schedule_process_group

Π’ Π±Π»ΠΎΠΊΠ΅ ΠΏΡ€ΠΎ CLI Π±Ρ‹Π»ΠΎ написано, Ρ‡Ρ‚ΠΎ Π² remote process group автоматичСски Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…? ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ скрипта я столкнулся с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Ρ‚ΠΎΠΆΠ΅. На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API Ρƒ мСня Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΈ я Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NiPyAPI ΠΈ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ совСта/ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠ½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», ΠΌΡ‹ обсудили ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ ΠΎΠ½ написал, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½Π°Π΄ΠΎ врСмя β€œΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΅-что”. И Π²ΠΎΡ‚, спустя ΠΏΠ°Ρ€Ρƒ Π΄Π½Π΅ΠΉ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ письмо, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ написана функция Π½Π° Python, Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π°Ρ мою ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ запуска!!! На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ вСрсия NiPyAPI Π±Ρ‹Π»Π° 0.13.3 ΠΈ Π² Π½Π΅ΠΉ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ. А Π²ΠΎΡ‚ Π² Π²Π΅Ρ€ΡΠΈΡŽ 0.14.0, которая Π²Ρ‹ΡˆΠ»Π° совсСм Π½Π΅Π΄Π°Π²Π½ΠΎ, эта функция ΡƒΠΆΠ΅ вошла Π² составС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ВстрСчайтС,

nipyapi.canvas.set_remote_process_group_transmission

Π˜Ρ‚Π°ΠΊ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NiPyAPI ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ registry, Π½Π°ΠΊΠ°Ρ‚ΠΈΠ»ΠΈ flow ΠΈ Π΄Π°ΠΆΠ΅ запустили процСссоры ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ‡Π΅ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ всСвозмоТныС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΠΎΡ‚ это всё. Но это ΡƒΠΆΠ΅ совсСм другая история.

Из рассмотрСнных мною Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ послСдний ΠΌΠ½Π΅ показался самым работоспособным. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это всС ΠΆΠ΅ ΠΊΠΎΠ΄ Π½Π° python, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСми прСимущСствами языка программирования. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ NiPyAPI Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ развиваСтся ΠΈ Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, NiPyAPI всС ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт для взаимодСйствия с NiFi Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ слоТных Π·Π°Π΄Π°Ρ‡. НапримСр, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ пустыС Π»ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний сСйчас Π² flow ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ process group.

На этом всС. Π― описал 3 ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ доставки flow Π² NiFi, ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π» Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ доставки. Если вас Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ мСня интСрСсуСт эта Ρ‚Π΅ΠΌΠ° β€” ΠΏΠΈΡˆΠΈΡ‚Π΅!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com