Kubernetes에서의 쿼리 엔진

Kubernetes에서의 쿼리 엔진 (Query Engines on Kubernetes)

Superset과 Trino 같은 쿼리 엔진을 Kubernetes의 Pinot에 연결해요.

Kubernetes에 Pinot를 배포하고 데이터를 로드한 후 외부 쿼리 엔진을 연결해 더 풍부한 분석과 시각화를 할 수 있어요.

출처: 문서

본문

Superset으로 Pinot 쿼리

Helm으로 Superset 띄우기

  1. SuperSet Helm 저장소 설치:
helm repo add superset https://apache.github.io/superset
  1. Helm values 구성 파일 가져오기:
helm inspect values superset/superset > /tmp/superset-values.yaml
  1. Superset이 Pinot 의존성을 설치하도록 /tmp/superset-values.yaml 파일을 편집해 bootstrapScript 필드에 pinotdb pip 의존성을 추가하세요.
  2. 이 의존성으로 자신만의 이미지를 빌드하거나 대신 apachepinot/pinot-superset:latest 이미지를 사용할 수도 있어요.
  3. init 섹션 안의 기본 admin 자격 증명을 의미 있는 사용자 프로필과 더 강한 비밀번호로 교체하세요.
  4. Helm으로 Superset 설치:
kubectl create ns superset
helm upgrade --install --values /tmp/superset-values.yaml superset superset/superset -n superset
  1. 다음을 실행해 클러스터가 올라와 있는지 확인하세요.
kubectl get all -n superset

Superset UI 접근

  1. 아래 명령을 실행해 Superset을 localhost:18088로 포트 포워딩하세요.
kubectl port-forward service/superset 18088:8088 -n superset
  1. 이전 섹션에서 설정한 admin 자격 증명으로 브라우저에서 Superset으로 이동하세요.
  2. 다음 URI로 새 데이터베이스 연결을 만드세요: pinot+http://pinot-broker.pinot-quickstart:8099/query?controller=http://pinot-controller.pinot-quickstart:9000/
  3. 데이터베이스가 추가되면 더 많은 데이터셋을 추가하고 대시보드 옵션을 탐색할 수 있어요.

Trino로 Pinot 접근

Trino 배포

  1. Pinot 플러그인이 설치된 Trino를 배포하세요.
helm repo add trino https://trinodb.github.io/charts/
  1. Trino Helm 차트 저장소에서 차트 보기:
helm search repo trino
  1. Trino를 Pinot에 연결하려면 Pinot 카탈로그를 추가해야 하며, 이는 추가 구성이 필요해요. 아래 명령을 실행해 모든 구성 가능한 값을 가져오세요.
helm inspect values trino/trino > /tmp/trino-values.yaml
  1. Pinot 카탈로그를 추가하려면 additionalCatalogs 섹션을 편집해 추가하세요:
additionalCatalogs:
  pinot: |
    connector.name=pinot
    pinot.controller-urls=pinot-controller.pinot-quickstart:9000

Pinot는 pinot-quickstart 네임스페이스에 배포되므로 controller serviceURL은 pinot-controller.pinot-quickstart:9000이에요.

  1. /tmp/trino-values.yaml 파일을 수정한 후 Trino를 배포하세요.
kubectl create ns trino-quickstart
helm install my-trino trino/trino --version 0.2.0 -n trino-quickstart --values /tmp/trino-values.yaml
  1. Trino를 배포한 후 배포 상태를 확인하세요.
kubectl get pods -n trino-quickstart

Trino CLI로 Pinot 쿼리

Trino가 배포되면 아래 명령을 실행해 실행 가능한 Trino CLI를 얻으세요.

  1. Trino CLI 다운로드:
curl -L https://repo1.maven.org/maven2/io/trino/trino-cli/363/trino-cli-363-executable.jar -o /tmp/trino && chmod +x /tmp/trino
  1. 아직 노출되지 않았다면 Trino 서비스를 로컬로 포트 포워딩하세요.
echo "Visit http://127.0.0.1:18080 to use your application"
kubectl port-forward service/my-trino 18080:8080 -n trino-quickstart
  1. Trino 콘솔 클라이언트를 사용해 Trino 서비스에 연결하세요.
/tmp/trino --server localhost:18080 --catalog pinot --schema default
  1. 아래 샘플 쿼리처럼 Trino CLI로 Pinot 데이터를 쿼리하세요.

실행할 샘플 쿼리

모든 카탈로그 나열

trino:default> show catalogs;
  Catalog
---------
 pinot
 system
 tpcds
 tpch
(4 rows)

Query 20211025_010256_00002_mxcvx, FINISHED, 2 nodes
Splits: 36 total, 36 done (100.00%)
0.70 [0 rows, 0B] [0 rows/s, 0B/s]

모든 테이블 나열

trino:default> show tables;
    Table
--------------
 airlinestats
(1 row)

Query 20211025_010326_00003_mxcvx, FINISHED, 3 nodes
Splits: 36 total, 36 done (100.00%)
0.28 [1 rows, 29B] [3 rows/s, 104B/s]

스키마 보기

trino:default> DESCRIBE airlinestats;
        Column        |      Type      | Extra | Comment
----------------------+----------------+-------+---------
 flightnum            | integer        |       |
 origin               | varchar        |       |
 quarter              | integer        |       |
 lateaircraftdelay    | integer        |       |
 divactualelapsedtime | integer        |       |
 divwheelsons         | array(integer) |       |
 divwheelsoffs        | array(integer) |       |
......

Query 20211025_010414_00006_mxcvx, FINISHED, 3 nodes
Splits: 36 total, 36 done (100.00%)
0.37 [79 rows, 5.96KB] [212 rows/s, 16KB/s]

총 문서 수 세기

trino:default> select count(*) as cnt from airlinestats limit 10;
 cnt
------
 9746
(1 row)

Query 20211025_015607_00009_mxcvx, FINISHED, 2 nodes
Splits: 17 total, 17 done (100.00%)
0.24 [1 rows, 9B] [4 rows/s, 38B/s]

더 알아보기 (Learn more)