RHEL 9 계열에 Trino 483[1] 을 바이너리 tar 로 올린다. Kubernetes(Helm) · Docker · RPM 패키지 배포도 있지만 여기서는 tar 기준이다. sudo 권한이 필요하다.
구성은 coordinator 1대 + worker N대다. 한 대로 시험할 때는 coordinator 가 worker 역할을 겸한다.
| 항목 | 요구 |
|---|---|
| OS | 64비트 Linux. 컨테이너에서는 최신 커널 권장 |
| Java | Java 25, 25.0.1 이상. Eclipse Temurin 권장. 8 · 11 · 17 · 21 · 24 로는 뜨지 않는다 |
| Python | 필요 없다. 483 의 bin/launcher 는 셸 스크립트다 |
| ulimit | nofile 131072 · nproc 128000 |
sudo useradd -r -m -d /home/trino -s /bin/bash trino
/etc/security/limits.d/trino.conf 에 넣는다. 자세한 것은 ulimit 수정.
trino soft nofile 131072
trino hard nofile 131072
trino soft nproc 128000
trino hard nproc 128000
RHEL 9 저장소에는 아직 Java 25 가 없다. Adoptium 저장소를 등록해 Temurin 을 설치한다.
sudo tee /etc/yum.repos.d/adoptium.repo > /dev/null <<'REPO'
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/rhel/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
REPO
sudo dnf install -y temurin-25-jdk
java -version
java -version 이 25.0.1 이상을 찍어야 한다.
sudo mkdir -p /opt/apps
cd /opt/apps
sudo curl -LO https://repo1.maven.org/maven2/io/trino/trino-server/483/trino-server-483.tar.gz
sudo tar -xzf trino-server-483.tar.gz
sudo ln -s /opt/apps/trino-server-483 /opt/trino
sudo mkdir -p /opt/trino/etc/catalog /var/trino/data /var/log/trino
sudo chown -R trino:trino /opt/apps/trino-server-483 /var/trino /var/log/trino
CLI 도 같이 받아 둔다.
sudo curl -L -o /usr/local/bin/trino https://repo1.maven.org/maven2/io/trino/trino-cli/483/trino-cli-483-executable.jar
sudo chmod +x /usr/local/bin/trino
전부 /opt/trino/etc/ 아래에 둔다. 파일별 역할과 TLS · 인증은 Trino 설정 과 Trino 인증 에 있다.
노드마다 node.id 가 달라야 한다. 재시작해도 값이 바뀌면 안 된다.
node.environment=production
node.id=trino01
node.data-dir=/var/trino/data
공식 권장값이다[2]. -Xmx 는 물리 메모리의 70~80% 로 맞춘다.
-server
-Xmx16G
-XX:InitialRAMPercentage=80
-XX:MaxRAMPercentage=80
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000
--add-modules=jdk.incubator.vector
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
discovery.uri=http://trino01.example.net:8080
coordinator=false
http-server.http.port=8080
discovery.uri=http://trino01.example.net:8080
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://localhost:8080
메모리 한도는 필요할 때만 넣는다. 기본값은 query.max-memory-per-node 가 JVM 힙의 30%, query.max-memory 가 20GB 다.
query.max-memory=50GB
query.max-memory-per-node=4GB
io.trino=INFO
카탈로그가 하나도 없으면 뜨기는 하지만 쓸 데가 없다. 시험용으로 TPC-H 를 넣는다.
# etc/catalog/tpch.properties
connector.name=tpch
bin/launcher 는 run(전경) · start(데몬) · stop · restart · status 를 지원한다. systemd 로 감싼다.
sudo tee /etc/systemd/system/trino.service > /dev/null <<'UNIT'
[Unit]
Description=Trino
After=network.target
[Service]
Type=forking
User=trino
Group=trino
Environment=JAVA_HOME=/usr/lib/jvm/temurin-25-jdk
Environment=PATH=/usr/lib/jvm/temurin-25-jdk/bin:/usr/bin:/bin
ExecStart=/opt/trino/bin/launcher start
ExecStop=/opt/trino/bin/launcher stop
PIDFile=/opt/trino/var/run/launcher.pid
Restart=on-failure
LimitNOFILE=131072
LimitNPROC=128000
[Install]
WantedBy=multi-user.target
UNIT
sudo systemctl daemon-reload
sudo systemctl enable --now trino
JAVA_HOME 은 readlink -f $(which java) 로 확인한 실제 경로로 맞춘다.
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
TLS 를 켜면 8443 도 연다.
sudo systemctl status trino
tail -f /opt/trino/var/log/server.log
curl -s http://localhost:8080/v1/info
server.log 에 SERVER STARTED 가 찍히면 뜬 것이다. CLI 로 질의한다.
trino --server http://localhost:8080 --catalog tpch --schema tiny
SELECT count(*) FROM nation;
SELECT * FROM system.runtime.nodes;
system.runtime.nodes 에 워커가 모두 active 로 보이면 클러스터가 완성된 것이다. 웹 UI 는 http://trino01.example.net:8080/ui/ 다.
Java 23 이 필요했다. 설치 순서는 위와 같고 jvm.config 에 --add-modules=jdk.incubator.vector 줄이 없었다. 다운로드 경로는 번호만 바꾸면 된다 — https://repo1.maven.org/maven2/io/trino/trino-server/465/trino-server-465.tar.gz.
Java 17 로 떴다. bin/launcher 가 Python 스크립트라 python3 와 /usr/bin/python 심볼릭 링크가 필요했다. Kudu 등 옛 커넥터를 쓸 때 jvm.config 에 -Djava.security.manager=allow 를 넣었다.
위 버전과 저장소는 오래된 것이라 저장소가 존재하지 않을 수 있다.
최신 버전 483 — 2026-09-20 확인. https://github.com/trinodb/trino/releases/latest ↩︎
Deploying Trino — JVM config. https://trino.io/docs/current/installation/deployment.html ↩︎