联邦查询神器Trino初体验 →

作者:微信小助手

发布时间:2024-02-11T09:55:20

Trino是一个分布式SQL查询引擎,设计用来查询大规模的数据集存储在Hadoop、SQL和NoSQL数据库、对象存储等多种数据源中。它支持跨多个数据源的联合查询,对数据的位置透明,使得用户可以在一个系统中分析所有的数据。Trino的设计目标是提供快速(即时)的分析查询,它使用了许多优化技术来实现高查询性能。

Trino官网:https://trino.io/

Trino目前支持的数据源包括AccumuloAtopBigQueryBlack HoleCassandraClickHouseDelta LakeDruidElasticsearchGoogle SheetsHiveHudiIcebergIgniteJMXKafkaKinesisKuduLocal FileMariaDBMemoryMongoDBMySQLOpenSearchOraclePhoenixPinotPostgreSQLPrometheusRedisRedshiftSingleStoreSQL ServerSystemThriftTPCDSTPCH

本文介绍trino安装及使用Trino进行联邦查询mysqlsqlserver中的数据。

1.Trino安装

1.1 设置java17

Trino 400 需要 64 位版本的 Java 17,最低版本要求为 17.0.3。早期的主要版本(例如 Java 8 Java 11)不起作用。

如果你安装的是java8,可以使用以下方式同时安装java17+

update-alternatives --install /usr/bin/java java /opt/software/jdk-18/bin/java 1

其中 /opt/software/jdk-18 是jdk-18的安装目录

需要切换到jdk-18可以使用update-alternatives --config java 命令进行切换,选择对用的jdk版本就可以

1.2 安装python2.6+

这里建议使用anaconda安装

https://mp.weixin.qq.com/s/PWaPQhftDnd64mHn-W3X9Q

https://mp.weixin.qq.com/s/FC1QyWvzpWNUwAS7QS62RQ

1.3 下载Trino

下载地址:https://repo.maven.apache.org/maven2/io/trino/trino-server/

1.4 解压Trino

tar -zxvf trino-server-392.tar.gz -C /opt/software

1.5 配置 Trino

在安装目录中创建一个etc目录,我们会在该目录中配置以下:

trino节点配置:配置每个trino节点的环境。

JVM配置:配置JVM的相关参数。

Config属性:配置trino服务器。

Catalog属性:配置trinoconnector(数据源)

1.5.1 创建配置目录

mkdir /opt/software/trino-server-392/etc

1.5.2 配置节点属性

vi etc/node.properties# 环境的名字。集群中所有的Trino节点必须具有相同的环境名称。node.environment=test# 此Trino安装的唯一标识符。这对于每个节点都必须是唯一的。node.id=ffffffff-ffff-ffff-ffff-ffffffffffff# 数据目录的位置(文件系统路径)。Trino在这里存储日志和其他数据。node.data-dir=/opt/software/trino/data

1.5.3 JVM配置

每个节点可以配置不同的容量,根据服务器实际性能进行修改

vi etc/jvm.config-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-XX:+UnlockDiagnosticVMOptions-XX:+UseAESCTRIntrinsics# Disable Preventive GC for performance reasons (JDK-8293861)-XX:-G1UsePreventiveGC

1.5.4 配置Trino服务器

vi etc/config.properties#如果您要设置一台机器进行测试,它既充当协调器又充当工作人员,请使用以下配置:coordinator=truenode-scheduler.include-coordinator=truehttp-server.http.port=8080discovery.uri=http://192.168.31.128:8080

1.5.5 配置日志级别

设置日志级别,有四个级别:DEBUG, INFO, WARN and ERRORvi etc/log.propertiesio.trino=INFO

1.5.6 配置trino catalog

Trino访问数据通过connector,它配置在catalog目录内,我们创建etc/catalog目录

mysql源配置如下,我们在catalog目录下创建mysql.properties

sqlserver源配置如下,我们在catalog目录下创建sqlserver.properties

不同的数据源参考这里https://trino.io/docs/current/connector.html

mkdir etc/catalogvi etc/catalog/mysql.propertiesconnector.name=mysqlconnection-url=jdbc:mysql://192.168.154.128:3306?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=UTCconnection-user=rootconnection-password=Admin@123

vi etc/catalog/sqlserver.propertiesconnector.name=sqlserverconnection-url=jdbc:sqlserver://192.168.154.128:1433;databaseName=exampledb;encrypt=falseconnection-user=saconnection-password=Wuzongyun0!

2 Trino启动命令

启动/关闭/查看运行状态

bin/launcher startbin/launcher stopbin/launcher status访问trino web页面

http://192.168.154.128:8080/

名称自定义,第一次输入什么,以后就用什么用户登录

3 安装Trino客户端

3.1 安装trino客户端

下载地址https://repo1.maven.org/maven2/io/trino/trino-cli/392/trino-cli-392-executable.jar

将其重命名为trino,使用 使其可执行 ,然后运行它以显示

mv trino-cli-392-executable.jar trino-clichmod +x trino-cli

3.1 启动trino客户端

./trino-cli --server 192.168.154.128:8080

#常用命令#显示所有的catalogshow catalogs;

#查看所有的schemasshow schemas from mysql;

#退出客户端quit;

4 使用dbeaver操作trino

为了可以更方便的使用trino,可以使用dbeaver链接trino进行数据处理

4.1 下载 jdbc驱动

下载地址https://repo.maven.apache.org/maven2/io/trino/trino-jdbc/trino-jdbc-392.jar

4.2 dbeaver 安装 trino驱动(如果dbeaver没有trino驱动)

数据库->驱动管理器->新建

编辑信息:驱动名称、驱动类型、类名、URL模板、端口

添加文件:选择到下载下来的jar

找到类:选择驱动类

4.3 dbeaver链接trino

填写jdbc-url、主机、端口、用户名

4.4 查询数据

关联mysql中的数据和sqlserver中的数据进行联邦查询

select * from mysql.x2ddl.x2ddl datamapping a inner join sqlserver.cdc.captured columns b on a.id = b.object id ;

查看执行任务详情,进入网页端

点击任务ID