서버
서버 (Server)
Apache Pinot의 서버 구성 요소가 데이터 처리와 저장을 어떻게 수행하는지 알아보는 페이지예요. 데이터 기반 애플리케이션의 성능을 최적화하는 핵심 역할을 담당해요.
출처: Server
본문
Pinot 서버는 세그먼트의 주요 스토리지를 제공하고 쿼리 실행에 필요한 계산을 수행해요. 프로덕션 Pinot 클러스터에는 많은 서버가 있어요. 일반적으로 서버가 많을수록 클러스터가 테이블에 보유할 수 있는 데이터가 많아지고, 쿼리에 더 낮은 지연을 제공할 수 있으며, 더 많은 동시 쿼리를 처리할 수 있어요.
서버는 일반적으로 실시간과 오프라인 워크로드로 분리되며, "실시간" 서버는 실시간 테이블만 호스팅하고 "오프라인" 서버는 오프라인 테이블만 호스팅해요. 이는 서버 프로세스 자체가 다르거나 명시적 구성이 필요한 것이 아니라 보편적인 운영 관례예요. 두 가지 유형의 서버가 있어요:
오프라인 (Offline)
오프라인 서버는 세그먼트 저장소에서 세그먼트를 다운로드해 호스팅하고 쿼리를 서빙할 책임이 있어요. 새 세그먼트가 controller에 업로드되면 controller는 새 세그먼트를 호스팅할 서버(복제 수만큼)를 결정하고 세그먼트 저장소에서 세그먼트를 다운로드하라고 알려요. 이 알림을 받으면 서버는 세그먼트 파일을 다운로드하고 서버에 로드해서 쿼리를 서빙해요.
.jpg?alt=media&token=a69b79b0-01f4-45a3-bed2-4948474cf70a)
실시간 (Real-time)
실시간 서버는 실시간 스트림(예: Kafka, EventHubs)에서 직접 수집해요. 특정 임계값에 따라 주기적으로 인메모리로 수집된 데이터의 세그먼트를 만들어요. 그런 다음 이 세그먼트는 세그먼트 저장소에 영속화돼요.
.jpg?alt=media&token=15f21383-4ad5-44db-a033-27aca5639e24)
Pinot 서버는 Helix participant로 모델링되며, Pinot 테이블(Helix 용어로 리소스라고 함)을 호스팅해요. 테이블의 세그먼트는 Helix 파티션(리소스의)으로 모델링돼요. 따라서 Pinot 서버는 하나 이상의 Helix 리소스의 하나 이상의 Helix 파티션(즉, 하나 이상의 테이블의 하나 이상의 세그먼트)을 호스팅해요.
서버 시작 (Starting a server)
Zookeeper를 설정했는지 확인하세요. Docker를 사용한다면 Pinot Docker 이미지를 받아두세요. 서버를 시작하려면:
Usage: StartServer
-serverHost <String> : Host name for controller. (required=false)
-serverPort <int> : Port number to start the server at. (required=false)
-serverAdminPort <int> : Port number to serve the server admin API at. (required=false)
-dataDir <string> : Path to directory containing data. (required=false)
-segmentDir <string> : Path to directory containing segments. (required=false)
-zkAddress <http> : Http address of Zookeeper. (required=false)
-clusterName <String> : Pinot cluster name. (required=false)
-configFileName <Config File Name> : Broker Starter Config file. (required=false)
-help : Print this message. (required=false)
Docker 이미지:
docker run \
--network=pinot-demo \
--name pinot-server \
-d ${PINOT_IMAGE} StartServer \
-zkAddress pinot-zookeeper:2181
런처 스크립트:
bin/pinot-admin.sh StartServer \
-zkAddress localhost:2181