Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 백준 #
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
Archives
- Today
- Total
luke
[NiFi] - NiFi 란? (구성요소, 아키텍처, Zookeeper 연동) 본문
NiFi란?
Apache에 기증한 DataFlow 엔진 데이터를 가져오고 이를 처리 후 적재하기 위한 ETL(Extract Transformation Load) Tools의 일종으로 분산환경에서 대량의 데이터를 수집, 처리하며 FBP개념을 구현하여 만든 오픈소스다.
NiFi 구성요소
FlowFile, Processor, Connection, Controller이 대게 네 가지로 이루어져 있다.
FlowFile
- NiFi가 인식하는 데이터단위, "사용자 데이터' (즉, 사용자가 처리 및 배포를 위해 NiFi로 가져오는 데이터)의 각 부분을 FlowFile이라 한다. FlowFile은 속성과 콘텐츠의 두 부분으로 구성된다.
- 콘텐츠는 사용자 데이터 자체이고 예를 들면 텍스트 파일, 로그 데이터 JSON 문서, 이미지 파일 등 데이터를 직접적으로 포함하는 부분이다.
- 속성은 FlowFile과 연관된 메타데이터를 나타내며 (사용자 데이터와 연관된) key값 value값이다.
- 일반적인 데이터 Content/Attributes로 나뉜다.
- Content는 데이터 자체를 말하며 Json형식으로 데이터 출력 한다.
- Attribute는 데이터와 관련된 정보를 key값 value값 으로 표현한 것이다.
Processor
- FlowFile을 수집, 변형, 저장하는 기능
- FlowFiles를 생성, 전송, 수신, 변환, 라우팅, 분할, 병합 및 처리하는 NiFi 구성요소다. NiFi 사용자가 데이터 흐름을 구축하는 데 사용할 수 있는 중요한 구성요소다.
- 처리 이후에 또 다른 FlowFile을 만들어 낼수도 있다.
- 모든 Processor는 모든 FlowFile을 처리할 수 있다.
- Processor는 서로에게 FlowFile 참조를 전달하여 데이터 처리를 진행한다.
- Processor는 여러개가 병렬적으로 동작할 수 있다.
- Execute Script Processor를 활용하면 많은 일이 가능하다.
Connector
- Processor와 Processor를 연결 및 FlowFile을 전달하는 역할
- FlowFile의 Queue를 의미한다.
NiFi 아키텍처
WebServer
- UI 웹 서버를 통해 제공, 개발자 혹은 관리자는 이를 이용해 DataFlow 개발, 제어 모니터링이 가능하다.
- 웹 서버의 목적은 NiFi의 Http기반 명령 및 제어 API를 호스팅 하는 것이다.
FlowController
- Processor가 어느 간격 또는 시점에 실행되는지 스케줄링을 담당한다
- 각 Processor 간의 연결, 그사이에 오가는 FlowFile에 대해서 관리한다.
Extension
- NiFi가 제공하는 기본 Processor들 이외에 개발자가 Process를 개발해 확장이 가능하다.
FlowController
- NiFi에서 전체 데이터 흐름을 관리하고 조정하는 중심 컴포넌트이다. 프로세서 간의 데이터 흐름을 제어하고, 각 Processor의 작업을 관리한다.
- WAL(Write Achead Log)로 FlowFile의 속성과 상태값을 저장하는 곳, 시스템 장애 시 데이터 유실되지 않도록 조심해야 한다.
FlowFileRepository
- FlowFile의 상태를 관리하는 저장소다. FlowFile이 시스템 내에서 어떻게 이동하는지에 대한 정보를 저장한다.
- 저장소의 구현은 플러그 가능하며, 기본 접근 방식은 지정된 디스크 파티션에 있는 지속적인 WAL이다.
ContentRepository
- FlowFile의 데이터(Content)가 저장되며, 여러 디렉토리에 분석 저장이 가능, 대용량 처리에 용의 하다.
- 현재/과거 FlowFiles에 대한 데이터(Content)를 가지고 있다.
ProvenanceRepository
- 데이터의 전체 추적 정보를 저장하는 곳으로, 데이터가 어떻게 변환되고, 이동했는지 등의 이력을 보관한다.
ZooKeeper 연동
Cluster Coordinator
- 클러스터 관리와 각 노드의 상태를 모니터링하며 관리하고 조정하는 역할을 담당한다. ZooKeeper는 클러스터의 상태를 유지하고, 각 노드 간의 통신을 조정하며, 주요한 노드의 선출과 상태 변경을 추적한다.
- 역할은 클러스터의 리더 노드(Cluster Coordinator)를 선출한다. 이 리더 노드는 클러스터 전체의 관리를 담당하며, 노드 추가/제거, 상태 모니터링, 작업 분배 등을 수행한다.
- 각 NiFi 서버들의 정보를 관리, DataFlow의 추가, 수정, 삭제 등의 변경을 클러스터에 등록된 NiFi 노드들에 복제
Primary Node
- 특정작업을 단독으로 수행하는 노드, ZooKeeper에 의해 선출된다.
- 역할은 특정 작업 또는 프로세서를 실행할 유일한 노드로 지정된다. 예를 들면 특정 데이터 소스와의 연결을 설정하는 작업은 Primary Node에서만 실행될 수 있다. 이 설정은 클러스터 내에서 충돌을 피하고, 데이터 중복을 방지하는 데 도움을 준다.
ZooKeeper Server
- 클러스터를 운영하는 실제 서버들이다. 클러스터의 메타데이터, 노드 상태, 설정 정보를 저장하고 관리한다. 이 서버들은 클러스터 내의 모든 노드가 최신 상태를 유지하도록 돕고, 노드 간의 일관된 통신을 보장한다.
- 일반적으로 3개 이상의 ZooKeeper 서버가 클러스터를 구성하며 (단일 노드도 있다.) 클러스터 내에서 NiFi 노드들 중 한대가 자동으로 Cluster Coordinator와 Primary Node가 된다.
'Study 저장소 > NiFi' 카테고리의 다른 글
[NiFi] - NiFi Cluster(클러스터) (0) | 2024.08.15 |
---|