- 帮助 Trino 新手在本地编译源码
- 在 Idea 中启动一个 Trino server
- 通过 Trino-cli 提交一个查询到集群
- 为后续的 Trino debug 以及源码阅读做准备
Trino 是一个 MPP(大规模并行处理) 架构的内存型 OLAP 引擎,注意它只是一个查询引擎,并不是一个数据库,因为 Trino 不存储数据。通过 connector 机制可以获取多种数据源的数据,比如 Trino-hive 这个 connector 就可以获取到 Hive 表的数据。
Trino 主要适用于 Adhoc 查询(即席查询),主要应用场景是数据分析,你可以根据自己的需求写 SQL,查询任何你想查询的数据(前提是你得有权限[手动狗头])。
Trino 是一个典型的 Master-Slave (主从)架构的计算框架,负责接收用户请求的是 Coordinator,干苦力活的叫 worker。
首先通过 git 下载代码(默认大家已经会用 git 以及 maven)
git clone git@github.com:trinodb/trino.git
cd trino
然后使用 maven 进行编译 编译过程中跳过 docs,否则会报错
mvn -pl '!docs' clean install -DskipTests
此时编译完就可以按照 github 上的提醒进行 full-server 的启动。
我接下来的操作几乎都是对 github 上 README 的翻译
要启动的类在,此时启动的是 Trino 的 Coordinator 进程
testing/trino-server-dev/src/main/java/io/trino/server/DevelopmentServer
然后配置选项按照 github 上面的配置来,我使用的是新版 idea,VM Options 可以在下图的 Modify options 里面添加
- Main Class:
io.trino.server.DevelopmentServer
- VM Options:
-ea -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties -Djdk.attach.allowAttachSelf=true
- Working directory:
$MODULE_DIR$
- Use classpath of module:
trino-server-dev
此时所有的配置都完成了,就可以在本机上启动一个 Trino 进程
出现 SERVER STARTED 就说明启动成功了
默认的服务端口号是 8080,在浏览器输入 localhost:8080 就可以访问 Trino 的简易 web 页面
此时我们的 Trino server 就已经启动成功了
接下来可以通过 Trino 自带的 cli 向 Server 提交查询
/Users/shenjinxin/github/trinoDebug/client/trino-cli/target
执行命令启动 Trino 的cli
./trino-cli-356-executable.jar --server http://127.0.0.1:8080
出现 trino 的小标志就说明成功了
我在这里提交了一个查询,show catalogs; 可以查看此时有哪些数据源
同时在 web 页面上也可以看到我们提交的任务
红框里面的是 QueryId ,每个 ID 都是独一无二的,与我们 cli 界面的 QueryId 保持一致
至此我们已经在本地搭建起了 Trino 的 Server,同时也可以使用 cli 向 Trino Server 提交查询,并且查询成功
大家可以思考几个问题
- 为什么只启动了 Coordinator 进程,没有启动 Worker 进程也可以进行查询
- Trino 的 web 页面上可以得到什么信息
- MPP 架构的 OLAP 与预计算 OLAP 的差异是什么,适用于什么场景
- 原文链接:https://zhuanlan.zhihu.com/p/373609379
- 原文链接: