AdHoc —— Connect Everything,是我给 Trino 的一个中肯的评价。
也希望通过它,让大家能够对Trino这样一个无比优秀的、而且又有故事的MPP引擎印象深刻。本篇,不讲概念、也不讲原理,只想告诉大家,有一个它,
——也许,你过去看不到关于它铺天盖地的营销、宣传。
——也许,你过去觉得它应用场景不像Spark、Flink,那么丰富。
——也许,你觉得它不像Impala,那么快。但它的社区非常活跃,关注度也非常高。你认为它本没有的功能,但它其实已经有了。
——也许,你觉得它非Apache开源项目出身,但它出身Fackbook,不耽误它碾压大多数的Apache现有顶级项目。也因为它,独立成立一个基金会。
——也许,你只傻傻地把它当成是数仓跑批的引擎。但没有人会忘记它的初衷,没有人阻碍它在全球范围的发展。
Trino,每一个大数据开发都值得拥有。
相信有不少人没有听说过Trino,但绝大多数人都听说过Presto。一个基于JVM的MPP计算引擎。在介绍Trino之前,我们先来简单了解下Presto。我们来看看Presto的产品定位。然后,再来聊聊Trino。


很明显,这期间一定是Presto的开发团队和Facebook有很大的矛盾,然后分道扬镳。
2020年12月,Presto的创始人联合几位主要贡献者联合发布了一篇文章。


Martin它们做出这样的决定是多么无奈。开源社区是一片自由的净土,作为众多开源软件的用户,我相信Trino一定会有更好的未来。
2012年,另一款也非常有名的MPP SQL查询引擎也开始开发了,有很多人说它其实是Google F1的开源版本——Cloudera Impala。2012年10月,Impala公开发发布了一个beta测试版本,2013年5月,正式发布。可以说,Impala对于Hadoop社区来说是非常关键的,因为它不管带来了一个高性能的查询引擎。还发布了名为Parquet面向列的文件格式。2015年,发布了对Kudu存储的支持。
随后,Cloudera公司提议将Kudu与Impala一起捐赠给Apache软件基金会。Impala于2017年11月顺利毕业,称为Apache顶级项目。
我们根据Trino官网的Why Trino来给大家介绍下Trino的key feature。

Trino是一个并行执行、分布式的查询引擎,通过Trino可以构建高效、低延迟的分析系统。
基于Trino可以查询EB级的数据湖、以及海量数据仓库。
基于标准ANSI SQL查询引擎,可以与TableAU、PowerBI、Superset等BI工具配合使用。
可以支持多种场景:
不需要复制数据,直接在hadoop、s3、cassandra、mysql等本地直接分析。
可以在Trino中查询多个系统的数据,例如:将MySQL的数据和Hive中的数据联合查询。
可以将Trino部署在本地集群、或者是云环境。
下载地址:https://repo1.maven.org/maven2/io/trino/trino-server/359/trino-server-359.tar.gz
vim /etc/security/limits.conf
trino soft nofile 131072
trino hard nofile 131072
修改完后,退出当前会话,重新登录即可生效。查看配置是否生效:
su trino
ulimit -a
Trino要求使用Java 11 64位版本,最低要求为:11.0.11,注意:不支持Java 8,也不支持 Java 12或者Java 13。Trino官方推荐我们使用Azul Zulu的JDK版本。此处,我们选择较新的11.0.12+7版本。

下载链接:https://cdn.azul.com/zulu/bin/zulu11.50.19-ca-jdk11.0.12-linux_x64.tar.gz
在每个节点中创建trino用户。
ssh ha-node1 "useradd trino;usermod trino -G hadoop"; \
ssh ha-node2 "useradd trino;usermod trino -G hadoop"; \
ssh ha-node3 "useradd trino;usermod trino -G hadoop"
切换到trino用户,并用按照前面说的操作系统要求配置trino用户能打开的文件描述符。
在第一个节点中配置以下:
[trino@ha-node1 ~]$ ll -hst
总用量 194M
194M -rw-r--r-- 1 root root 194M 7月 25 23:42 zulu11.50.19-ca-jdk11.0.12-linux_x64.tar.gz
# 解压
[trino@ha-node1 ~]$ tar -xvzf zulu11.50.19-ca-jdk11.0.12-linux_x64.tar.gz -C /opt/
# 创建超链接
[trino@ha-node1 ~]$ ln -s /opt/zulu11.50.19-ca-jdk11.0.12-linux_x64/ /opt/jdk11_zulu
[trino@ha-node1 ~]$ ll /opt/ | grep jdk11_zulu
... jdk11_zulu -> /opt/zulu11.50.19-ca-jdk11.0.12-linux_x64/
# 配置环境变量
vim ~/.bashrc
export JAVA_HOME=/opt/jdk11_zulu
export PATH=$JAVA_HOME/bin:$PATH
# 加载环境变量
source ~/.bashrc
# 查看JAVA版本
[trino@ha-node1 jdk11_zulu]$ java -version
openjdk version "11.0.12" 2021-07-20 LTS
OpenJDK Runtime Environment Zulu11.50+19-CA (build 11.0.12+7-LTS)
OpenJDK 64-Bit Server VM Zulu11.50+19-CA (build 11.0.12+7-LTS, mixed mode)
分发到其他节点:
# 切换到root用户(只是为了免密发送文件)
[root@ha-node1 ~]# whoami
root
# 分发文件和环境变量
for node in "ha-node2" "ha-node3";
do
scp -r /opt/zulu11.50.19-ca-jdk11.0.12-linux_x64 $node:/opt
ssh $node "ln -s /opt/zulu11.50.19-ca-jdk11.0.12-linux_x64/ /opt/jdk11_zulu"
ssh $node "chown -R trino:trino /opt/jdk11_zulu"
scp /home/trino/.bashrc $node:/home/trino/
done
测试其他节点JDK11是否配置成功。
for node in "ha-node2" "ha-node3";
do
ssh $node "java -version"
done
[trino@ha-node1 ~]$ ll -hst
总用量 593M
593M -rw-r--r-- 1 root root 593M 7月 25 23:59 trino-server-359.tar.gz
# 解压trino
[trino@ha-node1 ~]$ tar -xvzf trino-server-359.tar.gz -C /opt/
# 创建超链接
[trino@ha-node1 ~]$ ln -s /opt/trino-server-359/ /opt/trino
# 查看链接
[trino@ha-node1 ~]$ ll /opt | awk '$0 ~ /^l/ { if($9 ~ /trino/) print $0 }'
lrwxrwxrwx 1 trino trino 22 7月 26 00:01 trino -> /opt/trino-server-359/
# 创建数据目录
[trino@ha-node1 trino]$ mkdir /opt/trino/data
在安装目录中创建一个etc目录,我们会在该目录中配置以下:
[trino@ha-node1 trino]$ mkdir /opt/trino/etc
以下是一个最简单的配置。
vim /opt/trino/etc/node.properties
node.environment=trino_dev
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node. style="margin: 1.4em 0px; color: rgb(18, 18, 18); font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", "WenQuanYi Micro Hei", sans-serif; font-size: medium; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">说明:node.environment:集群中的所有trino节点都必须由相同的环境名称。必须以小写字母开头,只能包含小写字母、数字和下划线。- dmin/properties-task.html原文链接:
https://zhuanlan.zhihu.com/p/397704152
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26692020/viewspace-3133945/ ,如需转载,请注明出处,否则将追究法律责任。