IT_Engineer/BigData에 해당하는 글 1

[NiFi] Apache Nifi 개념 #1

IT_Engineer/BigData|2022. 2. 3. 12:08
728x90

Ⅰ. 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

댓글()