认识Trino

认识Trino

  • 一、Trino
  • 二、结构
  • 三、集群
  • 四、coordinator
  • 五、Worker
  • 六、数据源
  • 七、连接器
  • 八、目录
  • 九、架构
  • 十、表
  • 十一、查询执行模型
  • 十二、陈述
  • 十三、查询
  • 十四、阶段
  • 十五、任务
  • 十六、分隔
  • 十七、Driver
  • 十八、Operator
  • 十九、Exchange

一、Trino

  • Trino(前身为PrestoSQL)是一个开源的分布式SQL查询引擎。它设计用于在大规模数据集上进行高性能、高并发的查询操作。
  • Trino具有灵活性和快速响应性,并支持许多数据存储系统,如Hadoop HDFS、Amazon S3、MySQL、PostgreSQL等。
  • 它提供了类似于传统SQL数据库的查询语言,可以从各种数据源中进行联机分析处理。
  • Trino具有分布式架构,允许在集群中并行执行查询操作,并自动进行查询优化以提高查询性能。由于其强大的查询功能和扩展性,Trino被广泛应用于大型数据分析和商业智能领域。

二、结构

Trino 是一个分布式查询引擎,可以跨多个服务器并行处理数据。 Trino 服务器有两种类型:协调器和工作器。以下部分描述了这些服务器和 Trino 架构的其他组件。

三、集群

Trino 集群由一个协调器和许多工作器组成。用户使用 SQL 查询工具连接到协调器。协调员与工人合作。协调员和工作人员访问连接的数据源。此访问权限是在目录中配置的。

处理每个查询是一个有状态操作。工作负载由协调器编排并并行分布在集群中的所有工作线程中。每个节点在一个 JVM 实例中运行 Trino,并使用线程进一步并行处理。

四、coordinator

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

五、Worker

  • Trino Worker 是 Trino 安装中的服务器,负责执行任务和处理数据。工作节点从连接器获取数据并相互交换中间数据。协调员负责从工作人员那里获取结果并将最终结果返回给客户端。
  • 当 Trino 工作进程启动时,它会将自己通告给coordinator中的发现服务器,这使得 Trino 协调器可以使用它来执行任务。
  • Worker使用 REST API 与其他Worker和 Trino coordinator进行通信。

六、数据源

  • 在整个文档中,您将阅读连接器、目录、架构和表等术语。这些基本概念涵盖了特定数据源的 Trino 模型,并将在下一节中进行描述。

七、连接器

  • 连接器使 Trino 适应 Hive 或关系数据库等数据源。您可以像考虑数据库驱动程序一样来考虑连接器。它是 Trino SPI 的实现,允许 Trino 使用标准 API 与资源交互。
  • Trino 包含多个内置连接器:一个用于 JMX 的连接器、一个提供对内置系统表的访问的系统连接器、一个 Hive 连接器以及一个旨在提供 TPC-H 基准数据的 TPCH 连接器。许多第三方开发人员贡献了连接器,以便 Trino 可以访问各种数据源中的数据。
  • 每个目录都与特定的连接器相关联。如果您检查目录配置文件,您会发现每个配置文件都包含一个强制属性connector.name,目录管理器使用该属性为给定目录创建连接器。可以让多个目录使用相同的连接器来访问相似数据库的两个不同实例。例如,如果您有两个 Hive 集群,则可以在单个 Trino 集群中配置两个目录,这两个目录都使用 Hive 连接器,从而允许您从两个 Hive 集群查询数据,甚至在同一个 SQL 查询中也是如此。

八、目录

  • Trino 目录包含模式并通过连接器引用数据源。例如,您可以配置 JMX 目录以通过 JMX 连接器提供对 JMX 信息的访问。当您在 Trino 中运行 SQL 语句时,您是针对一个或多个目录运行它们。目录的其他示例包括用于连接到 Hive 数据源的 Hive 目录。
  • 在 Trino 中寻址表时,完全限定的表名称始终植根于目录中。例如,完全限定的表名称 hive.test_data.test 指的是 hive 目录中 test_data 模式中的测试表。
  • 目录在 Trino 配置目录中存储的属性文件中定义。

九、架构

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

十、表

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

十一、查询执行模型

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

十二、陈述

  • Trino 执行 ANSI 兼容的 SQL 语句。当 Trino 文档引用语句时,它指的是 ANSI SQL 标准中定义的语句,它由子句、表达式和谓词组成。
  • 有些读者可能会好奇为什么本节列出了语句和查询的单独概念。这是必要的,因为在 Trino 中,语句仅指用 SQL 编写的语句的文本表示。执行语句时,Trino 会创建一个查询以及一个查询计划,然后将其分发到一系列 Trino 工作线程中。

十三、查询

  • 当 Trino 解析语句时,它将其转换为查询并创建分布式查询计划,然后将其实现为在 Trino Worker 上运行的一系列互连阶段。当您在 Trino 中检索有关查询的信息时,您会收到参与生成响应语句的结果集的每个组件的快照。
  • 语句和查询之间的区别很简单。语句可以被认为是传递给 Trino 的 SQL 文本,而查询是指为执行该语句而实例化的配置和组件。查询包含阶段、任务、拆分、连接器以及协同工作以产生结果的其他组件和数据源。

十四、阶段

  • 当 Trino 执行查询时,它通过将执行分解为阶段层次结构来实现。例如,如果 Trino 需要聚合 Hive 中存储的 10 亿行数据,它会通过创建一个根阶段来聚合其他几个阶段的输出来实现这一目的,所有这些阶段都旨在实现分布式查询计划的不同部分。
  • 组成查询的阶段层次结构类似于树。每个查询都有一个根阶段,它负责聚合其他阶段的输出。协调器使用阶段来建模分布式查询计划,但阶段本身并不在 Trino 工作线程上运行。

十五、任务

  • 正如上一节中提到的,阶段对分布式查询计划的特定部分进行建模,但阶段本身并不在 Trino 工作线程上执行。要了解阶段是如何执行的,您需要了解阶段是作为分布在 Trino 工作人员网络上的一系列任务来实现的。
  • 任务是 Trino 架构中的“主力”,因为分布式查询计划被解构为一系列阶段,然后将其转换为任务,然后任务执行或处理拆分。 Trino 任务具有输入和输出,正如一个阶段可以由一系列任务并行执行一样,任务也可以与一系列驱动程序并行执行。

十六、分隔

  • 任务对分割进行操作,分割是较大数据集的一部分。分布式查询计划最低级别的阶段通过连接器的拆分检索数据,分布式查询计划较高级别的中间阶段从其他阶段检索数据。
  • 当 Trino 调度查询时,协调器会向连接器查询可用于表的所有拆分的列表。协调器跟踪哪些机器正在运行哪些任务,以及哪些任务正在处理哪些分片。

十七、Driver

  • 任务包含一个或多个并行驱动程序。驱动程序对数据进行操作并组合运算符以生成输出,然后由任务聚合该输出,然后将其传递给另一个阶段的另一个任务。驱动程序是一系列运算符实例,或者您可以将驱动程序视为内存中的一组物理运算符。它是 Trino 架构中最低级别的并行性。驱动器有一个输入和一个输出。

十八、Operator

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

十九、Exchange

  • Exchange 在 Trino 节点之间传输数据以进行查询的不同阶段。任务将数据生成到输出缓冲区中,并使用交换客户端消耗来自其他任务的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda和pip配置国内镜像源

1、conda配置镜像源: 使用conda进行安装时,访问的是国外的网络,所以下载和安装包时会特别慢。我们需要更换到国内镜像源地址,这里我更换到国内的清华大学地址。(永久添加镜像) Windows和Linux 对于conda修…

SQL进阶理论篇(十):数据库中的锁

文章目录 简介按照锁的粒度进行划分从数据库管理的角度进行划分从程序员的角度进行划分为什么共享锁会发生死锁?参考文献 简介 索引和锁,是数据库中的两个核心知识点。 索引的相关知识点,在之前的几章里我们已经介绍的差不多了。接下来我们…

[pasecactf_2019]flask_ssti proc ssti config

其实这个很简单 Linux的/proc/self/学习-CSDN博客 首先ssti 直接fenjing一把锁了 这里被加密后 存储在 config中了 然后我们去config中查看即可 {{config}} 可以获取到flag的值 -M7\x10wd94\x02!-\x0eL\x0c;\x07(DKO\r\x17!2R4\x02\rO\x0bsT#-\x1cZ\x1dG然后就可以写代码解…

MNIST内置手写数字数据集的实现

torchvision库 torchivision库是PyTorch中用来处理图像和视频的一个辅助库,接下来我们就会使用torchvision库加载内置的数据集进行分类模型的演示 为了统一数据加载和处理代码,PyTorch提供了两个类用于处理数据加载,他们分别是torch.utils.…

leetcode:641. 设计循环双端队列

设计循环双端队列 实现 MyCircularDeque 类: MyCircularDeque(int k) :构造函数,双端队列最大为 k 。 boolean insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true ,否则返回 false 。 boolean insertLast() :…

机器视觉技术与应用实战(开运算、闭运算、细化)

开运算和闭运算的基础是膨胀和腐蚀,可以在看本文章前先阅读这篇文章机器视觉技术与应用实战(Chapter Two-04)-CSDN博客 开运算:先腐蚀后膨胀。开运算可以使图像的轮廓变得光滑,具有断开狭窄的间断和消除细小突出物的作…

饥荒Mod 开发(十五):小地图显示物品

饥荒Mod 开发(十四):制作屏幕弹窗 本篇源码 饥荒中按下Tab键可以显示地图,刚开始进入游戏的时候地图是未探索状态,所以我们并不知道地图上面的物品分布情况。并且地图上只会显示很少一部分的物品,比如树枝,草&#xf…

C++二维数组(4)

蛇形遍历 题目描述:用数字1,2,3,4,...,n*n这n2个数蛇形填充规模为n*n的方阵。 蛇形填充方法为: 对于每一条左下-右上的斜线,从左上到右下依次编号1,2,...,2n-1;按编号从小到大的顺序,将数字从小到大填入各 条斜线&…

【Linux】操作文件和目录

简介 常见的一些对文件和目录操作的命令如下: cp:复制文件和目录。mv:移动/重命名文件和目录。mkdir:创建目录。rm:删除文件和目录。ln:创建硬链接和符号链接。 用图形文件管理器来完成一些由这些命令执…

Debezium发布历史11

原文地址: https://debezium.io/blog/2016/10/25/Debezium-0-3-4-Released/ Debezium 0.3.4 发布 2016 年 10 月 25 日 作者: Randall Hauch 发布 mysql docker 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考&…

链表基础知识(二、双向链表头插、尾插、头删、尾删、查找、删除、插入)

目录 一、双向链表的概念 二、 双向链表的优缺点分析​与对比 2.1双向链表特点: 2.2双链表的优劣: 2.3循环链表的优劣 2.4 顺序表和双向链表的优缺点分析​ 三、带头双向循环链表增删改查实现 3.1SList.c 3.2创建一个新节点、头节点 3.3头插 3.…

C# WPF上位机开发(知识产权ip保护)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 上位机软件如果是和硬件模块搭配开发,这个时候大部分上位机基本上都是白送的,不会收取相关的费用。但是,如果上…

计算机网络基础——以太网类型,常见标准和架构

一、标准以太网 标准以太网(10Mbit/s)通常只定位在网络的接入层,新一代多媒体、影像和数据库产品很容易将10Mbit/s运行的以太网的带宽吞没。10Mbit/s 的以太网可以实现100m距离的连接。 二、快速以太网 数据传输速率为100Mbps 的快速以太网…

提示工程指南

大家好,欢迎来到本课程。在接下来的时间里,我们将一起学习如何使用 OpenAI 的提示工程指南来更有效地使用大语言模型。 目录 什么是提示工程?提示工程的原则提示工程的技巧提示工程的最佳实践提示工程的常见问题什么是提示工程? 提示工程是指设计和编写提示语以获得所需输…

项目遇到Bug如何解决(思路)

找到Bug,分析Bug,解决Bug 语法错误 ESLint:代码规则约束检测的操作,利用ESLint可以更好的帮助我们避免一些语法的错误信息,例如括号是不是匹配等。Prettier:代码格式化工具进行语法的错误和纠正,当出现语法错误的时候,代码格式化…

chrome升级后,调试vue在控制台输出总是显示cjs.js

当前chrome版本120.0.6099.72 在vue中使用console.log输出时,总是显示cjs.js多少多少行,不能显示源文件名及行数 【解决方案】 打开控制台的设置 左侧找到“Ignore List”,取消勾选"enable Lgnore Listing",并重启chr…

4-Docker命令之docker history

1.docker history介绍 docker history命令是用来打印指定docker镜像的历史版本信息 2.docker history用法 docker history [参数] IMAGE [root@centos79 ~]# docker history --helpUsage: docker history [OPTIONS] IMAGEShow the history of an imageAliases:docker imag…

【Jmeter】Jmeter基础6-Jmeter元件介绍之前置处理器

前置处理器主要用于处理请求前的准备工作,如:参数、环境变量的设置等。 2.6.1、JSR223预处理程序 作用:请求前的准备工作。 参数说明: 语言:开发脚本所使用的语言,可通过下拉列表选择。参数:传…

第26节: Vue3 绑定到对象

在UniApp中使用Vue3框架时&#xff0c;你可以使用对象绑定语法将属性绑定到对象上。下面是一个示例&#xff0c;演示了如何在UniApp中使用Vue3框架使用绑定到对象&#xff1a; <template> <view> <button click"toggleActive">Toggle Active<…

TCP或许不是“可靠”的

你可能以为TCP是可靠的&#xff0c;从发送端看&#xff0c;send函数总是能把数据发送到接受端&#xff1b;而从接收端来看&#xff0c;总能把发送端接受的数据流完整传递给应用程序来处理。 可是我们认真分析过之后&#xff0c;发现“TCP是可靠的”这个论断是不正确的。 若是使…