ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Trino 도커로 따라하기
    BigData 2023. 12. 3. 11:52
    728x90
    반응형

    - 목차

     

    소개.

    Trino 에 대해서 자세히 알아보기 이전에 Trino 를 설치하고 사용해보는 간단한 세션을 가져보려고 합니다.
    본 내용은 Docker 를 사용하여 진행할 예정입니다.
     

    설치하기.

    도커를 통해서 진행할 예정이구요.
    관련 도커 문서의 웹 링크는 아래와 같습니다.
     
    https://trino.io/docs/current/installation/containers.html

    Trino in a Docker container — Trino 434 Documentation

    Trino in a Docker container The Trino project provides the trinodb/trino Docker image that includes the Trino server and a default configuration. The Docker image is published to Docker Hub and can be used with the Docker runtime, among several others. Run

    trino.io

     
    먼저 아래의 커맨드를 통해서 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
Designed by Tistory.