安装配置
安装Python
sudo apt update
sudo apt install -y python3
sudo ln -sf /usr/bin/python3 /usr/bin/python
安装 JDK 21
# 切换到用户目录
cd ~
# 上载文件
# 解压
tar -xzf jdk-21_linux-x64_bin.tar.gz
# 移动
mv jdk-21.0.9/ /opt/module/
# 最终JDK目录
/opt/module/jdk-21.0.9
安装 Trino 439
下载文件 trino-server-439.tar
# 切换到用户目录
cd ~
# 解压
tar -xzf trino-server-439.tar.gz
# 移动
mv trino-server-439 /opt/module/
配置环境变量
sudo vim /etc/profile.d/myprofile.sh
#设置 Trino 环境变量
export TRINO_HOME=/opt/module/trino-server-439
export PATH=$TRINO_HOME/bin:$PATH
# 配置生效
source /etc/profile
创建目录
# 创建配置目录
mkdir -p $TRINO_HOME/etc/
配置 config.properties
# 配置 config.properties(单机 Coordinator + Worker)
cat > $TRINO_HOME/etc/config.properties <<EOF
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8091
query.max-memory=4GB
query.max-memory-per-node=2GB
discovery.uri=http://localhost:8091
node.environment=production
EOF
配置 node.properties
# 配置 node.properties
cat > $TRINO_HOME/etc/node.properties <<EOF
# 单机可固定,多节点必须唯一
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/opt/data/trino/trino-data
EOF
配置 jvm.config
# 配置 jvm.config
cat >$TRINO_HOME/etc/jvm.config <<EOF
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-Djdk.attach.allowAttachSelf=true
EOF
配置 launcher.properties
# 只需创建一个文件(1 行)
cat >$TRINO_HOME/etc/launcher.properties <<EOF
java-home=/opt/module/jdk-21.0.9
EOF
安装客户端
将trino-cli-439-executable.jar 上载到 /opt/module/trino-server-439/bin
mv trino-cli-439-executable.jar trino
chmod +x trino
启停
# 前台运行
JAVA_HOME=/opt/module/jdk-21.0.9 \
PATH=/opt/module/jdk-21.0.9/bin:$PATH \
$TRINO_HOME/bin/launcher run
# 后台运行
JAVA_HOME=/opt/module/jdk-21.0.9 \
PATH=/opt/module/jdk-21.0.9/bin:$PATH \
$TRINO_HOME/bin/launcher start
脚本
vim /opt/script/xtrino
#!/bin/bash
# Trino 生产启停脚本 (Trino 439)
# 支持: start | stop | status | restart
set -e
# ================== 配置区 ==================
TRINO_HOME="/opt/module/trino-server-439"
JAVA_HOME="/opt/module/jdk-21.0.9"
LOG_FILE="$TRINO_HOME/var/log/launcher.log"
PID_FILE="$TRINO_HOME/var/run/launcher.pid"
# 确保目录存在
mkdir -p "$TRINO_HOME/var/run" "$TRINO_HOME/var/log"
# 设置 PATH
export JAVA_HOME
export PATH="$JAVA_HOME/bin:$PATH"
# ===========================================
LAUNCHER="$TRINO_HOME/bin/launcher"
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
status() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
echo "Trino is running (PID: $PID)"
return 0
else
echo "Trino is not running (stale PID file found)"
rm -f "$PID_FILE"
return 1
fi
else
echo "Trino is not running"
return 1
fi
}
start() {
if status >/dev/null 2>&1; then
log "Start failed: Trino is already running"
exit 1
fi
log "Starting Trino via nohup..."
cd "$TRINO_HOME"
export JAVA_HOME="/opt/module/jdk-21.0.9"
export PATH="$JAVA_HOME/bin:$PATH"
# 使用 nohup 后台启动,并记录 PID
nohup "$LAUNCHER" run > var/log/server.log 2>&1 &
echo $! > "$PID_FILE"
sleep 3
if kill -0 $(cat "$PID_FILE") 2>/dev/null; then
log "Trino started successfully (PID: $(cat $PID_FILE))"
return 0
else
log "ERROR: Trino process died immediately"
rm -f "$PID_FILE"
exit 1
fi
}
stop() {
if ! status >/dev/null 2>&1; then
log "Stop skipped: Trino is not running"
exit 0
fi
log "Stopping Trino..."
"$LAUNCHER" stop
sleep 5
if status >/dev/null 2>&1; then
log "WARNING: Trino did not stop gracefully, killing process..."
kill -9 "$(cat "$PID_FILE")" 2>/dev/null || true
rm -f "$PID_FILE"
fi
log "Trino stopped"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
# 修改脚本权限
sudo chmod 777 /opt/script/xtrino
# 添加一个链接
sudo ln -s -f /opt/script/xtrino /bin/xtrino
使用: xtrino start | stop | status | restart
验证服务
trino客户端
$TRINO_HOME/bin/trino --server http://mydoris:8091

curl
curl -s "http://mydoris:8091/v1/info" | jq .

Web UI
访问 Web UI: http://mydoris:8091

配置 Gravitino Catalog
下载Trino connector:gravitino-trino-connector-1.0.1.tar
cd $TRINO_HOME/plugin
# 上载插件 gravitino-trino-connector-1.0.1.tar.gz
tar -xzf gravitino-trino-connector-1.0.1.tar.gz
mv gravitino-trino-connector-1.0.1 gravitino
创建 Trino Catalog 配置
mkdir -p $TRINO_HOME/etc/catalog
cat > $TRINO_HOME/etc/catalog/gravitino.properties <<EOF
connector.name=gravitino
gravitino.uri=http://mydoris:8090
gravitino.metalake=MyMetalake
EOF
启用 Trino 的 Dynamic Catalog Management
vim $TRINO_HOME/etc/config.properties
# 增加以下内容
catalog.management=dynamic
完整内容如下:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8091
query.max-memory=4GB
query.max-memory-per-node=2GB
discovery.uri=http://localhost:8091
node.environment=production
# 启用动态 catalog 管理(必须)
catalog.management=dynamic
停止:xtrino stop
使用前台方式启动(便于错误分析)
# 前台运行
JAVA_HOME=/opt/module/jdk-21.0.9 \
PATH=/opt/module/jdk-21.0.9/bin:$PATH \
$TRINO_HOME/bin/launcher run
使用client连接测试
$TRINO_HOME/bin/trino --server http://mydoris:8091


被折叠的 条评论
为什么被折叠?



