NIFI?
NiFi는 시스템간의 data flow engine입니다.
시스템간의 정보흐름을 자동화 할 수 있으며 UI를 통해 쉽게 구성하기에 dataflow를 한눈에 볼 수 있습니다.
가장 중요한 것은 data의 형식은 바뀔수 있어도 data자체의 내용은 유지하는것이 nifi의 핵심 사상입니다.
NIFI Core Concept
FlowFile
information packet이라고도 하며 실제 데이터를 담은 파일을 의미합니다.
attribute:content와 같은 key:value값으로 구성되어 있습니다.
다음과 같이 flowfile에 대한 정보와 content를 담고 있습니다. 실제로 view를 누르면 데이터를 확인할 수 있습니다.
FlowFileProcessor
BlackBox라고도 불리며, 실제 작업을 수행하는 processor입니다. 지정된 flowfile을 사용하여 process를 수행합니다.
아래의 GenerateFlowFile과 같은것들이 processor라고 할 수 있습니다.
Connection
BoundedBuffer라고도 불리며, processor간의 연결을 제공합니다. Queue와 같은 구조를 가지는 해당 설정에서 대기열 우선순위 방식을 custom하게 변경할 수 있습니다.
Flow Controller
Schedule이라고 불리며 process간의 연결, flowfile교환에 대한 설정에 대한 역학을 합니다.
-> process간의 broker역할
ProcessGroup
subnet이라고도 불리며, processor의 집합입니다.
processor group은 입출력 port를 통해 데이터를 송수신 할 수 있습니다.
NIFI Cluster & Architecture
Nifi는 JVM내에서 구동됩니다.
Web ServeR: http기반+ api controller를 위한것입니다.
FlowController: extenstion을 위한 thread를 제공하며 extension을 실행할 resource를 관리힙니다.
(nifi에서제공하는 extension에는 여러가지가 있습니다. 그 중에서 예로 websocket,jdbc connection 등이 있습니다.
FlowFileRepo: flowfile에 대한 정보(Atrribute)를 disk에 저장합니다.
ContentRepo: flowfile에 대한 실제 data를 disk에 저장합니다.
Provenance Repo: event와 관련된 것들을 disk에 저장합니다. -> 주로 데이터 추적 용도로 사용됩니다.
Nifi는 clustering 설정이 가능합니다. zookeeper를 통한 nifi cluster를 관리합니다.
모든 nifi cluster는 zookeper에게 data, 설정정보, 상태정보등을 공유하여 cluster끼리 해당내용을 공유합니다 -> cluster간 동일 상태 유지
NIFI Performance
Nifi는 실제로 Diks I/O기능이 가장중요합니다. (disk를 주로 사용하기 때문)
그렇기에 Diks I/O가 CPU보다 성능적인 측면에서 더 중요하다고 볼 수 있습니다.
VM Swap을 지양합니다(VM Swap: 디스크를 메모리처럼 활용)
-> 효울적으로 서버를 운영하려면 cpu는 downgrade, disk를 upgrade하는 방식이 좋습니다.
'data > nifi' 카테고리의 다른 글
[NiFi] jdk 11 에서의 트러블 슈팅 및 메일을 보내다 (0) | 2022.10.25 |
---|---|
[NiFi] NiFi-Registry란?(NiFi와 Https 연동) (0) | 2022.09.02 |
[NiFi]Nifi - GettingStarted (0) | 2022.08.16 |