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.
-
Mở trình duyệt và truy cập:
http://localhost:8080 -
Ở 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. -
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