일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- kubeadm
- airflow
- Operating System
- OS
- Packet
- AWS
- Kafka
- java
- zookeeper
- jvm
- CSV
- tcp
- docker
- grafana
- Python
- EC2
- ip
- kubernetes
- helm
- JavaScript
- MAC address
- Network
- Trino
- PostgreSQL
- aws s3
- kubectl
- CVAT
- Vision
- Spring
- log
- Today
- Total
JUST WRITE
Trino 한번 써보겠습니다(1) - Kubernetes에 Trino 설치 본문
Trino 한번 써보겠습니다(1)
RDB에서 데이터를 조회할 때 SQL를 통해 조회하였습니다.
데이터는 방대해져서 빅데이터가 생겼고, RDB뿐만 아니라 Storage의 종류도 다양해졌습니다.
데이터 조회는 다양한 곳에서, 큰 데이터를 한번에 조회해야 되서 어려워졌습니다.
다양한 곳의 빅데이터를 한 곳에서 조회할 수 있는 무언가가 필요해졌습니다.
그렇게 생겨난것이 분산 Query Engine입니다.
대표적인 분산 쿼리 엔진은 아래와 같습니다.
요즘 가장 핫한 쿼리 엔진인 Trino를 직접 설치해 보고 사용해보려 합니다.
총 3개의 포스팅으로 나눠서 진행해보려고 합니다.
- Trino 설치
- Hive Metastore와 AWS S3 연결
- Trino로 CSV 데이터 조회
먼저 이번 포스팅에서는 Kubernetes에 Trino 설치를 정리해 보도록 하겠습니다.
Trino 설치
Trino에 대한 자세한 설명은 따로 포스팅하도록 하겠습니다.
일단 Kubernetes Cluster에 Trino를 설치해 보도록 하겠습니다.
요즘 참 편리한 게 웬만한 OpenSource에서는 Helm을 제공해주고 있습니다.
Trino도 Helm Chart를 제공하고 있습니다.
23년 7월 17일 기준 0.11.0 버전 Helm Chart를 제공하고 있습니다.
$ helm repo add trino https://trinodb.github.io/charts
"trino" has been added to your repositories
$ helm repo list
NAME URL
openebs https://openebs.github.io/charts
argo https://argoproj.github.io/argo-helm
trino https://trinodb.github.io/charts
$ helm search repo trino
NAME CHART VERSION APP VERSION DESCRIPTION
trino/trino 0.11.0 375 Fast distributed SQL query engine for big data ...
그럼 Helm Chart로 Trino를 설치해 보겠습니다.
$ helm pull trino/trino
$ tar xzf trino-0.11.0.tgz
$ mv trino trino-0.11.0
$ cd trino-0.11.0/
$ ll
total 32
drwxrwxr-x 4 ubuntu ubuntu 4096 Jul 17 11:33 ./
drwxrwxr-x 6 ubuntu ubuntu 4096 Jul 17 11:33 ../
-rw-r--r-- 1 ubuntu ubuntu 398 Jun 23 11:09 Chart.yaml
-rw-r--r-- 1 ubuntu ubuntu 3788 Jun 23 11:09 README.md
drwxrwxr-x 2 ubuntu ubuntu 4096 Jul 17 11:33 ci/
drwxrwxr-x 2 ubuntu ubuntu 4096 Jul 17 11:33 templates/
-rw-r--r-- 1 ubuntu ubuntu 7086 Jun 23 11:09 values.yaml
준비되었으면 이제 helm install command를 실행하겠습니다.
잠깐 그전에 한 가지 더 준비해야 합니다.
values-overrides.yaml 생성
기본 설정으로 진행해도 되지만 몇 가지 설정을 하고 설치를 진행하겠습니다.
values-override.yaml 파일로 설정하였습니다.
server:
workers: 1
autoscaling:
enabled: true
maxReplicas: 3
targetCPUUtilizationPercentage: 20
coordinator:
jvm:
maxHeapSize: "2G"
worker:
jvm:
maxHeapSize: "4G"
service:
type: NodePort
먼저 살펴볼 것은 Worker의 AutoScaling 설정입니다.
server:
workers: 1
autoscaling:
enabled: true
maxReplicas: 3
targetCPUUtilizationPercentage: 20
Trino에서는 Coordinator-Worker 아키텍처로 작동합니다.
Worker에서 실질적으로 쿼리 수행작업을 진행합니다.
Trino Helm에서는 Kubernetes의 HorizontalPodAutoscaler를 활용하여 설정한 리소스만큼 사용하면,
Worker Pod을 늘려 Pod의 리소스 부담을 줄이도록 구성하였습니다.
이번 포스팅에서는 Worker를 기본 1개로 하고 최대 3개까지 늘렸습니다.
Worker Pod이 20% 이상 사용하면 Pod을 늘리도록 설정하였습니다.
HorizontalPodAutoscaler은 이번 시리즈 3번째 포스팅에서 정리하도록 하겠습니다.
coordinator:
jvm:
maxHeapSize: "2G"
worker:
jvm:
maxHeapSize: "4G"
Trino는 Java로 개발한 OpenSource로 JVM이 필요합니다.
실습 환경이라 Coordinator와 Worker의 JVM을 위와 같이 설정했습니다.
service:
type: NodePort
마지막으로 Trino Service를 외부에서 접근하도록 NodePort로 설정하였습니다.
Trino는 Web UI를 제공하기 때문에 외부 접근 허용하면 편리합니다.
Helm Install
이제 Trino Helm Chart를 설치하겠습니다.
$ helm install trino -n trino -f values-override.yaml ./
NAME: trino
LAST DEPLOYED: Mon Jul 17 11:56:43 2023
NAMESPACE: trino
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Get the application URL by running these commands:
export NODE_PORT=$(kubectl get --namespace trino -o jsonpath="{.spec.ports[0].nodePort}" services trino)
export NODE_IP=$(kubectl get nodes --namespace trino -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
$ kubectl get all -n trino
NAME READY STATUS RESTARTS AGE
pod/trino-coordinator-54bf94c5d5-lbzvw 1/1 Running 0 98s
pod/trino-worker-df8c6b8c9-7mqhv 1/1 Running 0 98s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/trino NodePort 10.110.205.240 <none> 8080:32157/TCP 98s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/trino-coordinator 1/1 1 1 98s
deployment.apps/trino-worker 1/1 1 1 98s
NAME DESIRED CURRENT READY AGE
replicaset.apps/trino-coordinator-54bf94c5d5 1 1 1 98s
replicaset.apps/trino-worker-df8c6b8c9 1 1 1 98s
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
horizontalpodautoscaler.autoscaling/trino-worker Deployment/trino-worker <unknown>/20% 1 3 1 98s
맨 밑에 HoriznotalPodAutoscaler가 있는 것을 확인할 수 있습니다.
Deployment/trino-worker를 Reference 하는 것을 확인할 수 있습니다.
그럼 Web UI에 접속해 보겠습니다.
authenticationType를 따로 설정하지 않아서 password 없이 접속이 가능합니다.
Trino Authentication에 대해서는 해당 링크에서 확인 가능합니다.
로그인하면 위 화면처럼 여러 가지 정보를 확인할 수 있습니다.
이제 Trino 설치가 끝났습니다.
다음 포스팅에서는 AWS S3에 있는 CSV 파일을 읽기 위해서 Hive Metastore를 설치해 보겠습니다.
[참고사이트]
'Data' 카테고리의 다른 글
Trino 한번 써보겠습니다(3) - AWS S3내 CSV 데이터 조회 (2) | 2023.08.14 |
---|---|
Trino 한번 써보겠습니다(2) - Hive Metastore와 AWS S3 연결 (0) | 2023.08.09 |
GlusterFS 설치 (0) | 2023.02.26 |
AWS EC2 Nifi 설치 (0) | 2022.11.23 |
What is Nifi (0) | 2022.11.21 |