0

Trino SQL Bài học 2: Cài đặt Trino trên Docker và cấu hình cơ bản.

Việc triển khai Trino trên môi trường local thông qua Docker giúp tách biệt hoàn toàn query engine khỏi các hệ thống lưu trữ hiện tại. Dưới đây là các bước thiết lập một node Trino duy nhất (đóng vai trò cả Coordinator và Worker) bằng docker-compose để dễ dàng mở rộng cấu hình và thêm các nguồn dữ liệu sau này.

1. Chuẩn bị cấu trúc thư mục cấu hình

Trino yêu cầu các file cấu hình cụ thể để hoạt động. Thay vì sử dụng file mặc định ẩn bên trong container, việc ánh xạ (mount) thư mục từ máy host giúp bạn linh hoạt thêm các Connector (kết nối database) mà không cần build lại image.

Tạo cấu trúc thư mục sau trên máy của bạn:

Plaintext

trino-workspace/
├── docker-compose.yml
└── etc/
    ├── node.properties
    ├── jvm.config
    ├── config.properties
    └── catalog/
        ├── tpch.properties
        └── memory.properties

2. Thiết lập các file cấu hình cốt lõi

Tạo và dán nội dung cho các file cấu hình bên trong thư mục etc/.

etc/node.properties (Định danh cho node)

Properties

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/trino/data

etc/jvm.config (Tối ưu hóa bộ nhớ Java)

Properties

-server
-Xmx2G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000

Lưu ý: Bạn có thể điều chỉnh -Xmx2G lên mức cao hơn nếu máy có nhiều RAM và cần xử lý dữ liệu lớn.

etc/config.properties (Cấu hình vai trò của node)

Properties

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=1GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=1GB
discovery.uri=http://localhost:8080

Do cấu hình chạy trên 1 node duy nhất, thuộc tính coordinator=true và node-scheduler.include-coordinator=true cho phép node này vừa điều phối vừa trực tiếp xử lý dữ liệu.

3. Khởi tạo Catalog cơ bản

Catalog là nơi khai báo các Connector để Trino biết cách kết nối với hệ thống bên ngoài. Ở mức cơ bản, chúng ta tạo hai catalog tích hợp sẵn để có dữ liệu thực hành.

etc/catalog/tpch.properties (Cung cấp các bảng dữ liệu giả lập chuẩn TPC-H)

Properties

connector.name=tpch

etc/catalog/memory.properties (Lưu trữ in-memory tạm thời để test tạo bảng)

Properties

connector.name=memory

4. Khởi chạy hệ thống với Docker Compose

Tạo file docker-compose.yml ở thư mục gốc trino-workspace:

YAML

version: '3.8'
services:
  trino:
    image: trinodb/trino:latest
    container_name: trino-server
    ports:
      - "8080:8080"
    volumes:
      - ./etc:/etc/trino
    restart: unless-stopped

Mở terminal tại thư mục trino-workspace và chạy lệnh:

Bash

docker-compose up -d

Để xác nhận hệ thống khởi động thành công mà không gặp lỗi cấu hình bộ nhớ, hãy kiểm tra log:

Bash

docker logs -f trino-server

Hệ thống sẵn sàng khi bạn thấy dòng thông báo ======== SERVER STARTED ========.

5. Truy cập Trino Web UI

Trino đi kèm với một giao diện quản lý tích hợp sẵn để theo dõi hiệu năng.

  1. Mở trình duyệt và truy cập: http://localhost:8080

  2. Ở màn hình đăng nhập, nhập một tên bất kỳ (ví dụ: admin) vì Trino mặc định không yêu cầu mật khẩu bảo mật ở môi trường local.

  3. Giao diện này hiển thị thông tin về các Query đang thực thi, số lượng Worker đang hoạt động và mức độ tiêu thụ CPU/RAM.

Để kiểm tra nhanh từ terminal xem Trino đã nhận diện được các catalog cấu hình trong thư mục etc/catalog/ hay chưa, chạy lệnh sau để gọi CLI ẩn bên trong container:

Bash

docker exec -it trino-server trino --execute "SHOW CATALOGS;"

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí