Kubernetes에서의 쿼리 엔진
Kubernetes에서의 쿼리 엔진 (Query Engines on Kubernetes)
Superset과 Trino 같은 쿼리 엔진을 Kubernetes의 Pinot에 연결해요.
Kubernetes에 Pinot를 배포하고 데이터를 로드한 후 외부 쿼리 엔진을 연결해 더 풍부한 분석과 시각화를 할 수 있어요.
출처: 문서
본문
Superset으로 Pinot 쿼리
Helm으로 Superset 띄우기
- SuperSet Helm 저장소 설치:
helm repo add superset https://apache.github.io/superset
- Helm values 구성 파일 가져오기:
helm inspect values superset/superset > /tmp/superset-values.yaml
- Superset이 Pinot 의존성을 설치하도록
/tmp/superset-values.yaml파일을 편집해bootstrapScript필드에pinotdbpip 의존성을 추가하세요. - 이 의존성으로 자신만의 이미지를 빌드하거나 대신
apachepinot/pinot-superset:latest이미지를 사용할 수도 있어요. init섹션 안의 기본 admin 자격 증명을 의미 있는 사용자 프로필과 더 강한 비밀번호로 교체하세요.- Helm으로 Superset 설치:
kubectl create ns superset
helm upgrade --install --values /tmp/superset-values.yaml superset superset/superset -n superset
- 다음을 실행해 클러스터가 올라와 있는지 확인하세요.
kubectl get all -n superset
Superset UI 접근
- 아래 명령을 실행해 Superset을
localhost:18088로 포트 포워딩하세요.
kubectl port-forward service/superset 18088:8088 -n superset
- 이전 섹션에서 설정한 admin 자격 증명으로 브라우저에서 Superset으로 이동하세요.
- 다음 URI로 새 데이터베이스 연결을 만드세요:
pinot+http://pinot-broker.pinot-quickstart:8099/query?controller=http://pinot-controller.pinot-quickstart:9000/ - 데이터베이스가 추가되면 더 많은 데이터셋을 추가하고 대시보드 옵션을 탐색할 수 있어요.
Trino로 Pinot 접근
Trino 배포
- Pinot 플러그인이 설치된 Trino를 배포하세요.
helm repo add trino https://trinodb.github.io/charts/
- Trino Helm 차트 저장소에서 차트 보기:
helm search repo trino
- Trino를 Pinot에 연결하려면 Pinot 카탈로그를 추가해야 하며, 이는 추가 구성이 필요해요. 아래 명령을 실행해 모든 구성 가능한 값을 가져오세요.
helm inspect values trino/trino > /tmp/trino-values.yaml
- 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이에요.
/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
- Trino를 배포한 후 배포 상태를 확인하세요.
kubectl get pods -n trino-quickstart
Trino CLI로 Pinot 쿼리
Trino가 배포되면 아래 명령을 실행해 실행 가능한 Trino CLI를 얻으세요.
- 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
- 아직 노출되지 않았다면 Trino 서비스를 로컬로 포트 포워딩하세요.
echo "Visit http://127.0.0.1:18080 to use your application"
kubectl port-forward service/my-trino 18080:8080 -n trino-quickstart
- Trino 콘솔 클라이언트를 사용해 Trino 서비스에 연결하세요.
/tmp/trino --server localhost:18080 --catalog pinot --schema default
- 아래 샘플 쿼리처럼 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]