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管道。例如,您可能有⼀个管道,它⾸先扫描和读取数据,然后对数据进⾏过滤,最后对数据进⾏部分聚合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/281820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#前后端分离# 头条发布系统

头条业务简介 新闻的分页浏览通过标题关键字搜索新闻查看新闻详情新闻的修改和删除用户注册、登录 预览界面 开源上线 https://gitcode.net/NVG_Haru/NodeJS_5161447 数据库设计 数据库脚本 CREATE DATABASE sm_db;USE sm_db;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0…

python的pywebio库给孩子做加减法数学题

效果展示 程序执行后,打开浏览器,展示一些100以内的加减法混合运算的数学题并输入答案后判断对错,这样倒是省了买教材的钱了。 在题目下方的框中,输入答案,然后点击提交后, 会输出结果 pywebio库介绍 安装…

详解FreeRTOS:FreeRTOSConfig.h系统配置文件(拓展篇—1)

目录 1、“INCLUDE_”宏 2、“config”宏 实际使用FreeRTOS的时候,时常需要根据自己需求来配置 FreeRTOS,不同架构的MCU,配置也不同。 FreeRTOS的系统配置文件为FreeRTOSConfig.h,在配置文件中可以完成FreeRTOS的裁剪和配置,这是非常重要的一个文件,本篇博文就来讲解这…

文件批量整理,文件归类整理,文件批量归类

我们每天都要面对无数的文件,从工作报告、个人照片到电影和音乐。如何有效地管理和归类这些文件,成为了我们日常生活和工作中所要处理的。今天,小编就给大家介绍一款简单易用的工具——文件批量改名高手,助你轻松实现文件批量归类…

45、激活函数 - 为什么非线性这么重要

这一节开始讲一讲神经网络中的激活函数,在讲激活函数之前,先讲一下非线性。 看一个基础知识:线性函数的叠加,我们初中学过的知识点。 假设有一个线性函数,y = kx + b, 这个函数画出来是下面的样子,这里显示 y 和 x 是线性关系。 而如果这个时候又有一个线性关系 z = hy…

基于JAVA的独居老人物资配送系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4.2 新增物资4.3 查询物资4.4 查询物资配送4.5 新增物资配送 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的独居老人物资配送系统,包含了社区档案、…

C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

上一篇: C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/details/123478581 C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net…

探索 Pinia:简化 Vue 状态管理的新选择(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

计算器写作文

一起来交流编程吧【CSDN app】: http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kx9pL9ccIHGKNLE0CWviAqQ_q6HzxomLW&authKeyVslKe623ptw8VRepda%2Bh0Ttr8Ruz8v%2FBW5HpVzyTWU7ECwpHIZpULMj6qIHYZBVb&noverify0&gro 计算器写作文 题目描述 众所周知&a…

VitulBox中Ubuntu虚拟机安装JAVA环境——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项

前言 在进行之后操作是请下载好JDK,之后的内容是以Ubuntu虚拟机中安装java环境续写。 提示:以下操作是在虚拟机hadoop用户下操作的,并为安装java环境作准备 一、更新APT 为了确保Hadoop安装过程顺利进行,建议用hadoop用户登录…

CATIACATIAComposer各版本安装指南

CATIA&CATIAComposer https://pan.baidu.com/s/16Kvozc5xWZjxo6HRr9wJmA?pwd0531 一、DS CATIA Composer 1.鼠标右击【CATIA Composer2024(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 CATIA Composer2024(64bit)】。 2.打…

Hive实战:统计总分与平均分

文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据文件1、在虚拟机上创建文本文件2、将文本文件上传到HDFS指定目录 (二)实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、创建Hive表,加载HDFS数据文件…

Redis内存使用率高,内存不足问题排查和解决

问题现象 表面现象是系统登录突然失效,排查原因发现,使用redis查询用户信息异常,从而定位到redis问题 if (PassWord.equals(dbPassWord)) {map.put("rtn", 1);map.put("value", validUser);session.setAttribute("…

【Redis-03】Redis数据结构与对象原理 -下篇

承接上篇【Redis-02】Redis数据结构与对象原理 -上篇 8. type-字符串string 8.1 字符串的三种encoding编码(int embstr raw) 如果保存的是整型,并且可以用long类型标识(-9223372036854775808到9223372036854775807&#xff09…

文件分片上传(模拟网盘效果)

文件分片上传(模拟网盘效果) 文章说明简单模拟拖拽文件夹和选择文件的进度条效果效果展示结合后端实现文件上传效果展示加上分片的效果效果展示加上MD5的校验,实现秒传和分片的效果后续开发说明源码下载 文章说明 文章主要为了学习文件上传&a…

单片机原理及应用:开关控制LED多种点亮模式

从这篇文章开始,我们不再只研究单一的外设工作,而是将LED、数码管、开关、按键搭配在一起研究,这篇文章主要介绍LED和开关能擦出怎样的火花,同时也介绍一些函数封装的知识。 由于开关有闭合与打开两种状态,LED有左移流…

el-table表格自动循环向上滚动鼠标放上去停止,移开恢复

排序的图标是两个图片&#xff0c;点击向后端发请求带不同的参数 <template><div style"height: 100%" class"table-content"><div :style"{ position: absolute, z-index: 9999, right: 3%, top: 0 }":class"tagBtn bg${c…

MySQL例行检查

MySQL例行检查 1.实例例行检查1.1线程1.2索引1.3临时表1.4连接数1.5BINLOG1.6锁1.7WAIT事件1.8MySQL状态 2.事务与锁例行检查2.1查看索引的cardinality2.2查看是否存在事务阻塞现象2.3查看事务执行时长以及执行的所有SQL2.4事务与锁 3.库表例行检查3.1查看缺失主键的表3.2冗余索…

【网络安全 | Misc】miss_01 太湖杯

解压时提示输入密码&#xff1a; 如果 frFlags 或 deFlags 不为0会导致zip的伪加密 将deFlags的值修改为0 将9改为0&#xff0c;另存为123.zip&#xff1a; 即可绕过加密&#xff1a; 得到一个zip一个docx&#xff0c;但zip需要密码&#xff1a; 因此看docx有无敏感信息&#x…

文心一言 VS 讯飞星火 VS chatgpt (168)-- 算法导论13.2 1题

一、用go语言&#xff0c;写出 RIGHT-ROTATE 的伪代码。 文心一言&#xff1a; 在计算机科学中&#xff0c;右旋转&#xff08;RIGHT-ROTATE&#xff09;是一种常见的操作&#xff0c;通常用于数组或链表。以下是一个使用Go语言实现右旋转的伪代码&#xff1a; func rightRo…