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