当前位置: 首页 > news >正文

建站快车复制网站内容/市场调研报告800字

建站快车复制网站内容,市场调研报告800字,网站开发税率税种,无锡设计文章目录 前言Operator Model And Iterator Model系统组成Connector数据模型查询执行模型StatementStageTaskSplitDriverOperatorExchangePipeLine 总结 前言 Presto(PrestoDB)是一个FaceBook开源的分布式MPP SQL引擎,旨在处理大规模数据的查…

文章目录

  • 前言
  • Operator Model And Iterator Model
  • 系统组成
  • Connector
  • 数据模型
  • 查询执行模型
    • Statement
    • Stage
    • Task
    • Split
    • Driver
    • Operator
    • Exchange
    • PipeLine
  • 总结

在这里插入图片描述

前言

Presto(PrestoDB)是一个FaceBook开源的分布式MPP SQL引擎,旨在处理大规模数据的查询和分析问题。传统数据库系统(eg:Hive)在面对大规模数据和复杂查询需求时存在限制,如数据规模限制、查询速度慢、数据源集成困难等问题。
本文主要介绍下Presto基本的核心概念。

Operator Model And Iterator Model

MPP核心的迭代器模型;操作模块化;执行计划等模型与实现框架设计,可参考最早的1995年Goetz Graefe发布的encapsulation-volcano论文:
http://daslab.seas.harvard.edu/reading-group/papers/encapsulation-volcano.pdf
论文中首次提出了一种并行SQL的设计,即通过各种Operator(如TableScan、Project、Filter、Aggregate、Exchange、Join等)组成一棵树,树的根节点产生SQL输出,树的叶子节点是各种TableScan,数据从叶子节点流入,一步步被加工直至产生最终结果。这个模型称为Operator Model,这棵树我们称之为执行计划(Plan,在传统数据库里又分为逻辑计划和物理计划)。
在Operator Model执行的过程中,各节点有三种基本状态(或者说要实现三个接口):Open、GetNext、Close。父节点的接口调用一般会递归调用子节点对应的接口。SQL执行时就从根节点Open开始,然后不断调其GetNext接口得到一行输出(后续演变为得到RowBatch),直到没有结果为止,最后调Close。这个模型称为Iterator Model。

在这里插入图片描述

系统组成

在这里插入图片描述
Presto是典型的M/S架构的系统,由一个Coordinator节点和多个Worker节点组成。 Coordinator负责如下工作:
● 接收用户查询请求,解析并生成执行计划,下发Worker节点执行。
● 监控Worker节点运行状态,各个Worker节点与Coordinator节点保持心跳连接,汇报节点状态。
● 维护MetaStore数据。
Worker节点负责执行下发到任务,通过连接器读取外部存储系统到数据,进行处理,并将处理结果发送给Coordinator节点。
Presto最初不支持高可用架构, 后面FaceBook提出了一个新的设计:一个分解的协调器(disaggregated coordinator),允许 coordinator 在单个 workers pool 中横向扩展。

Connector

Presto通过内置的各种Connector来接入多种外部数据源。Presto提供了一套标准的SPI接口,您可以使用这套接口开发自己的Connector,以便访问自定义的数据源。
通常,一个Catalog会绑定一种类型的Connector,并在Catalog的Properties文件中进行设置。

数据模型

数据模型即数据的组织形式。Presto使用Catalog、Schema和Table三层结构来管理数据。
● Catalog:一个Catalog可以包含多个Schema,物理上指向一个外部数据源,可以通过Connector访问该数据源。一次查询可以访问一个或多个Catalog。
● Schema:相当于一个数据库实例,一个Schema包含多张数据表。
● Table:数据表,与一般意义上的数据库表相同。

查询执行模型

Presto执行SQL语句,并将这些语句转换为coordinators和workers的分布式集群执行的查询。

Statement

Presto执行ANSI兼容的SQL语句,该标准由子句、表达式和谓词组成。
Query
解析一条语句时,它将其转换为一个查询,并创建一个分布式查询计划,然后将其实现为在Presto worker上运行的一系列相互连接的阶段。语句和查询之间的区别很简单。一条语句可以被认为是传递给Presto的SQL文本(Statement),而查询则是指为执行该语句而实例化的配置、组件、查询执行计划和优化信息等。一个查询执行包括Stage、Task、Driver、Split、Operator、DataSource组成,这些组件之间通过内部联系共同组成一个查询执行,从而得到SQL语句表述的查询,并得到相应的结果集。

Stage

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

Presto 中Stage共分为4种:

  1. Coordinator_Only: 用于执行DDL或者DML语句中最终的表结构创建或者更改
  2. Single: 用于聚合子Stage的输出是数据,并将最终数据输出给终端用户
  3. Fixed: 用于接受其子Stage产生的数据并在集群中对这些数据进行分布式的聚合或者分组计算
  4. Source: 用于直接连接数据源,从数据源读取数据,在读取数据的时候,该阶段也会根据Presto对查询计划执行的优化完成相关的断言下发(Predicate PushDown)和条件过滤
    按照数据的流向,我们可以约定越靠近数据源的Stage越处于上游,越远离数据源的Stage越处于下游

create table xxx as select
在这里插入图片描述
在这里插入图片描述

Task

Stage对分布式查询计划的特定部分建模,但Stage本身并不在Presto Worker上执行。Task是Presto体系结构中的工作项,因为分布式查询计划被分解为一系列Stage,然后转换为Task,然后这些Task作用于或处理Split。Presto Task有输入和输出,就像一个Stage可以由一系列Task并行执行一样,一个Task也可以与一系列驱动程序并行执行。

Split

Split分片,一个分片其实就是一个大的数据集中的一个小的子集,Driver是作用于一个分片上的一系列操作的集合,而每个节点上运行的Task,又包含多个Driver,从而一个Task可以处理多个Split。当Presto执行一个查询时,首先会从Coordinator得到一个表对应的所有的Split,然后Presto就会根据查询执行计划,选择合适的节点运行响应的task处理Split。
这里来看下在HiveConnector中HiveSplit的定义:

在这里插入图片描述
在这里插入图片描述

Driver

Task包含一个或多个并行Driver。Driver作用于数据并结合Operator以产生输出,然后由一个Task聚合,然后交付给另一个Stage的另一个Task。Driver是操作符实例的序列,它是Presto体系结构中并行度的最低级别。Driver有一个输入和一个输出。

Operator

Operator过滤、加权、消费、转换和生成数据。例如,TableScan从Connector获取数据并生成可被其他Operator使用的数据,筛选Opertaor使用数据并通过对输入数据应用谓词来生成子集。

Exchange

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

PipeLine

每个Task执行一个Stage的逻辑,也可以说就是执行一个PlanFragment里的Operator,这些Operator的最佳并行度可能是不同的。比如说做Tablescan的并发可以很大,但做Final Aggregation(如Sort)的并发度只能是一。基于这个考虑,一个PlanFragment又会被切分为若干Pipeline,每个Pipeline由一组Operator组成,这些Operator被设置同样的并行度。Pipeline之间会通过LocalExchangeOperator来传递数据。

在Presto的Web UI里可以看到下面的Pipeline图。Driver的数目就是这个Pipeline的并行度。

在这里插入图片描述

总结

在这里插入图片描述

如图 Presto的一次执行查询会被分解为多个Stage, Stage之间具有依赖关系,每个Stage由一列的Task组成,每个Stage的task被均分为在每个worker上并行执行,每个Task又由多个Driver组成,每个Driver只能处理一个Split, 且每个Driver由一系列前后相连的operator组成,每个Operator都代表对于一个Split的操作

相关文章:

【大话Presto 】- 核心概念

文章目录 前言Operator Model And Iterator Model系统组成Connector数据模型查询执行模型StatementStageTaskSplitDriverOperatorExchangePipeLine 总结 前言 Presto(PrestoDB)是一个FaceBook开源的分布式MPP SQL引擎,旨在处理大规模数据的查…...

阎良区公益创投之“小飞机大梦想” 航模DIY主题活动

创造是人类探索迈出的第一步,科学是开启奇妙世界的金钥匙。为进一步提升“未来星”对科技知识的兴趣,培养他们的科学创新精神,11月16日,阎良区社会组织公益创投——“未来星”助力乡村留守儿童成长计划项目在阎良区聚宝小学开展“…...

