Controller API 예시
Controller API 예시 (Controller API Examples)
Apache Pinot Controller API 엔드포인트 패밀리와 대표적인 관리 요청을 다루는 문서예요.
출처: 문서
본문
이 페이지는 Pinot Controller의 REST API 엔드포인트 패밀리를 정리하고 각각에 대한 대표적인 관리 요청 예시를 제공해요. Controller는 기본적으로 포트 9000에서 HTTP REST API를 노출해요. 운영자는 이 API를 통해 클러스터와 테이블을 관리할 수 있어요.
관리 작업은 액세스 제어 아래에서 인증이 필요할 수 있으며, 스키마/테이블/세그먼트 생성·삭제, 테넌트 관리, 클러스터 구성 수정 등을 포함해요.
엔드포인트 패밀리 개요
| 영역 | 주 용도 | 관련 하위 섹션 |
|---|---|---|
| 스키마 API | 스키마 생성/조회/삭제/리스트 | /schemas |
| 테이블 API | 테이블 생성/조회/업데이트/삭제 | /tables |
| 세그먼트 API | 세그먼트 업로드/조회/삭제 | /segments, /v2/segments |
| 테넌트 API | 테넌트 및 브로커/서버 태그 관리 | /tenants |
| 인스턴스 API | 브로커/서버/미니언 인스턴스 조회 | /instances |
| 클러스터 구성 API | 클러스터 수준 구성 조회/수정 | /cluster/configs |
| 수집 API | 배치 수집 작업 트리거/상태 | /ingestionJobs |
| 리밸런스 API | 테이블 리밸런스, 세그먼트 라인지 처리 | /tables/{} rebalance |
| 백필 API | 백필 수집 작업 트리거 | /backfill |
스키마 API (/schemas)
GET /schemas— 모든 스키마 목록 조회.POST /schemas— 새 스키마 생성(JSON 본문).GET /schemas/{schemaName}— 특정 스키마 조회.PUT /schemas/{schemaName}— 스키마 업데이트.DELETE /schemas/{schemaName}— 스키마 삭제.GET /schemas/validate— 스키마 유효성 검사.
예시:
# 스키마 생성
curl -X POST -H "Content-Type: application/json" \
-d @mySchema.json \
"http://localhost:9000/schemas"
# 스키마 조회
curl "http://localhost:9000/schemas/myTable"
테이블 API (/tables)
GET /tables— 모든 테이블 이름 목록.POST /tables— 테이블 생성(JSON 본문, OFFLINE/REALTIME 구성 포함).GET /tables/{tableName}— 테이블 구성 조회.PUT /tables/{tableName}— 테이블 구성 업데이트.DELETE /tables/{tableName}?type=OFFLINE|REALTIME— 테이블 삭제.GET /tables/{tableName}/schema— 테이블 스키마 조회.GET /tables/{tableName}/instance— 테이블의 인스턴스 조회.POST /tables/{tableName}/rebalance— 리밸런스 트리거.GET /tables/{tableName}/segments— 테이블 세그먼트 조회.GET /tables/{tableName}/state— 테이블 상태(Ideal/External state) 조회.
예시:
# 테이블 생성 (스키마 + 테이블 구성)
curl -X POST -H "Content-Type: application/json" \
-d @myTableConfig.json \
"http://localhost:9000/tables"
# 테이블 삭제
curl -X DELETE "http://localhost:9000/tables/myTable?type=OFFLINE"
세그먼트 API (/segments)
POST /segments?tableName={}&segmentName={}— 세그먼트 업로드(v1, 대상 테이블 바인딩 엄격).POST /v2/segments— 세그먼트 업로드(v2, 대상 오버라이드 허용).GET /segments/{tableName}— 테이블의 모든 세그먼트 조회.GET /segments/{tableName}/{segmentName}/metadata— 세그먼트 메타데이터 조회.DELETE /segments/{tableName}/{segmentName}— 세그먼트 삭제.POST /segments/{tableName}/{segmentName}/reload— 세그먼트 리로드.
예시:
# 세그먼트 업로드
curl -X POST -F "[email protected]" \
"http://localhost:9000/segments?tableName=myTable"
테넌트 API (/tenants)
GET /tenants— 모든 테넌트 목록.POST /tenants— 테넌트 생성.GET /tenants/{tenantName}— 테넌트 정보 및 테이블 조회.DELETE /tenants/{tenantName}— 테넌트 삭제.- 브로커/서버에 태그 추가·제거를 통해 테넌트를 관리해요.
인스턴스 API (/instances)
GET /instances— 모든 인스턴스 목록.GET /instances/{instanceName}— 특정 인스턴스 상태 조회.- 인스턴션(브로커/서버/미니언)의 태그와 상태를 확인하는 데 사용해요.
클러스터 구성 API (/cluster/configs)
GET /cluster/configs— 클러스터 구성 조회.POST /cluster/configs— 클러스터 구성 업데이트.DELETE /cluster/configs— 클러스터 구성 제거.
수집 API (/ingestionJobs)
POST /ingestionJobs/trigger?tableName={}— 테이블의 수집 작업 트리거.GET /ingestionJobs/statue?tableName={}&jobId={}— 수집 작업 상태 조회.
백필 API (/backfill)
- 실시간에서 오프라인으로 데이터를 백필하기 위한 테이블·시간 범위 지정 작업 트리거에 사용돼요.