NiFi๋ž€

Apache NiFi๋Š” ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ, ๊ด€๋ฆฌ, ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ ์˜ ์‹œ์Šคํ…œ์ด๋‹ค.

  • Dataflow๋ฅผ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ณ , ์‹œ์Šคํ…œ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ด๋™๊ณผ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” UI๋ฅผ ์ œ๊ณต

  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

  • ๊ฐ•๋ ฅํ•œ ์ž์›๊ณผ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด Multi-tenant(์—ฌ๋Ÿฌ ์กฐ์ง์ด ์ž์›์„ ๊ณต์œ ํ•ด ์‚ฌ์šฉ)๋ฅผ ์ง€์›

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋Š ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ์™”๋Š”์ง€ ์ถ”์  ๊ฐ€๋Šฅ

  • ์˜คํ”ˆ ์†Œ์Šค

  • ์—ฌ๋Ÿฌ NiFi ์‹œ์Šคํ…œ ๊ฐ„ ํ†ต์‹ ์„ ์ง€์›(site to site)

NiFi๋Š” ํ”„๋กœ์„ธ์„œ๋ฅผ ์ด์šฉํ•ด ์ˆ˜์ง‘, ๋ณ€ํ˜•, ์ €์žฅ์„ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์— ๊ฑธ์ณ์„œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์š” ์šฉ์–ด

NiFi

FBP

์„ค๋ช…

FlowFile

Information Packet

NiFi์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋กœ, Key/Value ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์†์„ฑ(Attribute)์™€ ๋ฐ์ดํ„ฐ(Content)๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. 0๋ฐ”์ดํŠธ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋ฉฐ, FlowFile์„ ์ด์šฉํ•ด ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค

FlowFile Processor

BlackBox

FlowFile์€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์— ๊ฑธ์ณ ์†์„ฑ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Connection

Bounded Buffer

Processor ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๋งํ•˜๋ฉฐ, NiFi์˜ Connection์€ FlowFile์˜ ๋Œ€๊ธฐ์—ด(queueing)๋ฟ ์•„๋‹ˆ๋ผ ๋ผ์šฐํŒ…, ์ฒ˜๋ฆฌ๋Ÿ‰ ์ œํ•œ, ์šฐ์„ ์ˆœ์œ„ ์ œ์–ด, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

Flow Controller

Scheduler

Processor๊ฐ€ ์–ด๋Š ๊ฐ„๊ฒฉ ๋˜๋Š” ์‹œ์ ์— ์‹คํ–‰ํ•˜๋Š”์ง€ ์Šค์ผ€์ค„๋ง

Process Group

subnet

ํŠน์ • ์—…๋ฌด, ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ์—ฌ๋Ÿฌ Processor๋ฅผ ๋ฌถ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, Input๊ณผ Output ํฌํŠธ๋ฅผ ์ œ๊ณตํ•ด Process Group๊ฐ„ ๋ฐ์ดํ„ฐ ์ด๋™์ด ๊ฐ€๋Šฅ

์•„ํ‚คํ…์ฒ˜

Web Server

NiFi๋Š” UI๋ฅผ ์›น ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž ํ˜น์€ ๊ด€๋ฆฌ์ž๋Š” ์ด๋ฅผ ์ด์šฉํ•ด Dataflow ๊ฐœ๋ฐœ, ์ œ์–ด, ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•œ๋‹ค.

Flow Controller

Processor๊ฐ€ ์–ด๋Š ๊ฐ„๊ฒฉ ๋˜๋Š” ์‹œ์ ์— ์‹คํ–‰ํ•˜๋Š”์ง€ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹นํ•œ๋‹ค.

Extension

NiFI๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ Processor๋“ค ์ด์™ธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ Process๋ฅผ ๊ฐœ๋ฐœํ•ด ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

FlowFile Repository

Write-Ahead-Log๋กœ FlowFile์˜ ์†์„ฑ๊ณผ ์ƒํƒœ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณณ์ด๋‹ค. ์‹œ์Šคํ…œ ์žฅ์• ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

Content Repository

FlowFile์˜ ๋ฐ์ดํ„ฐ(Content)๊ฐ€ ์ €์žฅ๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ถ„์„ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋–„๋ฌธ์— ์šฉ๋Ÿ‰์ด ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹จ์ผ ๋””์Šคํฌ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰๋ณด๋‹ค ๋งŽ์€ ์–‘์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Provenance Repository

๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋ณ„๋กœ FlowFile ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ๊ณณ์œผ๋กœ, ์—ฌ๋Ÿฌ ๋””์Šคํฌ๋ฅผ ์ง€์›ํ•œ๋‹ค. ์ด๋•Œ ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ์ธ๋ฑ์Šค ๋˜์–ด ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

FlowFile, Processor

FlowFile์€ Processor์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋ฉฐ, ์†์„ฑ ์ •๋ณด์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

Cluster Coordinator

๊ฐ NiFi ์„œ๋ฒ„๋“ค์˜ ์ •๋ณด(๊ฐ€๋™์—ฌ๋ถ€, ์ƒํƒœ)๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, DataFlow์˜ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ๋ณ€๊ฒฝ์„ ํด๋Ÿฌ์Šคํ„ฐ์— ๋“ฑ๋ก๋œ NiFi ๋…ธ๋“œ๋“ค์— ๋ณต์ œํ•ด์ค€๋‹ค.

Primary Node

Primary Node๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ์—์„œ Processor๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ํŠน์ • ๋‹จ์ผ ๋…ธ๋“œ์—์„œ๋งŒ ์‹คํ–‰ํ•˜๊ณ ์ž ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ ๋…ธ๋“œ์ด๋‹ค.

ZooKeeper Server

์ด๋Ÿฌํ•œ ์—ญํ• ์€ ZooKeeper Server์—์„œ ์ž๋™์œผ๋กœ ์„ ์ถœ๋˜๋ฉฐ, NiFi 1.0๋ถ€ํ„ฐ Zero-Master Clustering์ด ์ ์šฉ๋˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์— NiFi ๋…ธ๋“œ๋“ค ์ค‘ ํ•œ๋Œ€๊ฐ€ ์ž๋™์œผ๋กœ Cluster Coordinator์™€ Primary Node๊ฐ€ ๋œ๋‹ค.

Cluster์™€ ๊ฐ ๋…ธ๋“œ๋“ค์€ ๊ฐ™์€ Dataflow๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ ๋…ธ๋“œ์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์กฐํšŒ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด Primary Node์—์„œ ListHDFS๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

ListHDFS๋Š” HDFS์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ ํŒŒ์ผ์„ ์กฐํšŒํ•˜๋ฉฐ, ํŒŒ์ผ ๋ณ„๋กœ FlowFile์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ FlowFile์„ RPG(Remote Process Group)์— ์ „๋‹ฌํ•ด ๊ฐ ๋…ธ๋“œ๋กœ FlowFile์„ ๋ถ„์‚ฐํ•˜์—ฌ ์ „๋‹ฌํ•œ๋‹ค. FetchHDFS Processor๋ฅผ ์ด์šฉํ•ด HDFS ํŒŒ์ผ์„ ์กฐํšŒํ•œ๋‹ค.

HDFS : Hadoop Distributed File System

ํ•˜๋‘ก์˜ ๋Œ€ํ‘œ์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฒ”์šฉ ํ•˜๋“œ์›จ์–ด๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค ํŒจํ„ด์„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ง€์›ํ•ด ๋งค์šฐ ํฐ ํŒŒ์ผ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์‹œ์Šคํ…œ์ด๋‹ค.

์ฐธ๊ณ 

Last updated