본문 바로가기
BigData/NiFi

Nifi란?

by 푸푸망나뇽 2021. 7. 19.
반응형

0. Intro

NiFi 란?

Apache NiFi는 NSA(National Security Agency)에서 Apache에 기증한 Dataflow 엔진

데이터를 가져오고 이를 처리후 적재하기 위한 ETL(Extract-Transformation-Load) Tools의 일종으로 분산환경에서 대량의 데이터를 수집,처리하며 FBP개념을 구현하여 만든 오픈소스이다.

 

* FBP는 사전에 data flow를 정의 후 , 이를 지속적으로 유지하면서 데이터를 교환하는 프로그래밍 패러다임

왜 NiFi일까? - NiFi의 장점

  • 실시간 처리에 매우 적합함 (파일 생성시 실시간으로 다른 DB 혹은 FTP로 전송 가능)
  • Zero Master 클러스터 환경을 제공하며 확장이 쉬움
  • 데이터 유실없이 데이터 전송 가능
  • HTTPS를 통한 통신보안
  • 웹 기반의 직관적 UI
  • 데이터 이동경로 추적가능
  • 여러 NiFi 시스템 간 통신을 지원해 클러스터간 Site-to-Site 데이터교환 가능

NiFi의 단점

  • 배치작업 효율이 떨어짐.
  • 원본 소스파일 누락없이 전송이 되었는지 확인이 힘듬
  • 스케줄러는 배치 스케줄러가 아니라 실행되는 내용 확인 불가능 실행 후 성공,실패, 출력 결과만을 알수있음.
  • 간단한 데이터 조작만 가능 복잡한 연산 불가. -> Spark,Storm등과 연동하여 구현 가능

 

1. NiFi 개념

주요 용어

NiFi FBP 설명
FlowFile Information Packet NiFi에서 데이터를 표현하는 객체로, NiFi가 인식하는 데이터 단위
Key/Value 형태의 데이터 속성(Attribute)와 데이터(Content)로 구성.
0바이트 이상의 데이터가 저장되며, FlowFile을 이용해 여러 시스템 간 데이터 이동이 가능하다.
Processor 이동시 위치 포인터정보 복사본이 생성되어 추적이 가능하다.
FlowFile
Processor
BlackBox 실제작업을 수행하는 프로세스
FlowFile을 수집,여러 단계에 걸쳐 속성이 추가되거나 변경 및 저장할 때 사용하는 것.
Connection Bounded
Buffer

Processor 간의 연결. 연결을 통해 FlowFile 전달
NiFi의 Connection은 FlowFile의 대기열(queueing)뿐 아니라 라우팅, 처리량 제한, 우선순위 제어, 모니터링 등의 강력한 기능을 제공
Flow
Controller
Scheduler NiFi의 스케줄러
Processor가 어느 간격 또는 시점에 실행하는지 작업에 대한 스케줄링 
Process
Group
subnet 특정 업무, 기능 단위로 여러 Processor를 묶을 수 있으며, Input과 Output 포트를 제공해 Process Group간 데이터 이동이 가능

 

NiFi 아키텍쳐

NiFi는 Host OS의 JVM 내에서 실행된다. JVM에서 NiFi의 주요 구성 요소는 다음과 같다.

 

Web Server

NiFi는 UI를 웹 서비스를 통해 제공하며, HTTP 기반 요청 및 API 관리를 한다.

사용자는 이를 이용해 Dataflow 개발, 제어, 모니터링을 한다.

 

Flow Controller

NiFi 작업의 두뇌와 같은 기능으로, Processor 작업 스케쥴러 역할을 수행한다.

Processor가 어느 간격 또는 시점에 실행하는지 스케줄링하며 스레딩을 통해 다수의 동시작업을 지원한다.

 

Extension

NiFI가 제공하는 기본 Processor들 이외에 개발자가 Process를 개발해 확장 가능하다.

 

FlowFile Repository

Write-Ahead-Log로 FlowFile의 속성과 상태값(내용의 저장위치 등)을 저장하는 곳이다. 시스템 장애시 데이터가 유실되지 않도록 한다.

 

Content Repository

FlowFile의 데이터(Content)가 저장되며, 여러 디렉토리에 분석 저장이 가능하다. 이 떄문에 용량이 큰 데이터를 저장할 수 있으며, 단일 디스크의 처리량보다 많은 양을 처리할 수 있다.

 

Provenance Repository

Processor가 처리될때마다 FlowFile의 이력(이벤트)가 저장되는 곳이다.

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

 

NiFi 클러스터링

단일서버에서 처리하기 힘든 다량의 데이터를 병렬적으로 처리하고 이를 손쉽게 관리할수있도록 Clustering 제공

NiFi는 Zero-Master 클러스터링을 채택하여 전체클러스터가 동일한 작업을 수행하며

노드들에서 다루어지는 데이터는 Apache Zookeeper를 통해서 분산되어 처리되게 되어있다.

 

Cluster Coordinator

각 NiFi 서버(node)들의 정보(가동여부, 상태)를 관리하며, 새로 추가된 노드들에게 가장 최근의 플로우를 제공한다.

또한 DataFlow의 추가, 수정, 삭제 등의 변경을 클러스터에 등록된 NiFi 노드들에 복제해준다.

 

Primary Node

모든 클러스터는 하나의 Primary Node를 가지며 ZooKeeper Server로 부터 선출된다.

여러노드에서 동시에 실행되기를 원하지 않는 경우, 특정 단일 노드에서만 실행하고자 하는 고립된 프로세서(Isolated Processor)를 실행하는 대표 노드이다.

이런 경우 Primary Node에서 실행된 데이터를 각 노드에 공급해주는것이 일반적이다. 

ZooKeeper Server

Primary Node, Cluster Coordinator은 ZooKeeper Server에서 자동으로 선출되며,

NiFi 1.0부터 Zero-Master Clustering이 적용되여 클러스터 내에 NiFi 노드들 중 한대가 자동으로 Cluster Coordinator와 Primary Node가 된다. 이를 Zero-Master Cluster라 한다.

 

 

 

연동가능한 DB: Kafka, Hdfs, Local FileSystem,각종 DB , Elasticsearch , splunk 등


https://www.slideshare.net/combineads/nifi-69730250

 

NiFi 시작하기

NiFi 시작하기 로엔 윤병화 이후 NiFi는 저로 표현합니다.

www.slideshare.net

https://dahye-jeong.gitbook.io/til/database/2020-02-02-basic/2020-03-27-nifi

 

NiFi란

 

dahye-jeong.gitbook.io

 

 

https://www.popit.kr/apache-nifi-overview-and-install/

 

NSA의 Dataflow 엔진 Apache NiFi 소개와 설치 | Popit

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

www.popit.kr

 

 

https://gist.github.com/cheerupdi/c8ba87317bbc4f397e279a374335f153

 

2. NiFi Clustering 시스템 구성

2. NiFi Clustering 시스템 구성. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

반응형

'BigData > NiFi' 카테고리의 다른 글

NiFi 설치하기 및 기본 설정 (linux, window)  (3) 2021.07.21

댓글