티스토리 뷰

Nifi의 슬로건을 보면 "An easy to use, powerful, and reliable system to process and distribute data"로써 쉬운 사용이 가능하며 강력하고 신뢰성 있는 시스템으로 분산처리가 가능하다고 말하고 있다. 실제로 Nifi를 사용해 보면 직관적인 UI 덕분에 누구나 손쉽게 데이터 플로우를 구성 가능함을 알 수 있다.
Nifi는 NiagaraFiles의 줄임말로써 미국국가안보국(NAS)에서 처음 개발되어 사용되었다가 Apache에 기증되면서 오픈 소스가 되어 많은 곳에서 사용할 수 있게 되었다.
Nifi의 장점
- 실시간 처리에 적합 (파일 생성시 실시간으로 DB 혹은 FTP로 전송 가능)
- 확장성이 좋음 (Scale Out 방식으로 언제든지 신규 노드 증설 가능
- 웹 기반의 직관적인 UI로 구성되어 있음( 드래그 앤 드롭 방식으로 쉽게 데이터 플로우 구성 가능)
- 여러 시스템간 통신이 지원되어 클러스터 간 데이터 교환이 가능 (Kafka, Redis, Spark, Hive...)
Nifi의 단점
- 배치 작업 효율이 떨어짐(스케쥴러 기능은 존재하지만 배치 작업으로는 부적합 배치 작업 필요시 Airflow 사용 추천)
- 원본 소스파일 누락여부 확인이 불가 (Connection에서 flowfile이 있는지만 확인 가능)
- 복잡한 데이터 조작이 불가 (많은 데이터 조작이 필요시 Spark나 Storm을 연동하여 사용 가능)
Nifi Key Concept

그림에서 볼 수 있듯이 Nifi의 기본적인 Key는 FlowFiles, Connection, Processor이다.
FlowFile

- Nifi에서 데이터를 표현하고 인식하는 최소 객체
- 속성(Attribute)과 데이터(Content)로 구성
- Flowfile마다 UUID가 존재하여 추적이 가능
Processor

- Nifi의 Processor로써 데이터 수집, 조작, 저장 역할을 수행
- Processor Name
- 프로세서의 이름 지정
- 기본은 프로세서 타입 이름
- Processor Type
- 프로세서 유형 표시
- Bulletin Indicator
- Alert가 존재할 때 표시
- 최근 5분간 발생했던 Warngin, Error 표시
- 표시정도 설정 가능 (default는 warning)
- 클러스터 환경에서 Alert가 발생한 노드도 표시
- Active Tasks
- 현재 동작중인 Task 수 표시
- 설정을 통해 수 제한 가능
- Status
- Running: 프로세서가 현재 동작 상태
- Stopped: 프로세서가 enable이지만 미동작 상태
- Invalid: 프로세서가 enable이지만, 설정이 유효하지 않아 동작할 수 없는 상태
- Disabled: 프로세서가 enable 상태가 될 때까지 동작 불가한 상태
- 5-Minute Statstics Metric
- 상태 정보는 5분간의 평균값을 표시한다.
- In : Queue로부터 가져온 전체 Flowfile 수 및 크기
- Read/Write: 디스크에 Read/Write된 전체 크기
- Out: Outbound 연결을 통해서 전송된 전체 Flowfile의 수 및 크기
- Tasks/Time: 처리된 전체 Task 수 및 누적 처리 시간

Connection

- Processor와 Processor 연결 및 FlowFile 전달
- FlowFile의 Queue 공간을 제공
- Queue 조절 기능 제공
- Queue 우선 순위 지정 가능
- Relationship(Success, Failure)을 통해서 Flowfile 분기가 가능

- Green (0-60%)
- Yellow (61-85%)
- Red (86%-100%)
- FlowFile Expiration
- 특정 시간내로 처리되지 않은 FlowFile에 대해서 자동 삭제 설정
- 0 sec으로 설정시 FlowFile은 절대 삭제되지 않음
- Back Pressure Thresholds
- Back Pressure Object Threshold(default 10000) → Queue Flowfile 보관 수 제한
- Size Threshold(default 1GB) → Queue Flowfile 보관 용량 제한

- Prioritization
- flowfile 처리해야할 우선순위 설정 가능
- FirstInFIrstOutPrioritizer
- NewstFlowFileFirstPriortizer
- OldestFlowFileFirstPriotizer -> 기본 설정값
- PrioriyAttrubutePrioritizer -> FlioFile의 Attribute를 통해 설정
- Selected Prioritizer로 Drag 하여 우선순위 이동시켜 설정
- 중복 우선순위 설정 가능
- 순서상 위에 있을 수록 먼저 적용

- List Queue
- Queue에 있는 FlowFile 조회
- 오직 100개만 조회 가능
Process Group

- 프로세서들을 그룹핑 및 캔버스 단순화 가능
- 위 그림에서는 Sava app-user log Group는 하나의 플로우로 단순화 시킨 것
- 프로세서 그룹은 중첩 가능 → 프로세서 그룹안에 다른 프로세서 서브 그룹 생성 가능
- 프로세서 그룹 레벨에 접근 관리 가능 (Ranger)
- Nifi Registry를 통해서 버젼 관리 가능


- Input Port & Output Port
- Flowfile을 Process Group으로(부터) 전달
- 모든 포트는 Process Group 이름을 포함하고 있어야함
- 보안 설정을 통해 특정 사용자에 대해서 접근 제어 가능
Data Provenance


- FlowFile의 상태 추적
- 데이터플로우의 다양한 이벤트 표시
- Event 검색 가능
- Event Type
- wildcard '*' 사용 가능

- FlowFile Lineage
- 'Show Lineage'를 통해 프로세스 이벤트 그래프 확인
- 선택된 이벤트는 빨간색을 표시
Controller Service

- 비슷한 프로세서들의 설정을 용이하게 관리하기 위해 사용
- 주로 프로세서가 데이터베이스 접속 혹은 인증 과정시 사용
- 중요한 정보(비밀번호)가 사용될 때도 용이
- 설정 범위 내에서 인스턴스 사용 관리 (connection pool 관리)
참고자료
https://getindata.com/blog/nifi-ingestion/universe-made-out-flow-files-NiFi-architecture/
NiFi Ingestion Blog Series. PART IV - Universe made out of flow files - NiFi architecture
It’s a known fact that you can’t build a tool that is good in every aspect, you need to decide what you want to prioritize. Those decisions will have a huge impact on what your tool will be capable of doing and how well it will perform. In this post we
getindata.com
'BigData > Nifi' 카테고리의 다른 글
Nifi 재기동 후 service 자동 disabled 전환 에러 (0) | 2024.01.23 |
---|---|
Exception:org.apache.nifi.encrypt.EncryptionException: Decryption Failed with Algorithm 에러 조치 (1) | 2024.01.04 |
Proposed configuration is not inheritable by the flow controller because of flow differences 에러 조치 (1) | 2024.01.04 |
Apache Nifi flow.xml.gz 뜯어보기 (1) | 2024.01.04 |
Apache Nifi Architecture 정리 (1) | 2024.01.04 |
- Total
- Today
- Yesterday
- Nifi Service
- Federation
- Dataflow
- hadoop
- hdfs
- namenode
- exporter
- error
- zabbix
- java8
- nifi.flowcontroller.autoResumeState
- nifi
- 설정에러
- bigdata #data_mesh
- Apache
- spark driver
- prometheus
- flow.xml.gz
- Discovery Rule
- Item Prototypes
- Nifi Architecture
- Apache Nifi
- lld
- openjdk1.8
- MAT
- Bigdata
- flink
- 실시간처리
- 빅데이터
- OOM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |