- 아파치 나이파이 설명
- 소프트웨어 구성요소
- 나이파이 기능
- 나이파이 주요 구성요소
- 프로젝트에서의 구성
1. 아파치 나이파이 설명
아파치 나이파이는 아파치 소프트웨어 재단에서 관리하는 프로젝트로, 소프트웨어 시스템 간의 데이터 흐름을 자동화하기 위해 개발된 소프트웨어입니다. 이 소프트웨어의 설계는 흐름 기반 프로그래밍 모델을 기반으로 하며, 클러스터링, TLS 암호화를 사용한 보안, 확장성, 시각적으로 데이터 흐름을 모니터링하고 수정할 수 있는 포털과 같은 사용성 개선 기능을 포함하고 있습니다.
아파치 나이파이는 사용하기 쉽고 강력하며 신뢰할 수 있는 데이터 처리 및 배포 시스템으로 소개되고 있으며,
주요 역할은 다음과 같습니다.
- 소스 데이터베이스에서 관련 데이터 추출
- 분석에 더 적합한 형식으로 데이터 변환
- 데이터를 대상 데이터베이스에 로드
2. 소프트웨어 구성요소
나이파이(NiFi)는 호스팅 대상 서버의 자바 가상 머신에서 실행되는 자바 프로그램입니다.
아래는 나이파이의 주요 구성 요소에 대한 설명입니다.
- 웹 서버(Web Server) - HTTP 기반 구성 요소로, 이벤트를 모니터링하고 소프트웨어를 시각적으로 제어하기 위해 사용
- 플로 컨트롤러(Flow Controller) - 나이파이 동작의 중심 역할을 수행하며, 나이파이 확장 기능의 실행을 제어하고 이를 위한 자원 할당을 스케줄링
- 확장 기능(Extensions) - 다양한 시스템과 통신할 수 있게 해주는 다양한 플러그인을 포함
- 플로파일 저장소(FlowFile repository) - 현재 실행 중인 플로파일(FlowFile)의 상태를 추적하고 관리하기 위해 사용
- 콘텐츠 저장소(Content repository) - 전송 대상의 데이터를 관리하는 곳
- 프로버넌스 저장소(Provenance repository) - 시스템을 통과하는 데이터의 프로버넌스와 관련된 정보를 관리
3. 나이파이 기능
- 브라우저 기반 사용자 인터페이스 : 시스템의 설계, 제어, 피드백, 모니터링 등을 브라우저를 통해 수행
- 데이터 트래킹 : 프로세스 구간별 데이터 트래킹이 가능하여 데이터의 이동과 처리 과정을 처음부터 끝까지 추적 가능
- 안전한 통신 : HTTPS 인증된 구성을 제공하며, 멀티 테넌트(Multi-tenant) 인증 및 정책 관리, TLS 및 SSH를 포함한 암호화된 통신을 지원하는 표준 프로토콜을 사용하여 데이터 통신의 안정성을 보장합니다.
- 확장 가능한 설계 : 사용자가 프로세서 및 서비스를 작성할 수 있도록 확장 가능한 구성 요소 아키텍처를 제공
- 데이터 손실 방지 : 짧은 대기 시간과 높은 처리량에 대한 데이터 손실 방지를 보장하며, 동적으로 우선 순위를 지정하고 flow 구성 간 런타임 설정이가능 하며, 백 프로세서를 제어하고 관리&컨트롤 가능
4. 나이파이 주요 구성요소
나이파이는 데이터 플로우 관리를 위해 설계된 처리 엔진입니다.
주요 구성 요소로는 다음과 같이 3가지로 이루어져 있습니다.
- 플로우파일 (Flow-File)
- 플로우파일 프로세서 (Flowfile Processor)
- 연결 (Connections)
4.1. 플로우파일
플로우파일은 데이터와 속성(Attribute)을 포함하는 단위로, 나이파이가 인식하는 데이터의 논리적 단위입니다.
주로 속성(attribute)과 내용(content)으로 구성되며, 데이터 이동과 저장에 필요한 키/값 형태로 포
키/밸류 형태로 데이터의 이동 및 저장 시에 필요한 정보를 수록할 수 있으며, Processor마다 이동시 복사본이 만들어져 추적이 용이합니다.
아래는 같은 저장소(repository)에 관련 정보
- Flowfile repository : flowfile을 생성할 때 키값 내용이 어디에 위치하는지 저장
- Content repository : 생성된 내용을 저장
- Processor : FlowFile을 수집, 변형, 저장하는 기능을 수행
4.2. 플로우파일 프로세서
플로우 파일 프로세서는 나이파이에서 실제 작업을 처리하는 요소로, 가장 다양한 범위에서 활용됩니다.
이 프로세서는 플로우 파일을 직접 수집, 변형 및 저장하는 데 사용되며, 150개가 넘는 Processor가 제공되며 확장이 가능합니다.
자주 사용되는 프로세서로는 http, kafka, db, ftp 관련 프로세서, 속성을 변경하는 updateattribute, 데이터를 합치는 mergecontent, 데이터를 분할하는 split 스리즈, 데이터 타입을 변경하는 convert등이 있습니다.
주 사용 프로세서
- http
- kafka
- db
- ftp
- updateattribute
- mergecontent
- split
- convert
4.3. 연결
연결(Connections)는 프로세서 간 플로우파일의 전송을 관리하는데 사용됩니다.
공통적인 연결 유형으로는 success와 failure가 있으며, failure는 오류 처리에 해당한다고 보시면됩니다.
문제가 있는 플로우파일은 failure 큐로 전송되며, 기타 연결 유형으로는 Not Found나 Retry 등이 있으며
프로세서에 따라 다양한 연결 유형이 존재할 수 있습니다.
5. 프로젝트에서의 구성
위의 이미지와 같이 소스 시스템으로부터 추출(Extract), 변환(Transform), 로드(Load) 역할을 NiFi를 활용하여 구성할 수 있습니다.
아파치 나이파이는 다음과 같은 처리들에 효과적입니다
- 데이터 이동 : 서로 다른 데이터베이스 간 데이터를 변환하고 이동해야 할 때 사용
- 로그를 안전하게 전송 : 원격 사이트의 어플라이언스를 분석하기위해 핵심 데이터센터로 다시 전송해야 할 때 사용
- FTP 서버에 도착한 파일 : 공급업체는 주기적으로 데이터 덤프를 구현하고 이를 파싱하고 보강하여 데이터 베이스에 적재해야 할 때 사용
- 웹 애플리케이션의 Rest 요청 : 웹사이트는 복잡한 rest API 호출을 해야 하고, 미들웨어는 데이터베이스를 조회해야 할 때 사용
- 이벤트 데이터 필터링 : 이벤트 데이터를 스트리밍하고, 보관하기 전에 특정 조건을 대상으로 평가해야 할 때 활용
- 배치 프로그램의 실행관리 : 배치 프로그램을 실행해야하며, 실행 전후 내용과 결과를 모니터링하고 관리해야 할 때 사용
'빅데이터 > Apache Nifi' 카테고리의 다른 글
Apache Nifi SplitJson, JsonPath Expression (0) | 2023.11.10 |
---|---|
Apache Nifi Cron Schedule 작성 (0) | 2023.11.09 |
Apache Nifi 프로세서 (0) | 2023.09.03 |
Apache Nifi 실행 (0) | 2023.09.01 |
Apache Nifi 설치하기 (0) | 2023.07.24 |