클러스터
클러스터 (Cluster)
Apache Pinot 클러스터를 구축하고 관리하는 방법을 배우는 페이지예요. 데이터 처리와 최적화된 분석의 핵심이 되는 구성 요소들을 파악할 수 있어요.
출처: Cluster
본문
Pinot 클러스터는 데이터를 수집, 저장, 처리하는 데 필요한 소프트웨어 프로세스와 하드웨어 리소스의 모음이에요. Pinot 클러스터 구성 요소에 대한 자세한 내용은 물리적 아키텍처를 참조하세요.
Pinot 클러스터는 일반적으로 프로덕션에서는 별도의 하드웨어 리소스에 배포되는 다음 프로세스들로 구성돼요. 개발에서는 일반적인 노트북의 Docker 컨테이너에 충분히 들어갑니다:
- Controller: 클러스터 메타데이터를 유지하고 클러스터 리소스를 관리해요.
- Zookeeper: controller를 대신해 Pinot 클러스터를 관리해요. 테이블 설정, 스키마, 세그먼트 메타데이터, 클러스터 상태를 포함한 메타데이터의 내결함성(fault-tolerant), 영구 저장을 제공해요.
- Broker: 클라이언트 프로세스에서 쿼리를 받아 처리를 위해 서버로 전달해요.
- Server: 세그먼트 파일의 스토리지와 쿼리 처리를 위한 컴퓨팅을 제공해요.
- (선택) Minion: 쿼리 처리를 제외한 백그라운드 작업을 계산해서 쿼리 지연에 미치는 영향을 최소화해요. 세그먼트를 최적화하고 추가 인덱스를 구축해 (데이터가 삭제되더라도) 성능을 보장해요.
가장 단순한 Pinot 클러스터는 서버, 브로커, controller, Zookeeper 노드의 네 가지 구성 요소로 구성돼요. 프로덕션 환경에서는 이 구성 요소들이 일반적으로 별도의 서버 인스턴스에서 실행되고, 데이터 볼륨, 부하, 가용성, 지연에 따라 필요에 따라 확장돼요. 프로덕션 Pinot 클러스터는 10개 미만의 총 인스턴스에서 1,000개 이상까지 다양해요.
Pinot는 분산 메타데이터 저장소로 Apache Zookeeper를, 클러스터 관리를 위해 Apache Helix를 사용해요.
Helix는 Pinot 클러스터의 의도된 상태에 대한 영구적이고 내결함성 있는 맵을 유지하는 클러스터 관리 솔루션이에요. 현재 구성을 위해 올바른 하드웨어 리소스가 할당되었는지 지속적으로 모니터링해요. 구성이 변경되면 Helix는 새 구성을 반영하도록 하드웨어 리소스를 스케줄링하거나 해제해요. 클러스터의 요소가 치명적으로 상태를 변경하면 Helix는 메타데이터에 나타난 이상적인 상태와 실제 클러스터를 일치시키도록 하드웨어 리소스를 스케줄링해요. 물리적 관점에서 Helix는 controller 프로세스에 더해 서버와 브로커에서 실행되는 에이전트의 형태를 취해요.
클러스터 구성 (Cluster configuration)
클러스터 구성 설정에 대한 자세한 내용은 클러스터 구성 레퍼런스를 참조하세요.
클러스터 구성 요소 (Cluster components)
Helix는 책임에 따라 노드를 논리적 구성 요소로 나눠요:
Participant
Participant는 분산된 파티션 리소스를 호스팅하는 노드예요.
Pinot 서버는 participant로 모델링돼요. 서버 노드에 대한 자세한 내용은 Server를 참조하세요.
Spectator
Spectator는 각 participant의 현재 상태를 관찰하고 그 정보를 사용해 리소스에 접근하는 노드예요. Spectator는 클러스터의 상태 변화(participant의 상태 또는 participant 내 파티션의 상태)를 알림 받아요.
Pinot 브로커는 spectator로 모델링돼요. 브로커 노드에 대한 자세한 내용은 Broker를 참조하세요.
Controller
Participant 노드를 관찰하고 제어하는 노드예요. 클러스터의 모든 전이를 조정하고, 클러스터 안정성을 유지하면서 상태 제약 조건이 충족되도록 보장할 책임이 있어요.
Pinot controller는 controller로 모델링돼요. controller 노드에 대한 자세한 내용은 Controller를 참조하세요.
논리적 뷰 (Logical view)
클러스터를 시각화하는 또 다른 방법은 논리적 뷰예요:

Pinot 클러스터 설정 (Set up a Pinot cluster)
일반적으로 환경/데이터 센터당 클러스터는 하나만 있어요. Pinot가 테넌트를 지원하기 때문에 여러 Pinot 클러스터를 만들 필요가 없어요.
클러스터를 설정하려면 다음 가이드 중 하나를 참조하세요: