Apache NiFi

Apache NiFi에 대해 알아보자

ramibo 2023. 2. 7. 23:12

 

 

 

 

 

 

 

 

https://nifi.apache.org/docs.html

 

Apache NiFi Documentation

Copyright © 2022 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, NiFi, Apache NiFi and the project logo are trademarks of The Apache Software Foundation.

nifi.apache.org

 




Apache NiFi는 빅데이터 환경에서 데이터 수집 및 전처리를 할 수 있는 오픈소스 TOOL이다.

Apache NiFi는 시스템 간 데이터 전달을 효율적으로 처리, 관리, 모니터링하기에 최적화된 시스템.
대량의 데이터를 수집하고 특정 타겟에 적재하는 경우 많이 사용

Java virtual machine에서 실행되는 웹서버, Flow Controller 및 Processor로 구성.

- Dataflow를 쉽게 개발, 시스템 간의 데이터 이동과 내용을 볼 수 있는 UI제공
- 실시간 데이터 전송에 필요한 기능 제공
- 강력한 자원과 권한 관리를 통해 Multi-tenant(여러 조직이 자원을 공유해 사용하는 것) 지원
- 데이터 추적 가능
- 오픈 소스
- 여러 NiFi 시스템 간 통신을 지원(site to site)


1. NiFi란?
* NiFi 는 시스템 간의 데이터 흐름을 자동화하기 위해 구축되었다. 시스템 간의 자동화되고 관리되는 정보 흐름을 의미하는 데 사용
* NiFi 는 FBP(Flow-Based Programming)이라는 개념을 가지고 있다.
  (FBP는 사전에 DATA flow 프로세스를 구축 후 지속적으로 유지하며 데이터를 교환하는 프로그래밍 패러다임)


2. NiFi 구성요소

Web User Interface

1) FlowFile 
NiFi가 데이터를 인식하는 단위
Content(내용)와 Attribute(속성)로 구분된다.
 - content : 데이터 자체를 의미
 - attribute : 데이터와 관련된 키/밸류 형태로 정보 수록
Processor 마다 이동시 복사본이 만들어져 추적이 용이하다.


 - NiFi Repository 종류
 - Flowfile Repository : flowfile 생성 시 키값 내용이 어디에 위치하는지 저장
 - content repository : 생성된 내용이 저장
 - Processor : FlowFile 수집, 변형, 저장 기능


2) Processor
FlowFile을 수집, 정제, 저장 하는 기능

3) Connection
Processor간 연결, FlowFile을 임시로 저장 후 전달 확인되면 삭제하는 임시저장 역할



3. NiFi Architecture
JVM 위에서 돌아가므로 자바를 설치해야 한다.
NiFi는 호스트 운영 체제의 JVM 내에서 실행된다.

1) Web Server
웹 서버의 목적은 NiFi의 http 기반 명령 및 제어 APi를 호스팅 하는 것입니다.
NiFi는 UI를 웹서버를 통해 제공, 개발자 혹은 관리자는 이를 이용해 DataFlow 개발, 제어, 모니터링 가능

2) Flow Controller
확장이 실행될 스레드를 제공하고 확장이 실행할 리소스를 수신하는 일정 관리
Processor가 어느 간격, 시점에서 실행되는지 스케쥴링 담당.

3) Extension
핵심은 JVM 내에서 작동하고 실행된다.
NiFi가 제공하는 기본 Processor들 이외에 개발자가 Process를 개발해 확장 가능

4) Flowfile Repository 

Write-Ahead-Log로 FlowFile의 속성과 상태 값을 저장하는 곳, 시스템 장애 시 데이터가 유실되지 않도록 주의

5) Content Repository
FlowFile의 데이터(content)가 저장, 여러 디렉토리에 분석 저장이 가능하다.
이 때문에 큰 데이터를 저장할 수 있으며, 많은 양을 처리할 수 있다.

6) Provence Repository
데이터의 처리 단계별로 FlowFile 데이터를 보관하는 곳, 여러 디스크를 지원한다.
각 데이터는 인덱스 되어 검색할 수 있다.



4. 성능 기대치 및 특성

NiFi는 작동 중인 기본 호스트 시스템의 기능을 최대한 활용하도록 설계되었다.

1.Processor
2.Processor Group
3.Template



5. Zookeeper 연동

Apache Zookeeper란? 아래링크 참조!
https://engkimbs.tistory.com/660

 

 

1) Cluster Coordirdinator
각 NiFi 서버들의 정보(가동여부, 상태)를 관리, DataFlow의 추가, 수정, 삭제 등의 변경을 클러스터에 등록된 NiFi 노드들의 복제해 준다.

2) Primary Node
Primary Node는 여러 노드에서 Processor가 실행되지 않고, 특정 단일 노드에서만 실행하고자 할 때 사용하는 대표 노드이다.

3) Zookeeper Server
위와 같은 역할은 ZooKeeper Server에서 자동으로 선출되며,
NiFi 1.0부터 Zero-Master Clusstering이 적용되어 클러스터 내에 NiFi 노드들 중 한대가 자동으로 Cluster Coordinator와 Primary Node가 된다.
Cluster와 각 노드들은 같은 Dataflow를 가지고 있으며, 각 노드에서 중복되지 않은 데이터를 처리한다.


 

 

 

 

https://www.tutorialspoint.com/apache_nifi/apache_nifi_basic_concepts.htm
 

Apache NiFi - Basic Concepts

Apache NiFi consist of a web server, flow controller and a processor, which runs on Java Virtual Machine. It also has 3 repositories Flowfile Repository, Content Repository, and Provenance Repository as shown in the figure below.

www.tutorialspoint.com

https://snepbnt.tistory.com/400
 

[ NiFi ] 1. NiFi 의 정의 및 구성요소

1. NiFi 란? Apache NiFi는 시스템 간 데이터 전달을 효율적으로 처리, 관리, 모니터링 하기에 최적화된 시스템이다. 대량의 데이터를 수집, 처리하기 위해서 만들어졌다. Dataflow를 쉽게 개발할 수 있

snepbnt.tistory.com

https://velog.io/@modsiw/Apache-NiFi-%EC%9D%98-%EA%B0%9C%EB%85%90
 

Apache NiFi

Apache NiFi는 NSA(National Security Agency)에서 Apache에 기증한 Dataflow 엔진이다. 복잡해지는 기업의 시스템들에서 신속하고, 유실없는 데이터 전송이 점점 더 중요해지고 있다. 빅데이터 시스템도 마찬가

velog.io