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)

  • 실시간에서 오프라인으로 데이터를 백필하기 위한 테이블·시간 범위 지정 작업 트리거에 사용돼요.

더 알아보기 (Learn more)