一聚教程网:一个值得你收藏的教程网站

热门教程

Linux怎样安装Trino分布式查询引擎

时间:2026-06-24 08:02:52 编辑:袖梨 来源:一聚教程网

Trino 在 Linux 上需满足 Java 17.0.3+(64 位)、ulimit 调高至 131072、专用用户、node.id 唯一、node.environment 一致等条件才能成功启动。

Trino 在 Linux 上能直接跑起来,但默认配置下大概率会启动失败——不是 Java 版本不对,就是 ulimit 太低,或者 node.id 重复。别急着解压完就 bin/launcher start,先卡住这几个关键点。

确认 Java 17(且必须是 64 位)

Trino 400+ 版本只认 JDK 17.0.3 及以上,Java 8/11/18/19 都不支持。用 java -version 检查输出里必须带 17.x64

openjdk version "17.0.7" 2023-04-18OpenJDK Runtime Environment Zulu17.32+13-CA (build 17.0.7+7-LTS)OpenJDK 64-Bit Server VM Zulu17.32+13-CA (build 17.0.7+7-LTS, mixed mode, sharing)
  • 推荐用 Azul Zulu JDK,官方 Docker 镜像和 CI 测试都基于它,避免 JVM 层面的兼容性抖动
  • 别用系统包管理器装的 OpenJDK(比如 Ubuntu 的 openjdk-17-jre),它可能缺 javac 或 JFR 支持,bin/launcher 启动时会静默失败
  • JAVA_HOME 必须设对,且 $JAVA_HOME/bin 要在 $PATH 前面,否则 bin/launcher 可能调错 Java

调高 ulimit 并绑定专用用户

Trino Worker 打开的文件描述符数 ≈ 节点数 × 并发查询数 × 每个查询涉及的分片数。默认 ulimit -n 是 1024,跑两三个查询就触发 Too many open files 错误,进程直接退出。

  • 新建专用用户,比如 useradd -m trino,别用 root 或普通开发账号跑
  • 编辑 /etc/security/limits.conf,追加四行(注意空格不能用 tab):
    trino soft nofile 131072
    trino hard nofile 131072
    trino soft nproc 131072
    trino hard nproc 131072
  • 改完必须重新登录 trino 用户,或重启 systemd-logind,再执行 ulimit -n 确认输出是 131072

配置三个核心文件:node.properties、jvm.config、config.properties

Trino 启动失败,80% 出在 etc/ 下这三个文件漏配、错配或路径不对。它们必须全在 etc/ 目录下,不能放在子目录里。

  • node.properties:每台机器唯一,node.id 必须全局不重复(建议用 uuidgen 生成),node.data-dir 路径要存在且 trino 用户有读写权限
  • jvm.config:至少包含 -Xmx4G(Coordinator 推荐 8G+),-XX:+UseG1GC-Djdk.attach.allowAttachSelf=true(否则 Web UI 无法连 JVM)
  • config.properties:Coordinator 必须设 coordinator=truediscovery-server.enabled=true;Worker 则设 coordinator=falsediscovery.uri=http://coordinator-host:8080;端口别被占用,http-server.http.port=8080 是默认值,可改但别用 80(需 root)或 443

启动前检查 data-dir 权限和 catalog 连接器路径

即使配置全对,bin/launcher startbin/launcher status 显示 “not running”,大概率是 node.data-dir 不可写,或 etc/catalog/ 下某个 .properties 文件语法错误(比如多了一个空格、少了个换行)。

  • 确保 node.data-dir 所在磁盘剩余空间 ≥ 5GB,且 chown -R trino:trino /path/to/data
  • etc/catalog/ 下每个 .properties 文件名就是 catalog 名(如 hive.properties → catalog 名为 hive),文件内 connector.name= 值必须拼写准确(hive 不是 Hivemysql 不是 MySQL
  • 启动后立刻看日志:tail -f var/log/server.log,重点关注 ERROR 行,常见报错如 Failed to create injector(配置缺失)、Cannot assign requested addressdiscovery.uri 域名没解析)

最易被忽略的是:Coordinator 和 Worker 的 node.environment 值必须完全一致,大小写敏感,且只能含小写字母、数字和下划线——配错一个字符,Worker 就注册不上,Web UI 里永远只看到 1 个节点。

热门栏目