一、trino406系列 之 trino不是什么?trino是什么?
创始人
2025-06-01 19:01:19
0

文章目录

  • 前言
  • Trino不是什么?
  • Trino是什么?
  • 概览
  • 服务类型
    • Coordinator
    • worker
  • 数据源
    • connector
    • catalog
    • schema
    • table
  • 查询执行模型
    • Statement
    • Query
    • Stage
    • Task
    • Split
    • Driver
    • Operator
    • Exchange

trino官网 https://trino.io/docs/407/client/cli.html
请注意:《Trino:权威指南》和研究论文《Presto: SQL on Everything》可以提供关于Trino和正在使用的概念的进一步信息。

前言

flink文章暂且放一放(视需求决定是否在继续更新,因为现在工作中暂时没有用到flink,纯粹是业务时间搞,正好最近生活压力也比较大,暂时放一放),最近在搞trino(trino之前叫presto),欢迎大家一起交流。
Trino是一个分布式SQL查询引擎,用于查询分布在一个或多个异构数据源上的大型数据集。

Trino不是什么?

由于Trino被社区的许多成员称为数据库,因此从定义Trino不是什么开始是有意义的。不要误解Trino理解SQL的事实,因为它提供了标准数据库的特性。Trino不是通用关系数据库。它不是MySQL、PostgreSQL或Oracle等数据库的替代品。Trino不是为处理在线事务处理(OLTP)而设计的。对于许多其他为数据仓库或分析而设计和优化的数据库也是如此。

Trino是什么?

trino是被用来设计大数据量异构查询的工具,如果你的数据量级是TGB或者PGB,你很容易会使用hadoop进行交互式查询。trino被设计为使用mapreduce作业管道(如hive和pig)查询hdfs的工具的替代方案,但trino并不仅限于HDFS。trino已经可以扩展到其它数据源介质进行操作,包括传统的关系型数据库(mysql,pg等)和其它数据源(比如Cassandra)。

trino被设计的目的是处理数据仓库且对其进行分析:数据分析,大数据量聚合和产出报告。这些工作负载通常被归类为在线分析处理(OLAP)。

概览

为了理解trino,你必须首先通过trino的doc文档理解它的条款以及概念。虽然理解语句和查询很容易,

  • 作为最终用户,您应该熟悉stages和splits等概念,以便充分利用Trino执行有效的查询;
  • 作为Trino管理员或贡献者,您应该了解Trino的阶段概念如何映射到任务,以及任务如何包含一组处理数据的驱动程序。

服务类型

trino服务有两种类型:coordinators和workers。 下面来介绍一下两者的区别。

Coordinator

Trino的coordinator是负责解析语句、规划查询和管理Trino工作节点的服务器。它是Trino安装的“大脑”,也是客户端连接到其上提交语句以执行的节点。每个Trino集群安装都必须有一个Trino coordinator和一个或多个Trino worker。出于开发或测试的目的,可以配置Trino的单个实例来执行这两个角色。

coordinator跟踪每个worker上的活动,并协调查询的执行。coordinator创建一个涉及一系列阶段的查询逻辑模型,然后将其转换为在Trino worker集群上运行的一系列连接任务。

coordinator使用REST API与worker和client通信。

worker

worker的server被安装是用来负责执行所有task和处理数据的。工作节点从连接器获取数据,并彼此交换中间数据。

当Trino worker进程启动时,它将自己发布到coordinator中的发现服务器,这使得Trino coordinator可以使用它执行任务。

worker使用REST API与其他worker和Trino coordinator通信。

数据源

在本文档中,您将阅读connector、catalog、schema和table等术语。这些基本概念涵盖了Trino的特定数据源模型,并将在下一节中进行描述。

connector

连接器会将trino适配到数据源,比如数据源hive或者一些关系型数据库。你可以像看待数据库驱动程序一样看待连接器。它是trino spi的实现,它允许trino使用标准api与资源进行交互。

Trino包含几个内置连接器:JMX连接器、System连接器(提供对内置系统表的访问)、Hive连接器和TPCH连接器(用于提供TPC-H基准测试数据)。许多第三方开发人员提供了连接器,这样Trino就可以访问各种数据源中的数据。

每个catalog都与特定的连接器相关联。如果您检查一个catalog配置文件,您将看到每个catalog都包含一个强制性属性connector.name,catalog管理器使用该属性为给定的catalog创建connector。可以让多个catalog使用相同的connector访问相似数据库的两个不同实例。例如,如果您有两个Hive集群,您可以在一个Trino集群中配置两个catalog,它们都使用Hive 连接器,允许您查询来自两个Hive集群的数据,甚至在同一个SQL查询中。

catalog

Trino catalog包含schema,并通过连接器引用数据源。例如,您可以配置一个JMX catalog,以通过JMX连接器提供对JMX信息的访问。当您在Trino中运行SQL语句时,您是针对一个或多个catalog运行它们。其他示例包括连接到Hive数据源的Hive编目。

在Trino中寻址表时,完全限定表名始终植根于catalog中。例如,hive.test_data.test的全限定表名。Test指的是hive目录中的test_data模式中的test测试表。

目录定义在存储在Trino配置catalog中的属性文件中。

schema

schema是一种组织表的方法。一起定义了一组可以查询的表。当使用Trino访问Hive或关系数据库(如MySQL)时,schema在目标数据库中转换为相同的概念。其他类型的连接器可能选择以对底层数据源有意义的方式将表组织到schema中。

table

表是一组无序行的集合,它们被组织成具有类型的命名列。这与任何关系数据库中的情况相同。从源数据到表的映射由连接器定义。

查询执行模型

Trino执行SQL语句,并将这些语句转换为查询,这些查询在coordinator和worker的分布式集群上执行。

Statement

Trino执行ansi兼容的SQL语句。当Trino文档引用语句时,它引用的是ANSI SQL标准中定义的语句,该标准由子句、表达式和谓词组成。

有些读者可能会好奇为什么本节分别列出语句和查询的概念。这是必要的,因为在Trino中,语句只是引用用SQL编写的语句的文本表示。当一个语句被执行时,Trino会创建一个查询和一个查询计划,然后在一系列Trino worker中分布。

Query

当Trino解析一条语句时,它将其转换为一个查询并创建一个分布式查询计划,然后将其实现为运行在Trino worker上的一系列相互连接的stage。当您在Trino中检索关于查询的信息时,您将收到每个组件的快照,这些组件涉及生成响应语句的结果集。

语句和查询之间的区别很简单。一条语句可以被认为是传递给Trino的SQL文本,而查询则是指为执行该语句而实例化的配置和组件。查询包括stages、tasks、splits、connector以及协同工作以产生结果的其他组件和数据源。

Stage

当Trino执行查询时,它通过将执行分解为阶段层次结构来执行。例如,如果Trino需要聚合Hive中存储的十亿行的数据,它会通过创建一个根stage来聚合其他几个阶段的输出,所有这些阶段都是为实现分布式查询计划的不同部分而设计的。
组成查询的stages层次结构类似于树。每个查询都有一个根stage,负责聚合来自其他阶段的输出。stage是coordinator用来建模分布式查询计划的工具,但是stage本身并不在Trino worker上运行。

Task

正如前一节所提到的,stage为分布式查询计划的特定部分建模,但是stage本身并不在Trino worker上执行。要理解stage是如何执行的,您需要理解stage是作为分布在Trino worker网络上的一系列任务实现的。
tasks是Trino体系结构中的“工作马”,因为分布式查询计划被分解为一系列阶段(stages),然后这些阶段被转换为任务,然后这些任务作用于或处理分割。Trino任务有输入和输出,就像一个阶段(stage)可以由一系列任务并行执行一样,一个任务也可以与一系列驱动程序并行执行。

Split

任务在分割上操作,分割是较大数据集的部分。分布式查询计划的最低级别的阶段通过连接器的分割检索数据,分布式查询计划较高级别的中间阶段从其他阶段检索数据。

当Trino调度查询时,coordinator会向连接器查询一个表中可用的所有分割列表。协调器跟踪哪些机器正在运行哪些任务,以及哪些任务正在处理哪些分割。

Driver

任务包含一个或多个并行驱动程序。驱动程序作用于数据并结合算子以产生输出,然后由一个任务聚合,然后交付给另一个阶段的另一个任务。驱动程序是操作符实例的序列,或者您可以将驱动程序看作内存中的操作符物理集。它是Trino体系结构中并行度的最低级别。驱动程序有一个输入和一个输出。

