作者:微信小助手
发布时间:2024-02-11T09:55:20
Trino是一个分布式SQL查询引擎,设计用来查询大规模的数据集存储在Hadoop、SQL和NoSQL数据库、对象存储等多种数据源中。它支持跨多个数据源的联合查询,对数据的位置透明,使得用户可以在一个系统中分析所有的数据。Trino的设计目标是提供快速(即时)的分析查询,它使用了许多优化技术来实现高查询性能。
Trino目前支持的数据源包括Accumulo、Atop、BigQuery、Black Hole、Cassandra、ClickHouse、Delta Lake、Druid、Elasticsearch、Google Sheets、Hive、Hudi、Iceberg、Ignite、JMX、Kafka、Kinesis、Kudu、Local File、MariaDB、Memory、MongoDB、MySQL、OpenSearch、Oracle、Phoenix、Pinot、PostgreSQL、Prometheus、Redis、Redshift、SingleStore、SQL Server、System、Thrift、TPCDS、TPCH。
本文介绍trino安装及使用Trino进行联邦查询mysql和sqlserver中的数据。
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属性:配置trino的connector(数据源)
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=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://192.168.31.128:8080
1.5.5 配置日志级别
设置日志级别,有四个级别:DEBUG, INFO, WARN and ERROR
vi etc/log.properties
io.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/catalog
vi etc/catalog/mysql.properties
connector.name=mysql
connection-url=jdbc:mysql://192.168.154.128:3306?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
connection-user=root
connection-password=Admin@123
vi etc/catalog/sqlserver.properties
connector.name=sqlserver
connection-url=jdbc:sqlserver://192.168.154.128:1433;databaseName=exampledb;encrypt=false
connection-user=sa
connection-password=Wuzongyun0!
2 Trino启动命令
启动/关闭/查看运行状态
bin/launcher start
bin/launcher stop
bin/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-cli
chmod +x trino-cli
3.1 启动trino客户端
./trino-cli --server 192.168.154.128:8080
#常用命令
#显示所有的catalog
show catalogs;
#查看所有的schemas
show 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