业界动态
大数据工具之Trino
2024-11-04 06:25

不少人没有听说过Trino,但绝大多数人都听说过Presto,一个基于JVM的MPP计算引擎,Presto是一个高性能的、分布式的大数据SQL查询引擎

大数据工具之Trino

诞生于Facebook(脸书),扬名于Linux基金会

官网:https://trino.io/

广告词Connect Everything(别人总结的,自己的有点长)

从字面意思可以看到它支持的数据源应该是没有限制的,例如:Hadoop、AWS S3、Alluxio、MySQL、Cassandra、Kafka、ES、Kudu、MongoDB、MySQL等等,一句话,就是在市面能看到的存储,它基本上都支持。

Trino没有自己的存储,实现了存储与计算分离,而存储与计算分离的核心就是基于连接器的架构。连接器为Trino提供了连接任意数据源的接口,也可以自定义编程实现连接器

操作系统要求

  • 64位Linux系统
  • 为运行trino的用户提供足够的unlimit。包括trino能够打开的文件描述符,官方推荐以下配置

Java运行时要求

Trino要求使用Java 11 64位版本,最低要求为:11.0.11,注意:不支持Java 8,也不支持 Java 12或者Java 13。Trino官方推荐我们使用Azul Zulu的JDK版本。此处,我们选择较新的11.0.12+7版本。

Python版本要求

版本:2.6.x、2.7.x、或者3.x

当前主流的Liunx系统:Centos 7自带的版本是2.7.5ubuntu16.04自带两个python版本,一个是Python 2.7.12,另一个是Python 3.5.2,够用,如果想折腾另说

节点矩阵

一般来说集群各节点之间都属于局域网环境,把防火墙关了

192.168.137.128节点配置域名映射如下

nodehostnameroleMemory192.168.137.128paratera128coordinator1G192.168.137.129paratera129worker2G192.168.137.130paratera130worker2G

假装Worker给了2G,其实只有一个G(迫于财力,只想说明一点就是coordinator可以只作为协调者有限的资源应该偏向Worker

创建trino用户

我们这里就不创建了,三台机器都用root账号,如果需要的可以通过命令创建并设置权限

节点免密登录

方便后面资料分发和切换操作

安装JDK

zulu11.50.19-ca-jdk11.0.12-linux_x64.tar.gz
下载连接:https://download.csdn.net/download/huxiang19851114/86248146

分发脚本

在这里因为涉及到集群部署,包括安装文件和启动脚本都有很多重复的操作,考虑使用分发脚本的模式,一台配置好后scp过去即可,所以创建一个文件夹把所有trino相关的安装资料都放一块

xync.sh

后续有任何需要同时在三台服务器上执行的操作都可以往这里加

安装Trino

trino-server-359.tar.gz
下载链接:https://download.csdn.net/download/huxiang19851114/86248147

解压配置trino

配置目录将配置如下信息

  • trino节点配置:配置每个trino节点的环境。
  • JVM配置:配置JVM的相关参数。
  • Config属性:配置trino服务器。
  • Catalog属性:配置trino的connector(数据源
配置节点属性

/etc/node.properties

说明

  • node.environment:集群中的所有trino节点都必须由相同的环境名称。必须以小写字母开头,只能包含小写字母、数字和下划线。
  • node.id:安装的trino节点的唯一标识符。每个节点都必须由唯一的标识符。标识符必须以字母数字字符开头,并且只能包含字母数字、- 或 _ 字符。
  • node.data-dir:trino的数据目录,trino会在该目录中存放日志、以及其他数据。
配置JVM

/etc/jvm.config

每个节点可以配置不同的容量,根据自己服务器内存大小量力而行

配置trino服务器

Trino的服务器集群有两种角色:coordinators 和 workers。

Coordinators

  • Trino的coordinator是负责解析语句、计划查询和管理 Trino workers的服务器。它是 Trino 安装的“大脑”,也是客户端连接以提交执行语句的节点。每个 Trino 安装都必须有一名 Trino coordinator以及一名或多名 Trino workers。出于开发或测试目的,可以将 Trino 的单个实例配置为执行这两个角色。
  • coordinator跟踪每个worker的活动并协调查询的执行。coordinator创建涉及一系列阶段的查询的逻辑模型,然后将其转换为在worker集群上运行的一系列连接任务。
  • coordinator使用 REST API 与worker和client进行通信。

Workers

  • worker 负责执行任务和处理数据。worker从连接器获取数据并相互交换中间数据。coordinator负责从worker那里获取结果并将最终结果返回给client。
  • 当 Trino worker进程启动时,它会将自己通告给coordinator中的discovery服务器,这使得 Trino coordinator可以使用它来执行任务。
  • worker使用 REST API 与worker和 Trino coordinator进行通信。

Coordinators配置:/etc/config.properties

Workers配置:/etc/config.properties

配置日志级别

/etc/log.properties

配置connector

catalog可以对应数据schema,可以配置多种语言扩展管理,我们这里配置JMX(Java Management Extensions,即Java管理扩展)意思意思,后续连接不同数据源再创建不同的connector

更新分发脚本
修改Workers节点配置

node.properties修改node.id,与coordinator不同且唯一即可

config.properties修改coordinator=false

config.properties、jvm.config如果资源足够,端口也没有需要修改,可以忽略

paratera129:

paratera130:

一键启停脚本

启停

安装trino cli客户端

trino-cli-359-executable.jar
下载连接:https://download.csdn.net/download/huxiang19851114/86248133

将jar包导入trino安装/bin目录下/trino-cli目录

页面很low,现在因为没有任何任务执行,不是0就是空

连接MySQL

Connector

这种运行时的文件分发另外创建一个脚本

重启trino服务

通过trino-cli查询connector

查询示例

查询MySQL connector 的数据库Schema信息

切换到数据库进行查询操作

灵魂拷问

如果仅仅从以上来看,我们费了半天劲,还是通过MySQL脚本来进行查询,有啥区别,意义何在

我们来看看Trino内部是怎么操作的,我们指导MySQL有个Explain执行计划,同样的,Trino也有一个查询计划,查看查询计划

可以看到两台Workers节点参与查询的信息,可以看到130节点分摊了整个任务的16/17,而129节点是1/17

一共分为两个Stage。第一个执行的Stage是TableScan,第二个直接Output输出,所以查询的落脚点其实就在Stage1,我们点击进去看看

Table Scan并只拉取了一条数据,直接执行了sql语句,然后输出,是不是体现不出Trino查询引擎的强大,甚至完全没必要费这么大劲

一共分为4个Stage执行,对应查询Mysql就是4个任务,限于我本地环境只有两个Workers,且迫于财力,虚拟机分配到的内存(2G,1G,1G)和CPU(单核)资源有限,速度上看不出太多的优点,**灵魂拷问:同一个事情一个人做快还是分成好几个步骤,多个task去做更快?**当然,这个事情应该足够复杂

可以看到Tasks 129,130分别有两个值为1的task,这个其实就是协调器通知的交互线程

我们再看Live Plan图,原理其实很简单,他把这个SQL的操作拆成了三步

第二步:根据条件对两组数据进行聚合

相当于Trino智能给你把查询脚本进行拆分,然后分布到不同的Worker节点进行操作

Live Plan图不够详细的话,可以通过EXPLAIN计划命令查看

解读

  1. 扫描 cluster_user表,Trino自动选择 cluster_id进行hash分区。并且拉取两个字段:cluster_id、$hashvalue_2,这一步包括where条件都是下推到MySQL进行的。
  2. 扫描 cluster表,按照id_0 hash分区,拉取了id,$hashvalue_5。
  3. 拉取完数据后,在本地按照hash值执行shuffle分区。然后执行INNER JOIN操作,按分区执行的------灵魂拷问,这一步还跟MySQL有关吗
  4. 然后对分区的执行结果再聚合计算,计算并输出最终结果。

灵魂拷问:为什么要这么做,不要想得太深奥了,高端的食材往往只需要最简单的烹饪!同样,高深的设计往往都源于最基础的理论

最后来个图说明一下

    以上就是本篇文章【大数据工具之Trino】的全部内容了,欢迎阅览 ! 文章地址:http://sicmodule.glev.cn/news/9050.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 歌乐夫资讯移动站 http://sicmodule.glev.cn/mobile/ , 查看更多   
最新新闻
下调!或迎3年来最大降幅
车主们注意了油价或迎来近三年最大降价幅度▼4月17日油价将迎来新一轮调整, 每升预计下跌0.4—0.42元。 在本轮油价周期内油价由
阳间借命人全章节阅读
最近比较火的一本小说《阳间借命人》,作者是quot;苗棋淼quot;。作品无广告版精彩截取:实木棺材本身就重量不轻,加上一具尸体和
《乌云之上》首播将至!孙俪演技惊艳,刑侦剧又要有王炸了
有一类题材正在悄悄崛起--刑侦剧。从根据真实案例改编的《》到大尺度的《漂白》,这类题材终于在品质上完成了进阶。而接下来待播
五一档电影票房突破2000万,马丽如何成为“水饺皇后”?
五一小长假即将来临,以前我们总是忙着在家打扫卫生、拼命窝在沙发上追剧、不断盯着手机看楼市行情。然而,今年情况明显有所不同
2025五一假期究竟去哪里?揭秘女性最爱的6个旅行目的地!
大城市的不二选择:都市逃离许多姐妹们在选择假期的目的地时,往往第一反应就是去周边大城市,购物、打卡、吃美食,个个都搞得兴
五一档电影预售火热,《水饺皇后》暂居首位
第三财经网2025-04-24 18:21744黄金价格本周创下历史新高,纽约金期货一度触及每盎司3509美元。摩根大通预计,到2025年第四季度
拿下125亿票房后,资本还是出手了,饺子的处境证实了郭德纲的话
导演饺子凭借《哪吒2》成功走上世界之巅,俯瞰着之前所有不好看他的人,殊不知资本也在蠢蠢欲动。没有名气的时候没有人看好他,
适合五一出游的旅行地清单,8大绝美目的地便宜又好玩
春天是四季中最温柔的季节温度舒适宜人花儿也开得正盛最重要的是这个季节还将迎来五一小长假为了能够抓住春天的尾巴不辜负这大好
沙溢回应“美黑”争议!多次被曝出轨,事业却未受影响,独家揭秘他的成名与风波
近日,沙溢因在节目《奔跑吧》中的晒黑表现再次引发热议,成为热门话题。这位喜剧演员在社交平台上晒出自己晒黑的照片,瞬间就引
“巨龙”出街、千人巡游有多震撼?贵州端午“泼水”节告诉你→
棹影斡波飞万剑,鼓声劈浪鸣千雷6月22日12时2023年“水韵贵州”2000余名壮汉光着膀子,穿着大腰裤,头系红绳肩并着肩,动作整齐