Operator

操作符消费、转换和生成数据。例如,表扫描从连接器获取数据并生成可被其他操作符使用的数据,筛选操作符使用数据并通过对输入数据应用谓词来生成子集。

Exchange

对于查询的不同阶段,交换在Trino节点之间传输数据。任务将数据生成到输出缓冲区,并使用交换客户机使用来自其他任务的数据。

相关内容

热门资讯

速腾聚创一季度毛利同比增七成 ...   速腾聚创第二代灵巧手Papert 2.0。  5月30日,速腾聚创发布2025年第一季度财报。据...
“消费+科技”双轮驱动,港股市... 港股IPO市场正经历显著回暖,优质资产供给逐步改善,市场流动性增强,吸引了大量资金关注。Wind资讯...
从一面之恩到千亿帝国CEO,安... 近日,吉利汽车管理层大调整引发行业聚焦。在吉利一季度财报发布的当天,吉利控股集团宣布重大人事调整:极...
A股公司密集更名折射四大现象 ... 据不完全统计,2025年以来,超60家A股公司完成或启动名称变更工作,其中超30家公司涉及证券简称调...
券商6月“金股”出炉,两大行业... A股6月开市在即,券商6月月度“金股”近期陆续出炉。Wind数据显示,截至6月2日中国证券报记者发稿...
朴朴永辉福州“停火” 永辉和朴... 交流朴朴永辉,实名添加微信lihua759321进群在福州前置仓生鲜到家市场,过往的两大主力玩家、总...
美股下跌,钢铁股大涨!金价重回... 6月2日,美国三大股指开盘走低,截至22:40发稿,道指跌0.5%,标普500指数跌0.25%,纳斯...
这个账单,决定后半辈子幸福… ... 图:Hiroki Kawanabe 第一波延迟退休的人出来了。 挺多人晒出来的退休年龄数字,已经有零...
立案调查完毕,香港老板无罪,被... 字越少,事越大,相反,说得越热闹的,往往没啥事儿。84天前,上市公司万辰集团老板王健坤被国家某监委带...
靠卖丸子年入百亿,拿下10万家... 订阅 快刀财经 ▲ 做您的私人商学院一粒鱼丸的逆袭史。作者:朱末来源:快刀财经(ID:kuaidao...
港股数字货币板块集体大涨:连连... 6月2日,港股数字货币板块集体大涨。具体来看,连连数字(02598.HK)一度涨超79%,移卡(09...
“近视神药”跌下神坛,“眼药大... “近视神药”能成为百亿大药吗??作者 | 赵普编辑丨高岩来源 | 野马财经在眼药领域,尤其是备受瞩目...
这届高考,仍是史上最难 史上最... 作者 |暴雨再过几天,我们会迎来历史上最难的一届高考。你可能会反驳,1335万名考生,比去年少了7万...
A股“618”来袭!5月“稳稳... 5月份涨幅排名靠前个股本报(chinatimes.net.cn)记者王兆寰 北京报道5月的A股走出了...
“价格战”影响多大?理想汽车单... 短短两年时间内,不断推迟公布财报披露时间,单车平均净利润不断下滑,理想汽车(02015.HK)给到投...
刚刚,杀出一个医药大白马,挑战... 重重挑战激发无限动力!集采、竞争,仿佛是医药企业头顶的两座大山。连恒瑞医药、华东医药都不免因此出现短...
恒生指数跌0.57%,恒生科技... 6月2日,恒生指数收盘跌0.57%报23157.97点,恒生科技指数跌0.7%,恒生中国企业指数跌0...
银河证券:6月A股大概率震荡上... 展望A股6月运行,银河证券在最新研报中表示,预计市场将大概率震荡上行,建议把握波动中的确定性。银河证...
华仁药业:股东华仁世纪集团拟减... 新京报贝壳财经讯 6月2日,华仁药业(300110.SZ)公告称,公司收到持股5%以上股东华仁世纪集...
冯仑:不被拿捏的关键 冯仑不焦... 封面图 | 《巴斯特·斯克鲁格斯的歌谣》01问:冯叔,我在读您的新书《人生的逻辑》。您在书里说,这本...