규턴의 개발블로그
article thumbnail
Published 2022. 8. 11. 17:55
[NiFi] NiFi란? data/nifi

NIFI?

NiFi는  시스템간의 data flow engine입니다.

시스템간의 정보흐름을 자동화 할 수 있으며 UI를 통해 쉽게 구성하기에 dataflow를 한눈에 볼 수 있습니다.

가장 중요한 것은 data의 형식은 바뀔수 있어도 data자체의 내용은 유지하는것이 nifi의 핵심 사상입니다.

 

NIFI Core Concept

FlowFile

information packet이라고도 하며 실제 데이터를 담은 파일을 의미합니다.

attribute:content와 같은 key:value값으로 구성되어 있습니다.

flowfile

다음과 같이 flowfile에 대한 정보와 content를 담고 있습니다. 실제로 view를 누르면 데이터를 확인할 수 있습니다.

 

 

FlowFileProcessor

BlackBox라고도 불리며, 실제 작업을 수행하는 processor입니다. 지정된 flowfile을 사용하여 process를 수행합니다.

아래의 GenerateFlowFile과 같은것들이 processor라고 할 수 있습니다.

Processor와 Connection

Connection

BoundedBuffer라고도 불리며, processor간의 연결을 제공합니다. Queue와 같은 구조를 가지는 해당 설정에서 대기열 우선순위 방식을 custom하게 변경할 수 있습니다.

 

Flow Controller

Schedule이라고 불리며 process간의 연결, flowfile교환에 대한 설정에 대한 역학을 합니다.

-> process간의 broker역할

 

 

 

ProcessGroup

subnet이라고도 불리며, processor의 집합입니다.

processor group은 입출력 port를 통해 데이터를 송수신 할 수 있습니다.

processor group

 

NIFI Cluster & Architecture

 

nifi 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 cluster

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하는 방식이 좋습니다.

 

 

profile

규턴의 개발블로그

@규턴이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!