-
Apache Nifi란?
An easy to use, powerful, and reliable system to process and distribute data.
How do you pronounce NiFi?
“nye fye” (nī fī) is the preferred pronunciation.공식 문서는 아래링크에 존재한다. 항상 공식 문서를 먼저 읽는 습관을 들이는 것이 좋다고 한다. 😎👍
- Apache Nifi는 DataFlow 엔진으로 시스템 간 데이터 전달을 효율적으로 하며 또한 ETL 툴의 일종이기도 하고, 대용량 데이터 분산 수집 및 처리, 관리, 모니터링에 최적화되어있다.
- FBP 개념을 가지고있다.
- FBP(Flow-Based Programming): 사전에 DataFlow 프로세스를 구축한 뒤 지속해서 유지하며 데이터를 교환하는 프로그래밍 패러다임
장점
- 오픈 소스
- Web UI 제공
- 실시간 데이터 전송에 능함
- 강력한 자원 및 권한 관리
- 데이터 흐름 추적 가능
- 여러 NIFI 시스템 간 통신 지원
- HTTPS 기반의 통신보안
- 데이터 유실 無
- Zero Master Cluster Enviroment
단점
- 배치작업이 약함
- 복잡한 연산 시 spark 등을 함께 사용해야함
- 스케줄러가 실행되는 내용을 알 수 없고 성공 실패 출력 결과만 알 수 있음
주요 용어
- FlowFile
- Nifi가 인식하는 데이터의 단위이다. 속성(attribute)과 내용(content)으로 구성되어 있다.
- key-value 형태로 데이터 이동/저장 시 필요한 정보 수록
- Processor마다 이동시 복사본 생성
- Processor
- 실제 작업을 수행하는 프로세스
- FlowFile을 수집, 변형, 저장하는 기능을 가지며 여러 종류의 프로세스를 제공함
- Processor는 업무, 기능 단위로 Grouping이 가능하다
- Connection
- Processor끼리 연결하여 FlowFile을 전달
- queueing, 라우팅, 처리량 제한 등 기능 제공
- Flow Contorller
- Nifi 스케줄러
Nifi Architecture
자세한 내용은 Nifi 공식문서에서 확인할 수 있으며, Nifi는 Java 기반이므로 JVM에서 동작한다. Web Server, Flow Controller, Extension, FlowFile Repository 등으로 구성되어있다. Flow Contorller가 위에서 말했듯이 실제 작업이 수행되는 곳이므로 가장 핵심적인 요소이다.
Repository가 총 3개인데 각각의 저장소는 다음과 같은 데이터를 저장하고 있다.
Repository Name Saved Data FlowFile 현재 생성된 FlowFile의 Meta Data Content 과거 및 현재의 FlowFile의 Content Data Provenance FlowFile의 History Data Nifi Cluster
Nifi는 장점에서 언급했듯이 Zero-Leader Cluster이다. 대신 데이터는 Apache Zookeeper를 통해서 분산 처리된다. 클러스터내에 Nifi 노드들 중 한대가 자동으로 Cluster Coordinator(Nifi 서버 정도관리, 노드 복제 등)와 Primary Node(특정 단일 노드에서 Processor가 실행되고자 할 때 사용되는 노드)가 된다. 클러스터 내용 또한 공식 문서에서 확인할 수 있다.
References
https://brunch.co.kr/@sokoban/94
'2022년 > Developement' 카테고리의 다른 글
nifi+kakfa+hdfs 연결해보기 (0) 2022.08.10 Nifi 설치 및 실행, 예제 및 kafka, hdfs연결해보기 (0) 2022.08.09 [ORACLE] GROUPING 함수에 관하여.. (0) 2022.07.26 오라클 계층형 쿼리 (0) 2022.07.11 Object Detction model (2) 2022.05.31