-
Trino 도커로 따라하기BigData 2023. 12. 3. 11:52728x90반응형
- 목차
소개.
Trino 에 대해서 자세히 알아보기 이전에 Trino 를 설치하고 사용해보는 간단한 세션을 가져보려고 합니다.
본 내용은 Docker 를 사용하여 진행할 예정입니다.
설치하기.
도커를 통해서 진행할 예정이구요.
관련 도커 문서의 웹 링크는 아래와 같습니다.
https://trino.io/docs/current/installation/containers.html
먼저 아래의 커맨드를 통해서 trino 도커 컨테이너를 실행합니다.docker run --name trino -d -p 8080:8080 trinodb/trino
docker ps 커맨드를 사용하여 Trino 컨테이너가 정상적으로 실행 중임을 확인할 수 있습니다.docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f9a1797bbd0d trinodb/trino "/usr/lib/trino/bin/…" About an hour ago Up About an hour (healthy) 0.0.0.0:8080->8080/tcp trino
사용하기.
해당 예시에선 Trino 와 MySQL 을 연결하여 보려고 합니다.
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0
cat <<EOF> /tmp/trino_mysql_properties connector.name=mysql connection-url=jdbc:mysql://mysql:3306 connection-user=root connection-password=1234 EOF
docker run --name trino -d -p 8080:8080 \ --link mysql:mysql \ -v /tmp/trino_mysql_properties:/etc/trino/catalog/mysql.properties \ trinodb/trino
참고로 Trino 는 catalog 라는 개념이 있습니다.
catalog 는 다양한 Connector 들을 의미하구요.
저는 MySQL 을 데이터소스로 사용하기 위해서 MySQL Connector 를 Trino catalog 에 등록하였습니다.
catalog 등록은 위 도커 커맨드에서 볼륨 바인딩으로 설정하였습니다.
연결된 Data Source 확인하기.
연결된 데이터 소스는 곧 Trino 의 catalog 를 의미합니다.
그리고 Trino 의 catalog 는 사용할 수 있는 Trino Connector 를 의미하죠.
따라서 catalog 디렉토리 내부에 존재하는 Connector 설정들을 확인하면 됩니다.
보통 catalog 디렉토리는 $TRINO_HOME/catalog 위치에 존재합니다.
저의 경우는 /etc/trino 가 TRINO_HOME 의 값이였네요.
그리고 Trino CLI 상에서 show catalogs; 쿼리를 통해서 catalog 의 목록을 조회할 수 있습니다.show catalogs; Catalog --------- jmx memory mysql system tpcds tpch (6 rows) Query 20231203_200611_00004_fcypt, FINISHED, 1 node Splits: 19 total, 19 done (100.00%) 0.24 [0 rows, 0B] [0 rows/s, 0B/s]
Query 실행해보기.
위 설정대로 Trino 와 MySQL 도커 컨테이너를 실행하였다면,
두 컨테이너는 연결이 되었을겁니다.
그럼 Trino 를 통하여 조회하는 테스트를 해보겠습니다.
먼저 테이블을 생성하고 데이터를 추가하여야하는데요.
이러한 DML, DDL 은 Trino 가 아닌 MySQL 에서 직접 진행해야합니다.
그럼 테이블 생성과 데이터 추가 작업을 진행해보겠습니다.
< MySQL 관련 DDL, DML >sh> docker exec -it mysql sh sh> mysql -u root -p sh> 1234 mysql> create database test_db; Query OK, 1 row affected (0.01 sec) mysql> use test_db; Database changed mysql> create table test_table (id int); Query OK, 0 rows affected (0.04 sec) mysql> insert into test_table(id) values (1); Query OK, 1 row affected (0.01 sec) mysql> select * from test_table; +------+ | id | +------+ | 1 | +------+ 1 row in set (0.00 sec)
이제 Trino 를 통한 데이터 쿼리 작업을 수행해보겠습니다.sh> docker exec -it trino sh sh> trino trino> show catalogs; Catalog --------- jmx memory mysql system tpcds tpch (6 rows) Query 20231203_200936_00006_fcypt, FINISHED, 1 node Splits: 19 total, 19 done (100.00%) 0.13 [0 rows, 0B] [0 rows/s, 0B/s] trino> select * from mysql.test_db.test_table; id ---- 1 (1 row) Query 20231203_200926_00005_fcypt, FINISHED, 1 node Splits: 1 total, 1 done (100.00%) 0.51 [1 rows, 0B] [1 rows/s, 0B/s]
Web UI 접속하기.
http://localhost:8080 을 통해서 Trino 웹UI 에 접속할 수 있습니다.
1) Log in 은 아무 계정이나 입력하시면 접속이 가능합니다.
2. Trino 클러스터의 상태를 확인할 수 있습니다.
3. 각 Worker 의 상태 또한 확인할 수 있습니다.반응형'BigData' 카테고리의 다른 글
Checksum 알아보기 (Data Integrity, 데이터 무결성, 체크섬) (0) 2023.12.23 ASCII 코드 알아보기 (2) 2023.12.22 Thrift 알아보기 (0) 2023.11.04 Avro Serialization 알아보기. (0) 2023.10.05 Avro File 알아보기 (0) 2023.10.04