👀What is Apache NIFI?
Apache NiFi는 과거 NSA(National Security Agency)에서 개발하여, Apache에 기증한 Dataflow 엔진
2014년 기술 전송 프로그램의 일부로서, 오픈소스화 된 나이아가라 파일(NiagaraFiles)에 기반을 두고 있음
데이터를 가져오고 이를 처리후 적재하기 위한 ETL(Extract-Transformation-Load) Tools의 일종
분산환경에서 대량의 데이터를 수집, 처리하며 FBP 개념을 구현하여 만든 오픈소스이다.
FBP(Flow Based Programming)는 사전에 Data Flow 를 정의 , 유지하면서 데이터를 교환하는 프로그래밍 패러다임
실시간 데이터 처리에 유리하지만, 복잡한 연산이 어려워 Spark 또는 Storm과 연동하여 많이 사용
Apache NIFI 를 사용하는데 있어 주요한 키워드는 총 5가지
일반적인 데이터를 인식하는 데이터 단위
Processor와 Processor를 이동할 때 마다 복사본이 만들어져서 추적이 가능 (내용 복사는 아니고 포인트 정보만 복사해 부담 X
Expression Language가 지원되서 값을 다양하게 제어
FlowFile을 수집, 변형, 저장하는 기능
150개가 넘는 Processor를 제공하고 확장 가능
ExecuteScript Processor를 활용하면 많은 일이 가능
병렬적으로 동작
Processor과 Processor을 연결해 FlowFile을 전달
FlowFile의 대기열(Queue) : FlowFile의 우선순위, 만료, 부하 조절 기능 제공
FlowFile Repository - FlowFile은 생성되면 속석값과 내용 위치 저장
Content Repository - FlowFile 내용 저장
Provenance Repository - Processor가 처리될 때마다 FlowFile 이력(이벤트)이 남는다.
NiFi가 사용하는 스케줄러이다.
특정 간격 또는 Cron 표현식( 으로 스케줄링을 할 수 있으며, 클러스터 환경에서 동시에 실행되는 것을 막기 위해 Primary Node에서만 실행할 수도 있다.
Controller Service를 이용해 Processor간 자원을 공유할 수 있다.
예를들어 DBCPConnectionPool을 이용해서 DB 연결 정보를 Processor간에 공유 가능하다.