Nifi란?
- Apache Nifi는 시스템 간 데이터 전달을 효율적으로 처리, 관리, 모니터링 하기에 최적화 된 시스템임. 대량의 데이터 수집, 처리가능
- Dataflow를 쉽게 구성이 가능하며, 시스템 간의 데이터 이동과 내용을 볼 수 있는 UI제공
- 강력한 자원과 권한 관리를 통해 Multi-tenant(단일로 여러 소프트웨어에 공급하는 것)지원
- 데이터 어느 시스템으로 왔는지 추적 가능
- NiFi 시스템 간 통신 지원(site to site)
Nifi 구성요소
- FlowFile, Processor, Connection, Controller이 대게 네 가지로 이루어짐
- FlowFile - NiFi가 인식하는 데이터 단위
- 일반적인 데이터 Content/Attributes로 나뉨
- Content는 데이터 자체를 말함
- Attribute는 데이터와 관련된 정보를 키/값 쌍으로 표현 한 것이다.
- Processor - FlowFile을 수집, 변형, 저장하는 기능
- 처리 이후에 또다른 FlowFile을 만들어 낼수도 있다.
- Processor는 여러개가 병렬적으로 동작 할 수 있다.
- Conector - Processor와 Processor를 연결 및 FlowFile을 전달하는 역할
- FlowFile의 Queue를 의미함
- 우선순위 조정 및 backpressure를 설정해 부하를 조절 할 수 있다.
- Flow Controller - 각 프로세스간의 연결, 그 사이에 오가는 FlowFile에 대해서 관리
Nifi 아키텍처
- web server - UI 웹 서버를 통해 제공, 개발자 혹은 관리자는 이를 이용해 DataFlow개발, 제어 모니터링 가능
- Flow Controller - Processor 가 어느 간격 또는 시점에 실행 되는지 스케쥴링을 담당
- Extension - NiFi가 제공하는 기본 Processor들 이외에 개발자가 Process를 개발해 확장이 가능
- Flow Controller - Write-Aheade-Log로 FlowFile의 속성과 상태값을 저장하는 곳, 시스템 장애시 데이터가 유실 되지 않도록 주의
- Content Repository - FlowFile의 데이터(Content)가 저장되며, 여러 디렉토리에 분석 저장이 가능 대용량 데이터 처리에 용의
- Provenance Repository - 데이터의 처리 단계별로 FlowFile 데이터를 보관하는 곳으로, 여러 디스크를 지원한다. 이 때 각 데이터는 인덱스 검색 할 수 있다.
ZooKeeper 연동
- Cluster Coordinator - 각 NiFi서버들의 정보를 관리, DataFlow의 추가, 수정, 삭제 등의 변경을 클러스터에 등록된 NiFi노드들에 복제 해준다.
- Primary Node - 여러 노드에서 Processor가 실행 되지 않고, 특정 단일 노드에서만 실행하고자 할 때 사용하는 대표 노드
- ZooKeeper Server - 위와 같은 역할은 ZooKeeperServer에서 자동으로 선출 되며, NiFi1.0부터 Zero-MasterClustering 이 적용되어 클러스터 내에 NiFi 노드들 중 한대가 자동으로 Cluster Coordinator와 Primary Node가 된다.














