1. NIFI란?
- 데이터를 가져오고 처리한 후, 적재하기 위한 ETL(Extract-Transform-Load) Tools의 일종
- FBP(Flow Based Programming)을 구현한 분산환경에서 대량의 데이터를 수집 처리하는 오픈소스
- 실시간 처리에 매우 적합하며, 데이터 유실 없이 데이터 전송이 가능하다는 장점
2. NIFI의 구성 요소
- FlowFile: NIFI가 인식하는 데이터 단위
- Content: 데이터의 내용 그 자체를 의미
- Attribute: 데이터와 관련된 정보를 키/값 쌍으로 표현한 것
- Processor를 이동할 때 마다 복사본이 만들어져 추적 가능(내용복사X, 포인터 정보만 복사)
- Processor: FlowFile을 수집, 변형, 저장하는 기능
- 데이터 처리를 완료한 이후, 새로운 FlowFile을 생성 가능
- 여러 개의 Processor가 병렬적으로 동작 가능
- 150개가 넘는 Processor를 제공하고 확장 가능
- Connection: Processor와 Processor를 연결하고 FlowFIle을 전달하는 기능
- FlowFile의 Queue(대기열)를 의미, 우선순위, 만료, 부하 조절 기능 제공
- Repository
- FlowFile Repository: FlowFile이 생성되면 속성값과 내용 "위치" 저장
- Content Repository: FlowFile 내용 저장
- Provenance Repository: Processor가 처리될 떄마다 FlowFIle 이력이 남음
- FlowController
- NIFI가 사용하는 스케줄러
- 특정 간격 또는 Cron 표현식으로 스케줄링 가능
- 클러스터 환경에서 동시에 실행되는 것을 막기 위해 Primary Node에서만 실행할 수 도 있음