trino-435: 理论基础

2023-12-31 19:12
文章标签 基础 理论 trino 435

本文主要是介绍trino-435: 理论基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、trino介绍

Trino是⼀种⽀持使⽤ SQL 访问任意数据源的 开源的分布式SQL 查询引擎,其能够提供更加灵活与⾼效的查询服务。为不同的异构数据源提供统⼀的sql访问,并⽀持联邦查询和并⾏查询。
在这里插入图片描述
应⽤场景
Trino是定位在数据仓库和数据分析业务的分布式SQL引擎,适合以下应⽤场景:
• 统⼀SQL访问各类数据源
• 执⾏sql转换与ETL
• Ad-Hoc查询
• 海量结构化数据或半结构化数据分析
• 海量多维数据聚合或报表分析

二、trino架构

trino集群由⼀个coordinator和多个worker节点组成,client可以使⽤Trino CLI或者JDBC驱动程序连接到Coordinator,coordiantor通过协调worker与数据源进⾏⼯作。
在这里插入图片描述

1、Trino coordinator节点的作⽤
  • 查询协调:coordinator节点负责协调所有查询操作,如解析sql语句、⽣成查询计划、调度和分配查询任务等。它会根据查询的复杂度和数据源的规模来判断查询是否需要被分割和并⾏执⾏,以提⾼查询效率和资源利⽤率。
  • 资源管理:coordinator节点负责管理整个集群的资源,如内存、CPU等。它会根据每个查询的资源需求和集群的可⽤资源情况来动态调整资源使⽤情况,以保证集群的稳定性和性能。
  • 节点管理:coordinator节点负责管理集群的所有worker节点,包括状态更新、任务分配、⼼跳检测等。它会监测节点的可⽤性和状态,并根据集群负载情况来动态调整节点的任务分配和负载平衡策略,以保证整个集群的稳定性和可⽤性。
  • 集群监控:coordinator节点负责监控整个集群的运⾏状况,包括各个节点的状态、负载情况、查询性能等。它会将这些信息进⾏汇总和分析,并⽣成相应的报告和指标,以便管理员进⾏集群的优化和调整。
  • 系统管理:coordinator节点负责管理整个Trino系统,包括配置⽂件管理、插件管理、安全管理等。它会根据管理员的设定和权限来进⾏相应的管理和控制,以保证整个系统的稳定性和安全性。
2、Trino worker节点的作⽤
  • 任务执⾏:worker节点负责执⾏coordinator分配给它的任务,如数据读取、数据过滤、数据聚合等。它会将数据处理的结果返回给coordinator节点,以便进⾏下⼀步的处理和计算。
  • 数据存储:worker节点负责存储集群中的数据,包括数据的分⽚、存储和管理等。它会维护⼀个数据存储仓库,并根据查询计划和任务分配来读取和处理数据,以提⾼查询效率和资源利⽤率。
  • 资源管理:worker节点会根据集群的资源限制和任务优先级,动态调整资源的分配和使⽤情况,以保证集群的稳定性和性能。
  • ⽹络通信:worker节点负责与coordinator节点进⾏通信,并根据分配的任务来读取和处理数据。它需要保证和coordinator节点的通信畅通,并及时反馈处理结果。

三、trino基本概念

1、数据模型

数据模型即数据的组织形式。Trino使⽤Catalog、Schema和Table三层结构来管理数据。

  • Catalog
    ⼀个Catalog可以包含多个Schema,物理上指向⼀个外部数据源,可以通过Connector访问该数据源。⼀次查询可以访问⼀个或多个Catalog。系统catalog:包括system、memory、information_schema和metadata,⽤于管理和查询Trino系统和运⾏时信息。
  • Schema
    相当于⼀个数据库实例,⼀个Schema包含多张数据表。
  • Table
    数据表,与⼀般意义上的数据库表相同
2、Connector

Trino通过各种Connector来接⼊多种外部数据源。Trino提供了⼀套标准的SPI接⼝,用户可以使⽤这套接口开发自己的Connector,以便访问⾃定义的数据源。⼀个Catalog通常会绑定⼀种类型的Connector,在Catalog的Properties⽂件中设置。Trino内置了多种Connector。下图展示了Trino SPI如何包含用于协调器使⽤的元数据、数据统计和数据位置以及⼯作器使⽤的数据流的单独接⼝。
在这里插入图片描述

3、查询执⾏模型

(1)总体流程
coordinator接受来⾃最终用户、CLI软件(使⽤ODBC或JDBC驱动程序或其他客⼾机库)的SQL语句。然后,coordinator触发worker从数据源获取所有数据,创建结果数据集,并使其对客户机可⽤。
(2)流程分析

  • 当将SQL语句提交给协调器时,将以⽂本格式接收它。协调器获取⽂本并对其进⾏解析和分析。然后,它通过使⽤Trino中称为查询计划的内部数据结构创建⼀个执⾏计划。该流程如图4-6所⽰。查询计划⼤致表⽰每个SQL语句处理数据和返回结果所需的步骤。
    在这里插入图片描述
  • 如图4-7所⽰,使⽤元数据SPI和数据统计SPI[1]来创建查询计划。因此,coordinator使⽤SPI来收集有关直接连接到数据源的表和其他元数据的信息。
    在这里插入图片描述
    coordinator使⽤Metadata SPI获取关于表、列和类型的信息。它们⽤于验证查询在语义上是否有效,并对原始查询中的表达式执⾏类型检查和安全检查。Data Statistics SPI⽤于获取有关⾏数和表⼤⼩的信息,以便在规划期间执⾏基于成本的查询优化。Data Location SPI⽤于⽣成表内容的逻辑分割。拆分是⼯作分配和并⾏的最⼩单位。
  • 逻辑查询计划在集群coordinator上转化为分布式查询计划的过程如图4-8所示:
    在这里插入图片描述
  • 分布式查询计划定义了在Trino集群上执⾏查询的阶段和⽅式。协调器使⽤它来进⼀步计划和安排跨worker的任务。⼀个stage由⼀个或多个Task组成。通常,涉及许多Task,每个Task处理⼀部分数据。coordinator从stage向集群中的worker分配Task,如图4-9所⽰。
    在这里插入图片描述
    任务处理的数据单位称为split。split相当于⼀部分数据集,每个task会去处理对应的split。
    在这里插入图片描述
    在Task中,每个Split将作⽤于⼀个Driver上,⼀个Driver有许多Operator组成,Split上的所有Page会依次经过各个operator进⾏转换和计算,最终完成SQL所需要的结果输出。
    在这里插入图片描述
    operator处理输⼊数据,为下游operator产⽣输出数据。⽰例operator包括表扫描、过滤器、连接和聚合。⼀系列这样的操作符构成⼀个operator管道。例如,您可能有⼀个管道,它⾸先扫描和读取数据,然后对数据进⾏过滤,最后对数据进⾏部分聚合。

这篇关于trino-435: 理论基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556922

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)