trino框架官网地址:Trino 418版本 https://trino.io/docs/current/installation/deployment.html
Trino 是一款旨在使用分布式查询高效查询大量数据的工具。如果您处理 TB 或 PB 的数据,您可能会使用与 Hadoop 和 HDFS 交互的工具。Trino 被设计为使用 MapReduce 作业管道(例如 Hive 或 Pig)查询 HDFS 的工具的替代工具,但 Trino 不仅限于访问 HDFS。Trino 可以并且已经扩展到对不同类型的数据源进行操作,包括传统关系数据库和 Cassandra 等其他数据源。
Trino 旨在处理数据仓储和分析:数据分析、聚合大量数据并生成报告。这些工作负载通常被归类为在线分析处理 (OLAP)。
因trino框架默认不支持达梦插件,进行适配后测试发现不同的trino版本都需要编译一下。做不到一次编译,处处使用。
名称 | 版本号 | 备注 |
---|---|---|
Trino | Trino418 | |
DM8 | 1.2.192 | 理论来说对版本没有限制 |
操作系统centos7 | 该框架适配不支持window系统搭建 | |
maven仓库 | 3.6.3+ | 最低3.6.3的版本,不要抱侥幸心理,低版本有的包下不了 |
jdk版本 | zulu17.42.21 | trino官网要求 |
IDEA软件 | 不多赘述,自行安装 |
使用官方推荐64位系统jdk17 Azul Zulu版的jdk https://www.azul.com/downloads/#zulu
不选择这两个按钮,页面下拉选择匹配版本
根据自己的系统选择合适版本,也可以使用压缩包的jdk文件
官网下载地址:https://archive.apache.org/dist/maven/maven-3/
https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
trino的github地址:https://github.com/trinodb/trino/tree/418
我这里用418版本,理论来说适配所有版本,没必要太纠结版本问题
418的下载版本地址:https://github.com/trinodb/trino/archive/refs/tags/418.zip
官方部署教程:https://trino.io/docs/current/installation/deployment.html
修改limits.conf文件的资源限制,并且必须是64位操作系统
vim /etc/security/limits.conf
trino soft nofile 131072
trino hard nofile 131072
trino soft nproc 128000
trino hard nproc 128000
## 1. 创建jdk目录
[root@localhost java]# mkdir /linux_soft
## 2. 将jdk版本文件放到该目录下
[root@localhost java]# ;ll /linux_soft
zulu17.42.21-ca-crac-jdk17.0.7-linux_x64.tar.gz
## 3. 修改配置文件
[root@localhost java]# vi /etc/profile
## ====================
export JAVA_HOME=/linux_soft/jdk17.0.7
export PATH=$PATH:$JAVA_HOME/bin
## ====================
[root@localhost java]# source /etc/profile ## 使更改的配置立即生效
## 4. 将/lib64下的java换掉
[root@localhost java]# ln -s /linux_soft/jdk17.0.7/bin/java /usr/lib64/java
## 5. 查询版本
[root@localhost linux_soft]# /linux_soft/jdk17.0.7/bin/java -version
openjdk version "17.0.7" 2023-04-18 LTS
OpenJDK Runtime Environment Zulu17.42+21-CRaC-CA (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.42+21-CRaC-CA (build 17.0.7+7-LTS, mixed mode, sharing)
## 1. 将maven文件放到该目录下
[root@localhost java]# ll /linux_soft
## 2. apache-maven-3.6.3-bin.zip放到该目录下
[root@localhost linux_soft]# ll apache-maven-3.6.3-bin.zip
[root@localhost java]# vi /etc/profile
## ====================
export MAVEN_HOME="/linux_soft/apache-maven-3.6.3"
export JAVA_HOME=/linux_soft/jdk17.0.7
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
## ====================
[root@localhost java]# source /etc/profile ## 使更改的配置立即生效
## 3.查询mvn版本是否有误
[root@localhost linux_soft]# mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /linux_soft/apache-maven-3.6.3
Java version: 17.0.7, vendor: Azul Systems, Inc., runtime: /linux_soft/jdk17.0.7
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
## 创建repo的地址
[root@localhost java]# mkdir /linux_soft/apache-maven-3.6.3/repo
## 修改配置文件 看不懂的话看资料包中的settings.xml文件
[root@localhost java]# /linux_soft/apache-maven-3.6.3/conf/settings.xml
<localRepository>/linux_soft/apache-maven-3.6.3/repolocalRepository>
<mirrors>
<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
mirror>
mirrors>
##新建目录,并将trino文件传到该目录下
[root@localhost trino_src]# mkdir /trino_src
[root@localhost trino_src]# cd /trino_src
[root@localhost trino_src]# ll trino-418.zip
-rw-r--r--. 1 root root 65879229 6月 28 19:35 trino-418.zip
## 解压
[root@localhost trino_src]# unzip trino-418.zip
[root@localhost trino-418]# cd /trino_src/trino-418
##开始构建项目,这一步受到网络影响特别严重,当时测试构建项目花了4个小时
[root@localhost trino-418]# ./mvnw clean install -DskipTests
如果项目一直install 失败,可以在根pom.xml中指定个国内数据源试试,方法如下
<repositories>
<repository>
<id>aliyun1id>
<url>https://maven.aliyun.com/repository/public/url>
repository>
<repository>
<id>aliyun2id>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
repository>
<repository>
<id>tencent1id>
<url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/url>
repository>
<repository>
<id>gw1id>
<url>http://search.maven.orgurl>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>tencentid>
<url>https://mirrors.cloud.tencent.com/nexus/repository/maven-public/url>
pluginRepository>
pluginRepositories>
运行项目前需要新建多个配置文件,**在整个项目中,启动类是testing->trino-server-dev目录下的DevelopmentServer类,需要读取的配置文件也就是etc目录,所以配置文件都是在trino-server-dev模块下。**目录结构是这样的
etc
|-->node.properties
|-->jvm.config
|-->config.propoerties
|-->log.propoerties
|-->catalog
|-->testmysql.properties
|-->dameng.properties
[root@localhost etc]# cd /trino_src/trino-418/testing/trino-server-dev/etc
[root@localhost etc]# mkdir /trino_src/trino_data
[root@localhost etc]# vim node.properties
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/trino_src/trino_data
[root@localhost etc]# cd /trino_src/trino-418/testing/trino-server-dev/etc
[root@localhost etc]# vim jvm.config
-server
-Xmx4G
-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=200000
-XX:+UnlockDiagnosticVMOptions
-XX:+UseAESCTRIntrinsics
# Disable Preventive GC for performance reasons (JDK-8293861)
-XX:-G1UsePreventiveGC
[root@localhost etc]# cd /trino_src/trino-418/testing/trino-server-dev/etc
[root@localhost etc]# vim config.properties
http-server.http.port=8080
discovery.uri=http://localhost:8080
exchange.http-client.max-connections=1000
exchange.http-client.max-connections-per-server=1000
exchange.http-client.connect-timeout=1m
exchange.http-client.idle-timeout=1m
scheduler.http-client.max-connections=1000
scheduler.http-client.max-connections-per-server=1000
scheduler.http-client.connect-timeout=1m
scheduler.http-client.idle-timeout=1m
query.client.timeout=5m
query.min-expire-age=30m
plugin.bundles=\
../../plugin/trino-resource-group-managers/pom.xml,\
../../plugin/trino-password-authenticators/pom.xml, \
../../plugin/trino-iceberg/pom.xml,\
../../plugin/trino-delta-lake/pom.xml,\
../../plugin/trino-blackhole/pom.xml,\
../../plugin/trino-cassandra/pom.xml,\
../../plugin/trino-memory/pom.xml,\
../../plugin/trino-jmx/pom.xml,\
../../plugin/trino-raptor-legacy/pom.xml,\
../../plugin/trino-hive-hadoop2/pom.xml,\
../../plugin/trino-hudi/pom.xml,\
../../plugin/trino-example-http/pom.xml,\
../../plugin/trino-kafka/pom.xml, \
../../plugin/trino-tpch/pom.xml, \
../../plugin/trino-local-file/pom.xml, \
../../plugin/trino-mysql/pom.xml,\
../../plugin/trino-mariadb/pom.xml,\
../../plugin/trino-singlestore/pom.xml,\
../../plugin/trino-sqlserver/pom.xml, \
../../plugin/trino-prometheus/pom.xml, \
../../plugin/trino-postgresql/pom.xml, \
../../plugin/trino-thrift/pom.xml, \
../../plugin/trino-tpcds/pom.xml, \
../../plugin/trino-google-sheets/pom.xml, \
../../plugin/trino-druid/pom.xml, \
../../plugin/trino-geospatial/pom.xml, \
../../plugin/trino-http-event-listener/pom.xml, \
../../plugin/trino-exchange-filesystem/pom.xml, \
../../plugin/trino-exchange-hdfs/pom.xml, \
../../plugin/trino-mysql-event-listener/pom.xml
node-scheduler.include-coordinator=true
[root@localhost etc]# cd /trino_src/trino-418/testing/trino-server-dev/etc
[root@localhost etc]# vim config.properties
io.trino=INFO
# show classpath for plugins
io.trino.server.PluginManager=DEBUG
# Maven plugin loading code
com.ning.http.client=WARN
#在etc目录下新建catalog目录 存放数据源
[root@localhost etc]# mkdir -p /trino_src/trino-418/testing/trino-server-dev/etc/catalog
# 新建mysql数据源用于测试
[root@localhost catalog]# vim testmysql.properties
connector.name=mysql
connection-url=jdbc:mysql://XXX.XXX.103.235:3306
connection-user=root
connection-password=Gas123.
新版本新点击修改选项 -> 添加VM选项 (注意:修改的是jvm参数 不是环境变量,不要填错了)
工作目录一定要填 M O D U L E D I R MODULE_DIR MODULEDIR
-ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties
修改后,运行成功
http://192.168.145.192:8080/ui/login.html
默认账号:admin,无密码
测试连接的话,使用jar包进行测试,https://trino.io/docs/current/client/cli.html
[root@localhost linux_soft]# /linux_soft/jdk17.0.7/bin/java -jar trino-cli-418-executable.jar --server 127.0.0.1:8080
## testmysql.test_decimal.test_decimal 这句解释一下
## 1. testmysql这个是新建catalog目录下新建mysql数据源testmysql.properties名称
## 2. 第一个test_decimal 这个是mysql数据库中的库
## 3. 第二个test_decimal 这个是mysql数据库中的表
trino> CREATE TABLE testmysql.test_decimal.test_decimal (delta decimal);
Query 20230726_070904_00001_fx5ti failed: line 1:1: Table 'testmysql.test_decimal.test_decimal' already exists
CREATE TABLE testmysql.test_decimal.test_decimal (delta decimal)
trino> drop table testmysql.test_decimal.test_decimal;
DROP TABLE
trino> CREATE TABLE testmysql.test_decimal.test_decimal (delta decimal);
CREATE TABLE
trino>
在IDEA的源码中直接将代码的插件包放到/trino_src/trino-418/plugin/目录下,然后导入trino-dameng模块
换成你的trino框架中实际的版本,如果是422则换成422即可
##跳过doc 以及 test
[root@localhost trino-418]# cd /trino_src/trino-418
[root@localhost trino-418]# ./mvnw -pl '!docs' clean install -DskipTests
##mvn -pl '!docs' clean install -DskipTests=true -DfailIfNoTests=false
[root@localhost catalog]# pwd
/trino_src/trino-418/testing/trino-server-dev/etc/catalog
[root@localhost catalog]# cat dameng.properties
connector.name=dameng
connection-url=jdbc:dm://XXX.XXX.177.169:5236
connection-user=SYSDBA
connection-password=SYSDBA
[root@localhost linux_soft]# /linux_soft/jdk17.0.7/bin/java -jar trino-cli-418-executable.jar --server 127.0.0.1:8080
trino> CREATE TABLE testmysql.test_decimal.test_decimal (delta decimal);
Query 20230726_070904_00001_fx5ti failed: line 1:1: Table 'testmysql.test_decimal.test_decimal' already exists
CREATE TABLE testmysql.test_decimal.test_decimal (delta decimal)
trino> drop table testmysql.test_decimal.test_decimal;
DROP TABLE
trino> CREATE TABLE testmysql.test_decimal.test_decimal (delta decimal);
CREATE TABLE
trino> drop table dameng.SYSDBA.test_decimal;
DROP TABLE
trino> CREATE TABLE dameng.SYSDBA.test_decimal (delta decimal);
CREATE TABLE
trino>
[root@localhost java]# vi /etc/profile
## ====================
export MAVEN_HOME="/linux_soft/apache-maven-3.6.3"
export JAVA_HOME=/linux_soft/jdk17.0.7
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
## ====================
[root@localhost java]# source /etc/profile ## 使更改的配置立即生效
[root@localhost java]# java -version ## 查看JDK版本信息,如果显示出1.8.0证明成功
ln -s /linux_soft/jdk17.0.7/bin/java /usr/lib64/java
https://trino.io/docs/current/installation/deployment.html
-ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties
etc
|-->node.properties
|-->jvm.config
|-->config.propoerties
|-->catalog
|-->sqlserver.properties
新版本新点击修改选项 -> 添加VM选项 (注意:修改的是jvm参数 不是环境变量,不要填错了)
运行成功
解决方案
将trino-dameng中的pom版本调整为实际使用的版本号
链接:https://pan.baidu.com/s/13EFe8Of3AIhyWTH3GHzVBw?pwd=nema
提取码:nema