[Nifi] Apache Nifi란?

최지영·2022년 8월 14일
0

Apache Nifi 정복하기

목록 보기
1/5

👀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의 키워드 및 개념

Apache NIFI 를 사용하는데 있어 주요한 키워드는 총 5가지

📜 FlowFile

일반적인 데이터를 인식하는 데이터 단위

Processor와 Processor를 이동할 때 마다 복사본이 만들어져서 추적이 가능 (내용 복사는 아니고 포인트 정보만 복사해 부담 X

Expression Language가 지원되서 값을 다양하게 제어

📜 Processor

  • FlowFile을 수집, 변형, 저장하는 기능

  • 150개가 넘는 Processor를 제공하고 확장 가능

  • ExecuteScript Processor를 활용하면 많은 일이 가능

  • 병렬적으로 동작

📜 Connection

  • Processor과 Processor을 연결해 FlowFile을 전달

  • FlowFile의 대기열(Queue) : FlowFile의 우선순위, 만료, 부하 조절 기능 제공

📜 Repository

  • FlowFile Repository - FlowFile은 생성되면 속석값과 내용 위치 저장

  • Content Repository - FlowFile 내용 저장

  • Provenance Repository - Processor가 처리될 때마다 FlowFile 이력(이벤트)이 남는다.

📜 FlowController

  • NiFi가 사용하는 스케줄러이다.

  • 특정 간격 또는 Cron 표현식( 으로 스케줄링을 할 수 있으며, 클러스터 환경에서 동시에 실행되는 것을 막기 위해 Primary Node에서만 실행할 수도 있다.

  • Controller Service를 이용해 Processor간 자원을 공유할 수 있다.

  • 예를들어 DBCPConnectionPool을 이용해서 DB 연결 정보를 Processor간에 공유 가능하다.

0개의 댓글