Apache NiFi 시리즈 3회 - FlowFile과 Processor를 활용한 데이터 흐름 설계 실습
Apache NiFi의 핵심 구성 요소인 FlowFile과 Processor의 개념을 이해하고, 간단한 실습을 통해 데이터 흐름을 구성하는 과정을 단계별로 소개합니다.
본격적인 실습에 앞서 – 핵심 구성 요소 다시 보기
Apache NiFi의 구조를 제대로 이해하려면 두 가지 개념은 반드시 짚고 넘어가야 합니다.
- Processor: 데이터를 수집, 처리, 변환, 전송하는 단위 기능. 각 Processor는 고유의 역할을 수행합니다.
- FlowFile: NiFi에서 이동하는 단위 데이터 객체. 실제 데이터(Content)와 속성(Attribute)를 함께 갖습니다.
이 두 가지 요소를 조합해 다양한 데이터 흐름을 설계하는 것이 NiFi의 본질입니다.
실습 목표: 간단한 데이터 흐름 만들기
로컬에서 Apache NiFi가 실행 중이어야 합니다. (http://localhost:8080/nifi)
구성 플로우
GenerateFlowFile → LogAttribute → PutFile
- GenerateFlowFile: 테스트용 데이터 생성
- LogAttribute: 메타데이터 확인 로그 출력
- PutFile: 파일로 저장
이 흐름을 통해 FlowFile이 어떤 구조로 생성되고 어떻게 이동하는지 시각적으로 이해할 수 있습니다.
1단계: Processor 추가 및 연결
1. GenerateFlowFile
- Canvas에서 우클릭 → Add Processor
- GenerateFlowFile 검색 후 선택 → OK
- 설정 진입 (더블 클릭 또는 우클릭 → Configure)
- 주요 설정:
- Custom Text:
- Hello from NiFi!
- Run Schedule: 5 sec로 변경 (테스트용)
- Scheduling Strategy: Timer Driven
- Batch Size: 1
이 Processor는 지정한 간격마다 텍스트 데이터를 생성합니다.
2. LogAttribute
- Processor 추가 → LogAttribute 검색 후 삽입
- 연결: GenerateFlowFile → LogAttribute 드래그
- 연결 조건에서 success 체크 → OK
이 Processor는 FlowFile의 메타데이터(속성)를 로그로 출력해줍니다.
3. PutFile
- Processor 추가 → PutFile 검색
- 연결: LogAttribute → PutFile
- 설정 진입 → Directory 항목 설정:
- 예: /Users/username/nifi-output 또는 C:\nifi-output
이 Processor는 최종 데이터를 로컬 디스크에 저장합니다.
2단계: 흐름 실행 및 결과 확인
Processor 실행
- 각 Processor 선택 → 우측 상단 버튼 클릭 → Start
로그 확인
- 하단 메뉴에서 "Logs" 탭 열기
- LogAttribute의 출력 로그 확인:→ FlowFile이 생성되고, 속성이 정상 전달되었음을 확인할 수 있습니다.
- FlowFile Attribute Map Contents fileSize = 17 uuid = ... entryDate = ...
파일 출력 확인
- 설정한 디렉토리 경로로 이동
- 5초 간격으로 Hello from NiFi!라는 텍스트가 저장된 파일들이 생성됨
FlowFile 구조 이해하기
FlowFile은 크게 2가지 정보를 포함합니다:
구성 요소 설명
| Content | 실제 데이터 (예: 텍스트, JSON, CSV 등) |
| Attribute | 이름-값 쌍 형태의 메타데이터 (예: 파일명, 크기, 경로 등) |
이 구조 덕분에 하나의 데이터가 흐르면서 유연하게 라우팅, 변환, 필터링될 수 있습니다.
자주 쓰이는 FlowFile 속성 예시
속성 이름 설명
| filename | FlowFile에 임시로 부여된 이름 |
| path | 파일의 상대 경로 |
| uuid | 고유 식별자 |
| entryDate | 생성된 시각 (epoch 시간 기준) |
NiFi에서는 Processor마다 다양한 속성이 자동으로 붙거나 수정되며, 이를 조건 분기 등에 활용할 수 있습니다.
정리하며 – 데이터가 흐른다는 것의 의미
이번 실습을 통해 NiFi에서 데이터가 생성 → 변환 → 저장되는 일련의 흐름을 직접 체험해보았습니다.
이처럼 NiFi는 간단한 테스트 플로우를 구성하는 것만으로도 매우 직관적인 학습 환경을 제공합니다.
데이터가 어떤 형태로 이동하고, 어떤 조건에서 분기되며, 어떤 속성을 유지하는지를 눈으로 보고 제어할 수 있다는 점에서, NiFi는 데이터 파이프라인 설계에 최적화된 도구입니다.
다음 글 예고
Apache NiFi 시리즈 4회 - JSON 데이터를 분기 처리하는 방법
- EvaluateJsonPath Processor 소개
- 조건 분기 기반 라우팅 플로우 실습
- JSON 속성에 따라 다른 파일로 저장하기