Apache NiFi์˜ ํ๋ฆ„ ์ „๋‹ฌ ์ž๋™ํ™”

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ!

Apache NiFi์˜ ํ๋ฆ„ ์ „๋‹ฌ ์ž๋™ํ™”

์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ„ ๊ทธ๋ฆผ์— ํ‘œ์‹œ๋œ ํ๋ฆ„์ด ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ N๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๋กค์•„์›ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜ ๋‚˜์ดํŒŒ์ด. ํ๋ฆ„ ํ…Œ์ŠคํŠธ - ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์–ด ๋‹ค๋ฅธ NiFi ์ธ์Šคํ„ด์Šค๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ „์†ก์€ NiFi ์‚ฌ์ดํŠธ ๊ฐ„ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

NiFi ์‚ฌ์ดํŠธ ๊ฐ„(S2S)์€ NiFi ์ธ์Šคํ„ด์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์•ˆ์ „ํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ •์˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. S2S ์ž‘๋™ ๋ฐฉ์‹ ๋ณด๊ธฐ ์„ ์  ์„œ๋ฅ˜ ๋น„์น˜ S2S๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก NiFi ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

S2S๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๊ฒฝ์šฐ ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ๋ผ๊ณ  ํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค๋ฅผ ์„œ๋ฒ„๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ์ด๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์„ค์ •ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•:

  1. ํ‘ธ์‹œ. ๋ฐ์ดํ„ฐ๋Š” RPG(์›๊ฒฉ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธ์Šคํ„ด์Šค์—์„œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ์ž…๋ ฅ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹น๊ธฐ์„ธ์š”. ์„œ๋ฒ„๋Š” RPG๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์ถœ๋ ฅ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.


๋กค๋ง ํ๋ฆ„์€ Apache ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

Apache NiFi ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ํ๋ฆ„ ์ €์žฅ์†Œ ๋ฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” Apache NiFi์˜ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ผ์ข…์˜ GIT. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„ค์น˜, ๊ตฌ์„ฑ ๋ฐ ์ž‘์—…์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋‹ค์Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ. ์ €์žฅ์„ ์œ„ํ•œ ํ๋ฆ„์€ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์œผ๋กœ ๊ฒฐํ•ฉ๋˜์–ด ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋กœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์˜ ๋’ท๋ถ€๋ถ„์—์„œ ์ด์— ๋Œ€ํ•ด ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” N์ด ์ž‘์€ ์ˆซ์ž์ผ ๋•Œ ํ•ฉ๋ฆฌ์ ์ธ ์‹œ๊ฐ„์— ํ๋ฆ„์„ ์ˆ˜๋™์œผ๋กœ ์ „๋‹ฌํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ N์ด ์„ฑ์žฅํ•จ์— ๋”ฐ๋ผ ๋” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. ํ๋ฆ„์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋ชจ๋“  ์„œ๋ฒ„๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ํ…œํ”Œ๋ฆฟ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ์—…๋ฐ์ดํŠธํ–ˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.
  3. ์œ ์‚ฌํ•œ ์ž‘์—…์„ ๋งŽ์ด ์ˆ˜ํ–‰ํ•  ๋•Œ ์ธ๊ฐ„์˜ ์‹ค์ˆ˜

์ด ๋ชจ๋“  ๊ฒƒ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. NiFi ๋Œ€์‹  MiNiFi ์‚ฌ์šฉ
  2. ๋‹ˆํŒŒ์ด CLI
  3. NiPyAPI

MiNiFi ์‚ฌ์šฉ

ApacheMiNify Apache NiFi์˜ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. MiNiFy๋Š” NiFi์™€ ๋™์ผํ•œ ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํŒฉํŠธ ์—์ด์ „ํŠธ๋กœ, NiFi์™€ ๋™์ผํ•œ ํ๋ฆ„์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MiNiFy์—๋Š” ํ๋ฆ„ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—์ด์ „ํŠธ๊ฐ€ ๊ฐ€๋ฒผ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. MiNiFy์— ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ minifi์—์„œ ํ๋ฆ„ ์ „๋‹ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. MiNiFy๋Š” IOT์—์„œ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋งŽ๊ณ  ์ตœ์ข… ๋ฏธ๋‹ˆํŒŒ์ด ์ธ์Šคํ„ด์Šค์— ํ๋ฆ„์„ ์ „๋‹ฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋™ํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ต์ˆ™ํ•œ ์ž‘์—…์ด์ฃ ?

๋˜ ๋‹ค๋ฅธ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์ธ MiNiFi C2 Server๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ œํ’ˆ์€ ๋ฐฐํฌ ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์‹ฌ์ ์ด ๋˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ• - ์„ค๋ช…: ์ด ๊ธฐ์‚ฌ Habrรฉ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. MiNiFi๋Š” C2 ์„œ๋ฒ„์™€ ํ•จ๊ป˜ ๊ตฌ์„ฑ์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์œ ์ผํ•œ ๋‹จ์ ์€ C2 ์„œ๋ฒ„์—์„œ ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ปค๋ฐ‹๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„ ๊ธฐ์‚ฌ์— ์„ค๋ช…๋œ ์˜ต์…˜์€ ์ž‘๋™ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ ๋‹ค์Œ ์‚ฌํ•ญ์„ ์žŠ์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

  1. minifi์—๋Š” nifi์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. Minifi์˜ CPU ๋ฒ„์ „์€ NiFi์˜ CPU ๋ฒ„์ „๋ณด๋‹ค ๋’ค๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

์ด ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์—์„œ NiFi์˜ ์ตœ์‹  ๋ฒ„์ „์€ 1.9.2์ž…๋‹ˆ๋‹ค. ์ตœ์‹  MiNiFi ๋ฒ„์ „์˜ ํ”„๋กœ์„ธ์„œ ๋ฒ„์ „์€ 1.7.0์ž…๋‹ˆ๋‹ค. MiNiFi์— ํ”„๋กœ์„ธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ NiFi์™€ MiNiFi ํ”„๋กœ์„ธ์„œ ๊ฐ„์˜ ๋ฒ„์ „ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ˆํŒŒ์ด CLI

์— ์˜ํ•ด ์‹ฌ์‚ฌ ์„ค๋ช… ๊ณต์‹ ์›น์‚ฌ์ดํŠธ์— ์žˆ๋Š” ๋„๊ตฌ๋Š” ํ๋ฆ„ ์ „๋‹ฌ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ๋ถ„์•ผ์—์„œ NiFI์™€ NiFi ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ž๋™ํ™”ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋ ค๋ฉด ์ด ๋„๊ตฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”. ๋”ฐ๋ผ์„œ.

์œ ํ‹ธ๋ฆฌํ‹ฐ ์‹คํ–‰

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

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

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ํ•„์š”ํ•œ ํ๋ฆ„์„ ๋กœ๋“œํ•˜๋ ค๋ฉด ๋ฐ”์Šค์ผ“์˜ ์‹๋ณ„์ž(๋ฒ„ํ‚ท ์‹๋ณ„์ž)์™€ ํ๋ฆ„ ์ž์ฒด(ํ๋ฆ„ ์‹๋ณ„์ž)๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋Š” cli ๋˜๋Š” NiFi ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

#> 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

์ค‘์š”ํ•œ ์ ์€ ๋ชจ๋“  nifi ์ธ์Šคํ„ด์Šค๋ฅผ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ๋กค๋ฐฑํ•˜๋Š” ํ˜ธ์ŠคํŠธ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ค‘์ง€๋œ ํ”„๋กœ์„ธ์„œ์™€ ํ•จ๊ป˜ ์ถ”๊ฐ€๋œ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน, ์‹œ์ž‘ํ•ด์•ผ ํ•จ

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

์ข‹์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ ค๋ฉด NiFi ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด Push ๋ฉ”์„œ๋“œ๋ฅผ ์„ ํƒํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ด๋ฏธ ํ๋ฆ„์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ถ”๊ฐ€๋œ ์›๊ฒฉ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน(RPG)์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ™œ์„ฑํ™”(์ „์†ก ํ™œ์„ฑํ™”)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Apache NiFi์˜ ํ๋ฆ„ ์ „๋‹ฌ ์ž๋™ํ™”

CLI ๋ฐ ๊ธฐํƒ€ ์†Œ์Šค์˜ ๋ฌธ์„œ์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•„์‹œ๋Š” ๋ถ„์€ ๋Œ“๊ธ€์— ์ ์–ด์ฃผ์„ธ์š”.

bash๊ฐ€ ์žˆ๊ณ  ๋๊นŒ์ง€ ๊ฐˆ ์ค€๋น„๊ฐ€ ๋˜์—ˆ์œผ๋ฏ€๋กœ ํƒˆ์ถœ๊ตฌ๋ฅผ ์ฐพ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! NiFi API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์˜ ์˜ˆ์—์„œ ID๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ 7f522a13-016e-1000-e504-d5b15587f2f3). NiFi API ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช… ์—ฌ๊ธฐ์—.

Apache NiFi์˜ ํ๋ฆ„ ์ „๋‹ฌ ์ž๋™ํ™”
๋ณธ๋ฌธ์—์„œ๋Š” ๋‹ค์Œ ํ˜•์‹์˜ JSON์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

"์ž‘๋™"์„ ์œ„ํ•ด ์ฑ„์›Œ์•ผ ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜:
์ƒํƒœ โ€” ๋ฐ์ดํ„ฐ ์ „์†ก ์ƒํƒœ. ๋ฐ์ดํ„ฐ ์ „์†ก์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด TRANSMITTING์„ ์‚ฌ์šฉํ•˜๊ณ , ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด STOPPED๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
๋ฒ„์ „ - ํ”„๋กœ์„ธ์„œ ๋ฒ„์ „

๋ฒ„์ „์€ ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ 0์œผ๋กœ ์„ค์ •๋˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Apache NiFi์˜ ํ๋ฆ„ ์ „๋‹ฌ ์ž๋™ํ™”

Bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด ๋ฐฉ๋ฒ•์ด ์ ํ•ฉํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Bash ์Šคํฌ๋ฆฝํŠธ๋Š” ์ œ๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๋‹ค์Œ ๋ฐฉ๋ฒ•์ด ๋” ํฅ๋ฏธ๋กญ๊ณ  ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

NiPyAPI

NiPyAPI๋Š” NiFi ์ธ์Šคํ„ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ ํŽ˜์ด์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์—…์— ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ์‹œ์ž‘์€ ๋‹ค์Œ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ 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, ะบะพั‚ะพั€ะพะต ะฟะพะดั‚ัะณะธะฒะฐะตะผ

๋˜ํ•œ ์„ค๋ช…๋œ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ์‚ฝ์ž…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ nifi ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

nipyapi.versioning.create_registry_client

์ด ๋‹จ๊ณ„์—์„œ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์ธ์Šคํ„ด์Šค์— ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

nipyapi.versioning.list_registry_clients

๋ฐ”๊ตฌ๋‹ˆ์˜ ํ๋ฆ„์„ ์ถ”๊ฐ€๋กœ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ„ํ‚ท์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

nipyapi.versioning.get_registry_bucket

๋ฐœ๊ฒฌ๋œ ๋ฒ„ํ‚ท์— ๋”ฐ๋ผ ํ๋ฆ„์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

nipyapi.versioning.get_flow_in_bucket

๋‹ค์Œ์œผ๋กœ, ์ด ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์ด ์ด๋ฏธ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์€ ์ขŒํ‘œ์— ๋”ฐ๋ผ ๋ฐฐ์น˜๋˜๋ฉฐ ๋‘ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์ด ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน ์œ„์— ๊ฒน์ณ์ง€๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•ด๋ณด๋‹ˆ ๊ทธ๋Ÿด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™‚ ์ถ”๊ฐ€๋œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ์–ป์œผ๋ ค๋ฉด ๋‹ค์Œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

nipyapi.canvas.list_all_process_groups

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ณผ์ •์€ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ ๋ฒ„์ „์˜ ํ…œํ”Œ๋ฆฟ์— ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๋Œ€๊ธฐ์—ด์— ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ ๋งŒ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(nifi๋Š” ๋ฉ”์‹œ์ง€ ํ๊ฐ€ ์•ž์— ์Œ“์ธ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์„œ ์ œ๊ฑฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์ œ๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€์— ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ œ๊ฒŒ ํŽธ์ง€๋ฅผ ๋ณด๋‚ด ์ฃผ์‹œ๋ฉด ์ด ์ ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ ๋ ๋ถ€๋ถ„์— ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ ์ตœ์‹  ๋ฒ„์ „์˜ ํ๋ฆ„์ด ํ•ญ์ƒ ํ’€์—…๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์„ ๋ฐœ๊ฒฌํ–ˆ์œผ๋ฏ€๋กœ ๋จผ์ € ์ด ๋ฒ„์ „์„ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

nipyapi.versioning.get_latest_flow_ver

๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน:

nipyapi.versioning.deploy_flow_version

ํ”„๋กœ์„ธ์„œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

nipyapi.canvas.schedule_process_group

CLI์— ๋Œ€ํ•œ ๋ธ”๋ก์—์„œ ์›๊ฒฉ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์ด ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ์—๋„ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์—ˆ๊ณ  NiPyAPI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํŽธ์ง€๋ฅผ ๋ณด๋‚ด ์กฐ์–ธ/๋„์›€์„ ์š”์ฒญํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ๊ฒŒ ๋Œ€๋‹ตํ–ˆ๊ณ , ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ๊ณ  ๊ทธ๋Š” "๋ญ”๊ฐ€๋ฅผ ํ™•์ธํ• " ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋ฉฐ์น  ํ›„ ๋‚ด ์‹œ์ž‘ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” Python ํ•จ์ˆ˜๊ฐ€ ์ž‘์„ฑ๋œ ์ด๋ฉ”์ผ์ด ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค !!! ๋‹น์‹œ NiPyAPI ๋ฒ„์ „์€ 0.13.3์ด์—ˆ๊ณ  ๋ฌผ๋ก  ๊ทธ ๋ฒ„์ „์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ๊ทผ ์ถœ์‹œ๋œ 0.14.0 ๋ฒ„์ „์—์„œ๋Š” ์ด ๊ธฐ๋Šฅ์ด ์ด๋ฏธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ๋‚˜๋‹ค

nipyapi.canvas.set_remote_process_group_transmission

๋”ฐ๋ผ์„œ NiPyAPI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋„์›€์œผ๋กœ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ํ๋ฆ„์„ ๋กค์—…ํ–ˆ์œผ๋ฉฐ ํ”„๋กœ์„ธ์„œ์™€ ๋ฐ์ดํ„ฐ ์ „์†ก๋„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ , ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๋กœ๊น…ํ•˜๋Š” ๊ฒƒ์ด ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ณ ๋ คํ•œ ์ž๋™ํ™” ์˜ต์…˜ ์ค‘์—์„œ ํ›„์ž๊ฐ€ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ์ด๊ฒƒ์€ ๋ณด์กฐ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ชจ๋“  ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋Š” Python ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋‘˜์งธ, NiPyAPI ํ”„๋กœ์ ํŠธ๊ฐ€ ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ ์ค‘์ด๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฌธ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์…‹์งธ, NiPyAPI๋Š” ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด NiFi์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ณด๋‹ค ์œ ์—ฐํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด์ด ์ด์ œ ํ๋ฆ„์—์„œ ๋น„์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ๋‹ค์•ผ. ๋‚˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง๋ฉดํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ •์ธ NiFi์—์„œ ํ๋ฆ„ ์ „๋‹ฌ์„ ์ž๋™ํ™”ํ•˜๋Š” 3๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๊ณ  ์ „๋‹ฌ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ์ž‘๋™ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ๋„ ๋‚˜๋งŒํผ ์ด ์ฃผ์ œ์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด - ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€