Trino安装

目录

一、安装配置

1、环境要求

2、下载

3、文件配置

4、访问web ui

二、安装客户端

三、安全设置(http连接,密码文件方式)

1、参数设置

2、代码连接测试

四、配置catalog

五、参数调优


​​​​​​​​​​​​​​

一、安装配置

1、环境要求

注意presto对jdk等版本有要求,具体看官方文档上对应要求,目前最新版为359,要求如下 

(1)jdk11.0.11到12版本之间 

(2)python  2.6.x, 2.7.x, or 3.x

​​​​​​​

2、下载

官网下载包 https://trino.io/download.html 

#解压,解压路径为/usr/install/trino-server-359

tar -zxvf trino-server-359.tar.gz

#进入trino-server-359 创建etc目录

cd trino-server-359

mkdir etc 

3、文件配置

#创建node.properties 

cd etc

vim node.properties

#node.properties文件内容

#环境名称
node.environment=production
#节点id,如果是集群,每台机器的id都必须唯一不一样
node.id=presto-0652
#数据目录
node.data-dir=/usr/install/trino-server-359/data

​​​​​​​​

 #创建etc/jvm.config文件

 vim jvm.config

#jvm.config文件内容

-server
-Xmx32G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:ReservedCodeCacheSize=512M
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=2000000

 #创建/trino-server-359/etc/config.properties

vim config.properties

#config.properties文件内容

#如果是master节点则设置为true,worker节点设置false
coordinator=true
#master节点是否允许调度,如果是单机版,因为只有一台机器,设置为true,集群则master节点设置false
node-scheduler.include-coordinator=true
#http端口
http-server.http.port=8080
#单个查询在集群的最大内存
query.max-memory=16GB
#单个查询在单个节点上的最大用户内存
query.max-memory-per-node=8GB
#单个查询在单个节点上的最大用户和系统内存
query.max-total-memory-per-node=12GB
#发现服务的uri,端口必须跟http-server.http.port一样
discovery.uri=http://192.168.6.52:8080

#最大执行时间,不是必须可不设置
query.max-run-time=600s

#开启web ui界面
web-ui.enabled=true

#创建/trino-server-359/etc/log.properties

vim /log.properties

#log.properties文件内容
#最低级别INFO,还有DEBUG,INFO,WARN,ERROR
io.trino=INFO

#配置catalog

mkdir /usr/install/trino-server-359/etc/catalog

# 创建/trino-server-359/etc/catalog/jmx.properties 

vim jmx.properties

#jmx.properties文件内容
connector.name=jmx

#启动服务,日志查看在node.properties文件配置的node.data-dir参数目录/var/log下

cd /trino-server-359/bin

./launcher start

#启动,该命令可以看见日志

./launcher run

#启动,该命令后台启动

./launcher start

#终止

./launcher stop

#重启

./launcher restart

4、访问web ui

地址:http://192.168.6.52:8080/   

默认账号:admin,无密码

看到以下页面说明启动成功 

二、安装客户端

cd /trino-server-359

wget https://repo1.maven.org/maven2/io/trino/trino-cli/359/trino-cli-359-executable.jar 

mv trino-cli-359-executable.jar trino

chmod +x trino

#连接presto,8080端口跟config.properties配置文件中端口对应

./trino --server localhost:8080 --catalog jmx

能够看见如下图所示,说明连接成功

三、安全设置(http连接,密码文件方式)

1、参数设置

#修改/presto-server-337/etc/config.properties,追加如下内容

http-server.authentication.type=PASSWORD

#创建etc/password-authenticator.properties,内容如下

password-authenticator.name=file
file.password-file=/usr/install/trino-server-359/etc/password.db

password-authenticator.properties文件参数说明

 参数

描述

file.password-file

password文件路径

file.refresh-period

多久加载密码文件,默认5秒一次.

file.auth-token-cache.max-size

缓存密码的最大数量,默认1000.

#创建etc/password.db

touch password.db

#创建名为trino的用户,并设置密码

htpasswd -B -C 10 password.db trino

 这样说明创建成功

2、代码连接测试

<dependency>
    <groupId>io.trino</groupId>
    <artifactId>trino-jdbc</artifactId>
    <version>359</version>
</dependency>

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcClient {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        Class.forName("io.trino.jdbc.TrinoDriver");
        
        String url = "jdbc:trino://192.168.6.52:8080";
        Properties properties = new Properties();
        properties.setProperty("user", "trino");
        properties.setProperty("password", "trino2021");
        properties.setProperty("SSL", "true");
        Connection connection = DriverManager.getConnection(url, properties);
        //能打印connection说明连接正常
        System.out.println(connection);
        if (connection != null) {
            connection.close();
        }
    }
}

PS:Trino原名prestoSql,因为被Facebook抢先注册商标所以改名,prestoSql和trino JDBC连接的驱动是不一样的,其他的配置都差不多。

四、配置catalog

解释:catalog可以理解成是不同的数据源,一个catalog就是一个数据源连接

示例:新增一个mysql类型的catalog

在/trino-server-359/etc/calalog目录下新建test_db.properties文件

文件内容如下

connector.name=test_db
connection-url=jdbc:mysql://10.58.11.15:3306?useSSL=false&useUnicode=true&characterEncoding=UTF-8
connection-user=username
connection-password=password

配置完后重启presto生效

不同类型数据源可以参考官网:https://trino.io/docs/current/connector.html

五、参数调优

presto内存分为系统内存和用户内存,系统内存用于input/output/exchange buffers等,用户内存用于hash join、agg等

参数默认值调优值参数说明所在文件

query.max-memory-per-node

jvm*0.1

jvm*0.25

单个查询在单个节点上的最大用户内存

jvm为jvm.config文件中的Xmx大小,0.25的参数可以根据实际情况调整,如需要并发度比较高的情况,该参数可以设置小一点;遇到单个查询需要内存比较大的情况,可设置大点

config.properties
query.max-total-memory-per-node jvm*0.3query.max-memory-per-node * 1.2

单个查询在单个节点上的最大用户和系统内存

必须大于query.max-memory-per-node

config.properties

query.max-memory

20Gworkers * query.max-memory-per-node单个查询在集群的最大用户内存config.properties
query.max-total-memoryquery.max-memory*2workers * query.max-total-memory-per-node 

单个查询在集群的最大用户和系统内存

必须大于query.max-memory

memory.heap-headroom-per-nodejvm*0.3memory.heap-headroom-per-node < JVM Xmx - query.max-total-memory-per-node 

主要是第三方库的内存分配

官网原文:This is the amount of memory set aside as headroom/buffer in the JVM heap for allocations that are not tracked by Trino.

query.max-execution-time100天根据实际需要设置允许在集群上执行的最大时间,执行时间不包括分析、查询计划或队列中的等待时间config.properties
query.max-planning-time10分钟根据实际需要设置允许在集群上计划执行的最大时间config.properties
query.max-run-time100天根据实际需要设置在集群上处理的最大时间,包括分析、时间、排队等待的时间config.properties
query.max-stage-count100每个查询允许的最大stage数config.properties
query.max-history100最大查询历史config.properties
query.min-expire-age15分钟config.properties
query.low-memory-killer.policytotal-reservation-on-blocked-nodes  Kill策略,杀掉Blocked的最大查询,GENERAL_POOL满了,防止OOMconfig.properties


Xmx

物理内存*0.7jvm最大内存

jvm.config

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值