springBoot集成websocket实时消息推送

springBoot集成websocket实时消息推送 WebSocket是一种在Web应用程序中实现双向通信的协议。它允许在客户端和服务器之间建立持久性的连接,并支持双向数据传输,实现了实时、低延迟的通信。 📍常见的消息推送方法 WebSocket:通过使…...

web:[BUUCTF 2018]Online Tool

题目 打开页面显示如下,进行代码审计 上述代码主要功能是接收‘host’参数,后使用nmap扫描主机端口 首先检查是否存在HTTP_X_FORWARDED_FOR头,若存在,将值赋值给EMOTE_ADDR,是为了跟踪用户真实的IP地址 后用检查get‘host’是否…...

决策树的Boosting策略是什么

在决策树的Boosting策略中,最常见的算法是梯度提升决策树(Gradient Boosting Decision Trees,简称GBDT)。GBDT是一种集成学习方法,通过串行训练多个决策树,并根据前一个树的预测结果来调整下一个树的训练目…...

SQL Server中substring的用法

SQL Server中substring的用法 SQL中的substring函数是用来截取一个栏位资料中的其中一部分。 例如,我们需要将字符串’abdcsef’中的‘abd’给提取出来,则可用substring 来实现: select substring(abdcsef,1,3)结果为 abd括号中数字’1’表…...

vscode设置latex

