명령줄 인터페이스
명령줄 인터페이스 (Command-Line Interface, CLI)
Pinot은 클러스터에서 거의 모든 작업을 수행할 수 있는 풍부한 CLI를 제공해요. 모든 명령은 pinot-admin.sh로 실행할 수 있어요. 스크립트는 Pinot 바이너리 배포판의 bin/ 디렉토리 또는 도커 컨테이너의 /opt/pinot/bin에 있어요.
출처: 문서
본문
admin 스크립트가 지원하는 명령은 다음과 같아요.
Add Schema (스키마 추가)
스키마 구성을 컨트롤러에 업로드해요. 같은 이름의 스키마가 이미 있으면 갱신돼요.
pinot-admin.sh AddSchema -schemaFile /path/to/schema.json -controllerHost localhost -controllerPort 9000 -exec
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| schemaFile | 테이블 구성에 언급된 스키마 JSON 파일 경로. |
| controllerHost | 업로드 요청을 보낼 controllerHost |
| controllerPort | 업로드 요청을 보낼 controllerPort |
| exec | 지정하지 않으면 드라이 런(dry run)만 하고 실제로 구성은 업로드하지 않아요. |
Add Table (테이블 추가)
테이블 구성을 컨트롤러에 업로드해요.
pinot-admin.sh AddTable -tableConfigFile /path/to/table.json -schemaFile /path/to/schema.json -controllerHost localhost -controllerPort 9000 -exec
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| tableConfigFile | 테이블 구성을 담은 JSON 파일 경로. |
| schemaFile | 테이블 구성에 언급된 스키마 JSON 파일 경로. |
| controllerHost | 업로드 요청을 보낼 controllerHost |
| controllerPort | 업로드 요청을 보낼 controllerPort |
| exec | 지정하지 않으면 드라이 런만 하고 실제로 구성은 업로드하지 않아요. |
Add Tenant (테넌트 추가)
서버에 새 테넌트를 추가해요.
pinot-admin.sh AddTenant -name myTenant -role SERVER -instanceCount 10 -controllerHost localhost -controllerPort 9000 -exec
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| controllerHost | 업로드 요청을 보낼 controllerHost |
| controllerPort | 업로드 요청을 보낼 controllerPort |
| name | 테넌트 이름 |
| role | 테넌트가 위치할 곳. BROKER 또는 SERVER가 될 수 있어요. |
| instanceCount | 이 테넌트에 할당할 총 인스턴스 수 |
| offlineInstanceCount | (SERVER에만 적용) 이 테넌트 소속 오프라인 테이블을 호스팅할 수 있는 총 인스턴스 수 |
| realTimeInstanceCount | (SERVER에만 적용) 이 테넌트 소속 실시간 테이블을 호스팅할 수 있는 총 인스턴스 수 |
| exec | 지정하지 않으면 드라이 런만 하고 실제로 구성은 업로드하지 않아요. |
Check Offline Segment Intervals (오프라인 세그먼트 간격 점검)
잘못된 시간 간격을 가진 모든 세그먼트를 나열해요. OFFLINE 세그먼트만 지원돼요.
pinot-admin.sh CheckOfflineSegmentIntervals -zkAddress localhost:2181 -clusterName PinotCluster -tableName myTable
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 Zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| tableName | 잘못된 세그먼트 간격을 점검할 테이블의 쉼표 구분 목록. 기본적으로 모든 테이블을 점검해요. |
Change Num Replicas (레플리카 수 변경)
테이블의 레플리카 수를 변경해요. 레플리카 수는 최신 테이블 구성에서 설정돼요.
pinot-admin.sh ChangeNumReplicas -tableName myTable -clusterName PinotCluster -zkAddress localhost:2181 -exec
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| tableName | 작업을 수행할 테이블 이름 |
| exec | 지정하지 않으면 드라이 런만 하고 실제로 구성은 업로드하지 않아요. |
Change Table State (테이블 상태 변경)
데이터베이스에 있는 테이블을 활성화(enable), 비활성화(disable) 또는 삭제(drop)해요.
pinot-admin.sh ChangeTableState -tableName myTable -state disable -controllerHost localhost -controllerPort 9000 -exec
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| controllerHost | 업로드 요청을 보낼 controllerHost |
| controllerPort | 업로드 요청을 보낼 controllerPort |
| tableName | 수정할 테이블 이름 |
| state | enable, disable 또는 drop 중 하나 |
Create Segment (세그먼트 생성)
로컬 파일시스템의 입력 파일에서 세그먼트 파일을 생성해요.
pinot-admin.sh CreateSegment -dataDir /path/to/data/dir -format CSV -outDir /path/to/output/dir -overwrite -tableConfigFile /path/to/table.json -schemaConfigFile /path/to/schema.json
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| dataDir | 입력 파일을 담은 디렉토리 |
| searchRecursively | dataDir 아래의 하위 디렉토리에서 입력 파일을 검색. 기본값 true. dataDir에 직접 있는 파일만 쓰려면 -searchRecursively false 전달. |
| format | 입력 데이터 형식. 지원되는 모든 형식은 Input formats 참고 |
| outDir | 세그먼트를 게시할 로컬 출력 디렉토리 |
| overwrite | 디렉토리에 이미 있는 세그먼트를 덮어쓰려면 true로 설정 |
| tableConfigFile | 테이블 구성 경로 |
| schemaFile | 스키마 구성 경로 |
| readerConfigFile | reader 관련 구성을 담은 properties 파일. Input formats 참고 |
| retry | 실패 시 재시도 횟수 |
| postCreationVerification | 생성 후 세그먼트 파일을 검증하려면 true로 설정. |
| numThreads | 세그먼트 생성 작업을 실행할 스레드 수 |
Convert Pinot Segment (Pinot 세그먼트 변환)
세그먼트 파일을 Pinot 고유 형식에서 다른 데이터 형식으로 변환해요. 현재 CSV, AVRO, JSON, PARQUET를 지원해요.
pinot-admin.sh ConvertPinotSegment -dataDir /path/to/data/dir -outputDir /path/to/output/dir -outputFormat CSV -overwrite -csvDelimiter ,
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| dataDir | 세그먼트 파일을 담은 디렉토리. 로컬 파일 경로만 지원돼요. |
| outputDir | 변환된 세그먼트 파일을 둘 디렉토리 |
| outputFormat | 출력 파일 형식. CSV, AVRO, JSON 또는 PARQUET 중 하나 |
| overwrite | 출력 디렉토리에 이미 있으면 파일을 덮어쓰도록 설정 |
| csvDelimiter | CSV 파일에 쓸 구분자. CSV에만 적용 |
| csvListDelimiter | CSV 파일의 목록/배열에 쓸 구분자. CSV에만 적용 |
| csvWithHeader | 출력 파일에 CSV 헤더를 출력하도록 설정. 기본값 false. |
Parquet 형식 참고
PARQUET 형식으로 변환할 때 다음 기능이 지원돼요:
- 다중 값(multi-value) 컬럼(
Object[])은 목록으로 자동 변환돼요. - 바이너리 데이터(
byte[])는 Parquet 호환을 위해 ByteBuffer로 감싸져요. - 파일 크기 축소를 위해 기본적으로 GZIP 압축이 적용돼요.
- 사용 예:
pinot-admin.sh ConvertPinotSegment -dataDir /path/to/segments -outputDir /path/to/output -outputFormat PARQUET
Avro·Parquet 논리 타입 매핑
AVRO 또는 PARQUET로 변환할 때 Pinot은 출력 스키마에서 다음 논리 데이터 타입을 보존해요.
| Pinot 데이터 타입 | 출력 스키마 타입 |
|---|---|
BOOLEAN |
Avro boolean |
TIMESTAMP |
logicalType: timestamp-millis가 붙은 Avro long |
BIG_DECIMAL |
logicalType: big-decimal가 붙은 Avro bytes |
UUID |
logicalType: uuid가 붙은 Avro string |
이것은 다운스트림 소비자에게 출력 형식 변경이에요: BOOLEAN은 이전에 Avro int로, TIMESTAMP는 단순 long으로 내보내졌어요. BIG_DECIMAL은 이제 Avro와 Parquet 출력에서 지원돼요. 변환된 파일을 소비할 때 reader가 이 Avro 논리 타입을 존중하도록 구성하세요.
Delete Cluster (클러스터 삭제)
zookeeper에서 클러스터 네임스페이스를 삭제해요.
pinot-admin.sh DeleteCluster -clusterName PinotCluster -zkAddress localhost:2181
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| clusterName | 삭제할 클러스터 이름 |
| zkAddress | 클러스터 네임스페이스를 삭제할 zookeeper의 쉼표로 구분된 host:port 목록 |
Launch Data Ingestion Job (데이터 적재 작업 실행)
배치 또는 스트리밍 데이터를 소비해 Pinot으로 푸시하는 작업을 실행해요.
pinot-admin.sh LaunchDataIngestionJob -jobSpecFile /path/to/job_spec.json -propertyFile /path/to/job.properties -values dt=2020-08-10 hour=15
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| jobSpecFile | 작업 스펙 파일 경로. 로컬 파일 경로만 지원돼요. |
| propertyFile | properties 파일 경로. 적재 작업 관련 속성이나 템플릿 파라미터를 담을 수 있어요. |
| values | 템플릿 파라미터를 대체할 값들을 담은 문자열 목록 |
Merge/Rollup Segments (세그먼트 병합/롤업)
Minion Merge Rollup Task와 유사한 작업을 수행해요. 제공된 스펙에 따라 여러 세그먼트를 병합할 수 있어요.
경고: 이 명령은 주로 디버깅용이에요. 프로덕션에서는 Minion Merge Rollup Task를 사용하세요.
pinot-admin.sh SegmentProcessorFramework -segmentProcessorFrameworkSpec /path/to/framework_spec.json
스펙 파일 내 필드
| 필드 | 설명 |
|---|---|
| inputSegmentsDir | 병합할 모든 입력 세그먼트 파일 또는 디렉토리를 담은 디렉토리 |
| outputSegmentsDir | 병합된 세그먼트 파일을 둘 디렉토리 |
| tableConfigFile | 병합할 세그먼트의 테이블 구성 경로 |
| schemaFile | 병합할 세그먼트의 테이블 스키마 경로 |
| timeHandlerConfig | type, startTimeMs, endTimeMs, roundBucketMs, partitionBucketMs을 포함한 시간 처리 관련 구성 |
| partitionerConfigs | partitionerType, numPartitions, columnName, transformFunction, columnPartitionConfig을 포함한 파티션 관련 구성 목록 |
| mergeType | CONCAT, ROLLUP, DEDUP |
| aggregationTypes | ROLLUP 병합 타입을 위한 메트릭 컬럼에서 집계 함수 타입으로의 매핑 |
| segmentConfig | maxNumRecordsPerSegment, segmentNamePrefix를 포함한 생성 세그먼트 관련 구성 |
Move Replica Group (레플리카 그룹 이동)
현재 서버에서 지정한 대상 서버로 레플리카 그룹의 일부를 마이그레이션하는 명령이에요. 의도한 경우 테이블의 모든 레플리카를 대상 서버로 마이그레이션하려면 여러 번 실행하세요.
pinot-admin.sh MoveReplicaGroup -zkHost localhost:2181 -cluster PinotCluster -srcHosts host1,host2 -destHostsFile /path/to/destination/file -tableName myTable -exec
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| srcHosts | 모든 소스 호스트가 담긴 파일 경로 또는 쉼표로 구분된 호스트 이름 목록 |
| destHostsFile | 모든 대상 호스트가 담긴 파일 경로 |
| tableName | 레플리카 그룹을 이동할 테이블 이름. 현재 OFFLINE 테이블만 지원해요. |
| maxSegmentsToMove | 이동할 최대 세그먼트 수. 기본값 Integer.MAX_VALUE |
| zkHost | zookeeper host:port 문자열 |
| cluster | zookeeper 안의 클러스터 이름 |
| exec | 명령을 실행하도록 설정. 설정하지 않으면 드라이 런만 수행 |
Operate Cluster Config (클러스터 구성 조작)
pinot의 클러스터 수준 구성을 수정해요. 이는 클러스터의 모든 노드에 적용되는 구성이에요.
pinot-admin.sh OperateClusterConfig -controllerHost localhost -controllerPort 9000 -operation ADD -config pinot.broker.enable.query.limit.override=1
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| operation | 수행할 작업 유형. GET, ADD, UPDATE 또는 DELETE 중 하나 |
| config | 작업을 수행할 구성. ADD나 UPDATE의 경우 구성 값은 = 뒤에 제공돼요. |
| controllerHost | 요청을 보낼 호스트 |
| controllerPort | 요청을 보낼 포트 |
Post Query (쿼리 전송)
클러스터에서 SQL 쿼리를 실행해요.
pinot-admin.sh PostQuery -brokerHost localhost -brokerPort 8000 -query "SELECT * FROM myTable"
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| brokerHost | 쿼리를 실행할 broker 호스트 |
| brokerPort | 쿼리를 실행할 broker 포트 |
| query | 실행할 SQL 쿼리 |
Rebalance Table (테이블 리밸런싱)
테이블을 리밸런싱해요. 즉, 클러스터의 테이블에 인스턴스와 세그먼트를 재할당해요.
세그먼트 재할당에는 다음 모드가 제공돼요:
-
With-downtime rebalance (다운타임 허용 리밸런스): IdealState가 한 번에(one go) 대상 세그먼트 할당으로 대체되고 레플리카 가용성에 대한 보장이 없어요. ExternalView가 대상 세그먼트 할당에 도달할 때까지 기다리지 않고 즉시 반환해요. 비활성화된 테이블은 항상 다운타임으로 리밸런싱돼요.
-
No-downtime rebalance (무중단 리밸런스): 구성된 레플리카 수가 항상(ONLINE 또는 CONSUMING) 가용하도록 주의를 기울여요. 이 모드는 ExternalView가 대상 세그먼트 할당에 도달한 뒤에 반환해요.
아래 언급된 엣지 케이스에서
best-efforts가 비활성화되어 있으면 무중단 계약을 달성할 수 없으므로 리밸런서가 리밸런스를 실패시키고 테이블이 중간 단계에 멈출 수 있어요. 사용자는 리밸런스 결과를 확인하고 문제를 해결한 뒤 필요하면 리밸런스를 다시 실행해야 해요.best-efforts가 활성화되면 리밸런서는 경고를 기록하고 리밸런스를 계속하지만, 무중단 계약은 보장되지 않아요.다음 엣지 케이스 상황에서 다운타임이 발생할 수 있어요:
- 세그먼트가 ExternalView에서 ERROR 상태가 된 경우 → best-efforts 시 ERROR 상태를 정상 상태로 간주.
- ExternalView가 최대 대기 시간 내에 수렴하지 못한 경우 → best-efforts 시 다음 단계로 진행.
위험: 리밸런스를 처리하는 컨트롤러가 중단/재시작되면 다른 컨트롤러가 리밸런스를 자동으로 재개하지 않아요.
pinot-admin.sh RebalanceTable -zkAddress localhost:2181 -clusterName PinotCluster -tableName myTable -reassignInstances -includeConsuming -downtime
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| tableName | 작업을 수행할 테이블 이름 |
| reassignInstances | 세그먼트를 재할당하기 전에 인스턴스를 재할당하도록 설정(기본값 false) |
| includeConsuming | 실시간 테이블의 CONSUMING 세그먼트를 재할당하도록 설정(기본값 false) |
| bootstrap | 부트스트랩 모드로 테이블을 리밸런스하도록 설정(최소 세그먼트 이동과 무관하게, 빈 테이블에 새 세그먼트를 추가하듯 라운드로빈 방식으로 모든 세그먼트를 재할당, 기본값 false) |
| downtime | 리밸런스 중 다운타임을 허용하도록 설정(기본값 false) |
| minAvailableReplicas | 리밸런스 중 살려둘 최소 레플리카 수, 또는 값이 음수면 사용 불가로 허용할 최대 레플리카 수(기본값 1). downtime이 false일 때만 적용. |
| bestEfforts | 최선 노력(best-efforts)으로 리밸런스하도록 설정. 즉, 무중단 계약을 달성할 수 없을 때 리밸런스를 실패시키지 않음(기본값 false) |
Start Broker (브로커 시작)
호스트에서 브로커 인스턴스를 시작해요.
pinot-admin.sh StartBroker -zkAddress localhost:2181 -clusterName PinotCluster -configFileName /path/to/broker.conf
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| brokerHost | 브로커를 실행할 인스턴스의 호스트 이름 |
| brokerPort | 브로커가 수신할 포트. 기본 8099. |
| zkAddress | 연결할 Zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| configFileName | 컨트롤러 구성을 담은 properties 파일 경로. 전체 구성은 Broker 참고 |
Start Controller (컨트롤러 시작)
호스트에서 컨트롤러 인스턴스를 시작해요.
pinot-admin.sh StartController -controllerMode helix_only -dataDir /path/to/data/dir -zkAddress localhost:2181 -clusterName PinotCluster -configFileName /path/to/controller.conf
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| controllerMode | dual, pinot_only 또는 helix_only 중 하나. 기본값 dual |
| controllerHost | 컨트롤러를 실행할 인스턴스의 호스트 이름 |
| controllerPort | 컨트롤러가 수신할 포트. 기본 9000. |
| dataDir | 데이터를 저장할 디렉토리 경로. 기본값은 java.io.tmpDir + PinotController |
| zkAddress | 연결할 Zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| configFileName | 컨트롤러 구성을 담은 properties 파일 경로. 전체 구성은 Controller 참고 |
Start Server (서버 시작)
호스트에서 서버 인스턴스를 시작해요.
pinot-admin.sh StartServer -dataDir /path/to/data/dir -zkAddress localhost:2181 -clusterName PinotCluster -configFileName /path/to/server.conf
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| serverHost | 브로커를 실행할 인스턴스의 호스트 이름 |
| serverPort | 브로커가 수신할 포트. 기본 8099. |
| serverAdminPort | admin API가 제공될 포트. 기본 8097 |
| dataDir | 데이터를 저장할 디렉토리 |
| segmentDir | .tar 세그먼트 파일을 임시로 다운로드할 디렉토리 |
| zkAddress | 연결할 zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| configFileName | 컨트롤러 구성을 담은 properties 파일 경로. 전체 구성은 Server 참고 |
Start Service Manager (서비스 매니저 시작)
단일 명령으로 모든 기본 구성과 함께 여러 Pinot 프로세스를 시작해요.
pinot-admin.sh StartServiceManager -zkAddress localhost:2181 -clusterName PinotCluster -bootstrapServices CONTROLLER BROKER -bootstrapConfigPaths /path/to/controller.conf /path/to/broker.conf
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| port | -1로 설정하면 비활성화, 0이면 사용 가능한 임의 포트에서 서비스 매니저 실행 |
| bootstrapConfigPaths | Pinot 구성 파일 경로 목록. 각 구성 파일에는 시작할 서비스를 나타내는 추가 구성 pinot.service.role이 필요해요. 서비스 역할은 CONTROLLER, BROKER 또는 SERVER 중 하나일 수 있어요. |
| bootstrapServices | 기본 구성으로 시작할 서비스 역할 목록. 이 역할들에는 bootstrapConfig가 제공돼도 기본 구성을 사용해요. |
Show Cluster Info (클러스터 정보 표시)
메타데이터와 함께 사용 가능한 모든 클러스터 네임스페이스를 표시해요.
pinot-admin.sh ShowClusterInfo -clusterName PinotCluster -zkAddress localhost:2181
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| tables | |
| tags |
Stop Process (프로세스 중지)
호스트에서 실행 중인 지정된 유형의 모든 프로세스를 중지해요.
pinot-admin.sh StopProcess -controller -broker -server
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| controller | 모든 컨트롤러 프로세스 중지 |
| broker | 모든 브로커 프로세스 중지 |
| server | 모든 서버 프로세스 중지 |
| zookeeper | 모든 zookeeper 프로세스 중지. pinot admin 스크립트가 시작한 프로세스여야 하며, 그렇지 않으면 종료되지 않아요. |
| kafka | 모든 kafka 프로세스 중지. pinot admin 스크립트가 시작한 프로세스여야 하며, 그렇지 않으면 종료되지 않아요. |
Upload Segments (세그먼트 업로드)
세그먼트 파일을 압축해 서버에 업로드해요.
pinot-admin.sh UploadSegment -controllerHost localhost -controllerPort 9000 -segmentDir /path/to/local/dir -tableName myTable
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| controllerHost | 컨트롤러의 호스트 이름 또는 IP |
| controllerPort | 컨트롤러 포트 |
| segmentDir | 세그먼트 파일을 담은 로컬 디렉토리 |
| tableName | 세그먼트를 푸시할 테이블 이름. 이 값은 세그먼트 메타데이터에 저장된 segment.table.name을 오버라이드해요. 생략하면 Pinot은 메타데이터 값으로 폴백해요. |
Validate Config (구성 검증)
Zookeeper에 있는 테이블 구성과 스키마를 검증해요.
pinot-admin.sh ValidateConfig -clusterName PinotCluster -zkAddress localhost:2181 -tableConfig -tableName mytable myTable2 -schema -schemaNames myschema myschema2
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 Zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| tableConfig | 설정하면 테이블 구성을 검증해요. |
| tableNames | 공백으로 구분된 테이블 이름 목록. 기본적으로 모든 테이블을 검증해요. |
| schema | 설정하면 스키마를 검증해요. |
| schemaNames | 공백으로 구분된 스키마 이름 목록. 기본적으로 모든 스키마를 검증해요. |
Validate Segment (세그먼트 검증)
지정한 테이블 접두사에 대해 Helix Ideal state와 External view를 비교해요.
pinot-admin.sh ValidateSegment -tablePrefix myTable -clusterName PinotCluster -zkAddress localhost:2181
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 Zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| tablePrefix | 검증을 수행할 테이블 이름의 접두사 |
Verify Cluster State (클러스터 상태 확인)
클러스터의 모든 테이블이 같은 Ideal State와 External View를 갖는지 확인해요.
pinot-admin.sh VerifyClusterState -zkAddress localhost:2181 -clusterName PinotCluster -tableName myTable -timeoutSec 10
지원 옵션
모든 옵션은 -(하이픈)로 시작해야 해요.
| 옵션 | 설명 |
|---|---|
| zkAddress | 연결할 Zookeeper의 쉼표로 구분된 host:port 문자열 |
| clusterName | 연결할 클러스터 이름. zookeeper 안의 네임스페이스로 볼 수 있어요. |
| tableName | 검증할 테이블 이름. 기본적으로 모든 테이블을 확인해요. |
| timeoutSec | 클러스터 상태를 확인할 요청의 시간 초과(초). |