vscode配置latex 1.安装vscode,并添加环境变量路径 2.安装latex,bin文件夹添加到环境变量路径 3.vscode安装插件 4.vscode->文件->首选项->显示配置内容->setting.json文件,查看其位置目录,通过我的电脑找到此文件(不要使用v…...

Django模板层

模板之变量 所有的数据类型都可以在模板中使用 render(request, index.html, context{}) render(request, index.html, contextlocals()) """在模板中使用变量的时候,用的是字典的key值,key值value值一般保持一致"""详细…...

TP_Link WR886N 硬改闪存16M内存64M,刷入openwrt

一、换内存,拆闪存: 1、先原机开机试试是否功能正常; 2、拆机,比较难拆,容易坏外壳; 3、找到内存和闪存,用胶带把边上的小元件,电阻都贴好; 4、加助焊油,用风…...

websocket详解

一、什么是Websocket WebSocket 是一种在单个 TCP 连接上进行 全双工 通信的协议,它可以让客户端和服务器之间进行实时的双向通信。 WebSocket 使用一个长连接,在客户端和服务器之间保持持久的连接,从而可以实时地发送和接收数据。 在 Web…...

可以免费使用的设计素材网站分享

UI设计师最怕什么? 没有创意,没有灵感,没有思路! 在哪里可以得到idea?别担心,往下看! 你知道网络有多大,你想要什么吗?今天,我想和大家分享一些宝藏网页设…...

workman使用手册1.0

workman官网地址:高性能PHP应用容器 workerman 1:把workman项目放到linux服务器后,需要启动你的php文件,才可以使用 定位到项目根目录:例:cd /mnt/workman 启动代码:php outin.php start -d 停…...

Cesium深入浅出之自定义材质

引子 做为一名技术宅却没有能拿得出手的技术无疑是最可悲的事情。三年前,当我第一次接触Cesium的时候就被它强大和炫丽所折服,最关键的是它还是开源的。以前我一直是机械地敲着业务代码,好像计算机程序就只能干这点事情一样,而 C…...

Appium移动自动化测试--安装Appium

Appium 自动化测试是很早之前就想学习和研究的技术了,可是一直抽不出一块完整的时间来做这件事儿。现在终于有了。 反观各种互联网的招聘移动测试成了主流,如果再不去学习移动自动化测试技术将会被淘汰。 web自动化测试的路线是这样的:编程语…...

前端学习笔记--ES6

修正 ES6是ECMA为JavaScript制定的第6个标准版本,相关历史可查看此章节《ES6-ECMAScript6简介》。 标准委员会最终决定,标准在每年6月正式发布并作为当年的正式版本,接下来的时间里就在此版本的基础上进行改动,直到下一年6月草案…...

冥想第九百七十八天

1.周四,今天客户又发飙了,这次的锅我有点不好受。因为压力很大,所以日语课就不去上了。自己做了题。 2.今天中午跑了步,心率还是有点高了,估计跟穿得最后得薄款羽绒服有关。经过昨天晚上的休息,感觉身体好多…...

Maven分离资源文件

Spring Boot 项目默认的会将所有资源文件、依赖文件、配置文件等打包成单一的 jar 文件,但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。 这时候可以在 pom.xml 文件中进行配置,从而使资源文件、依赖包和可执行文件分离。 本文主要…...

Linux CentOS 8(MariaDB概述)

Linux CentOS 8(MariaDB概述) 目录 一、项目描述二、相关知识2.1 数据库的基本介绍2.2 数据库的分类介绍 三、项目分析3.1 安装并启动 MariaDB3.2 登录 MariaDB 数据库3.3 提高 MariaDB 安装安全性 一、项目描述 Jan16 公司为满足部门之间数据共享、减少…...

简述几个我们对Redis 7开源社区所做的贡献

Redis 7 已经于2022年4月28号正式发布,其中包括了将近50个新的命令,增加了许多新的特性,并且在整个Redis 6到Redis 7的开发过程中,我也对Redis 的开源社区贡献了一些微薄的力量。在这篇文章中,我来给大家介绍几个自己亲…...

产品卖点怎么写,如何打造卖点?

...

跟李沐学AI-深度学习课程00-03【预告、课程安排、深度学习介绍、安装】

目录 00 预告 01 课程安排 02 深度学习介绍 03 安装 本地安装 04 数据操作数据预处理 数据操作 数据类型 创建数组 访问元素 数据操作实现 入门 运算符 广播机制 索引和切片 节省内存 转换为其他Python对象 数据预处理实现 读取数据集 处理缺失值 转换为张…...

C++ this 指针 面试

this 指针 this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向调用该成员函数的那个对象。 当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数,每次成员函数存取数据成员时,都隐…...

虚拟机上安装docker,并安装flink镜像

1. 安装docker 官网步骤:https://docs.docker.com/engine/install/centos/ sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.…...

【计算机网络】P1 计算机网络概述

P1 计算机网络概述 概念组成角度1:组成部分角度2:工作方式角度3:功能组成 功能分类按分布范围分按使用者分按交换技术按拓扑结构分按传输技术分 标准化工作及相关组织标准化工作相关组织 概念 三网融合 通过 计算机网络,将 电信网…...

003 OpenCV filter2D

目录 一、环境 二、图像卷积 三、代码演示 3.1、锐化 3.2、sobel边缘,x方向 3.3、sobel边缘,y方向 3.4、高斯模糊 3.5、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、图像卷积 在OpenCV…...

轻松玩转华为MateX5分屏功能,乐趣层出不穷!

✅小窗交互,沉浸体验不打断; ✅分区截屏,花式截图,一招搞定; ✅跨屏拖拽,随心分享易如反掌; ✅悬停视频会议,沟通效率大不同。...

springboot引入redisson分布式锁及原理

1.引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version> </dependency>2.配置类创建bean /*** author qujingye* Classname RedissonConfig* Description TOD…...

Linux驱动开发 问题随笔

1、内核空间与用户空间数据交换方式 分两种情况&#xff1a; 1> 需要交换的数据量较大时&#xff1b; 2> 需要交换的数据量较小时&#xff1b; 第一种情况使用以下的函数&#xff1a; unsigned long copy_to_user(void __user* to, const void* from, unsigned long n)…...

三分/01分数规划

三分 最小球覆盖 2018南京D 三分套三分套三分 constexpr int N105; struct node{int x,y,z; }a[N]; int n; double road(double x1,double y1,double z1,double x2,double y2,double z2){return sqrt((x1-x2)*(x1-x2)(y1-y2)*(y1-y2)(z1-z2)*(z1-z2)); } double check(double…...

大批卖家产品被下架!Temu又有新动作?

大批卖家产品被下架&#xff01;Temu又有新动作&#xff1f; 近日&#xff0c;Temu正式上线韩国站&#xff0c;截止目前已上线27个国家地区。Temu海外市场发展迅猛&#xff0c;外界的声音也褒贬不一。这其中最有发言权的&#xff0c;应该就是Temu平台的卖家了&#xff01; …...