01 presto 概述: 特性 优缺点 场景 架构

news2024/9/27 9:28:45

在这里插入图片描述

文章目录

  • 1. Presto是什么
  • 2. Presto优缺点
    • 2.1. 优点
    • 2.2. 缺点
  • 3. Presto适用场景
  • 4. Presto数据模型
  • 5. Presto 架构
    • 5.1 执行流程

关键词:MPP 多源 即席查询 统一SQL执行引擎 分布式SQL引擎 数据分析

1. Presto是什么

  • Presto是一款开源的分布式并行计算(MPP)引擎,主要适用于大数据领域GB~PB量级数据源的秒级分析查询场景需求。
  • Presto的产生是为了解决MapReduce模型太慢且不能通过BI等工具展现HDFS数据的问题
  • Presto是一个计算引擎,它不存储数据,主要通过丰富的Connector,获取第三方的数据,并支持扩展

官网介绍:
Apache Presto is a distributed parallel query execution engine, optimized for low latency and interactive query analysis. Presto runs queries easily and scales without down time even from gigabytes to petabytes.
A single Presto query can process data from multiple sources like HDFS, MySQL, Cassandra, Hive and many more data sources. Presto is built in Java and easy to integrate with other data infrastructure components. Presto is powerful, and leading companies like Airbnb, DropBox, Groupon, Netflix are adopting it.

2. Presto优缺点

2.1. 优点

  • Presto支持标准的SQL,降低了分析人员和开发人员的使用门槛
  • Presto支持可插拔的Connector,可以连接多种数据源,且支持跨数据源关联查询。eg: Hive、Mysql、Oracle、Kafka、MongoDB、Es、Postgresql…
  • Presto是一个低延时、高并发的内存计算引擎, 执行效率远远高于Hive
  • 部署简单,监控丰富

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

2.2. 缺点

  1. 内存限制: 虽然能够处理 PB 级别的海量数据分析,但不是代表 Presto 把 PB 级别都放在内存中计算的。而是根据场景,如 count,avg 等聚合运算,是边读数据边计算,再清内存,再读数据再计算,这种耗的内存并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢,反而 Hive此时会更擅长。

  2. 没有容错能力,当一个query分发到多个Worker去执行时,当有一个Worker因为各种原因查询失败,Master感知到之后,整个query也会失败

  3. 并行查询,因为所有的task都是并行执行,如果其中一台Worker因为各种原因查询很慢,那么整个query就会变得很慢

  4. 并发限制,因为全内存操作+内存限制,能同时处理的数据量有限,因而导致并发能力不足

3. Presto适用场景

  • 加速Hive查询。Presto的执行模型是纯内存MPP模型,比Hive使用的磁盘Shuffle的MapReduce模型快至少5倍。
  • 统一SQL执行引擎。Presto兼容ANSI SQL标准,能够连接多个RDBMS和数据仓库的数据源,在这些数据源上使用相同的SQL语法和SQL Functions。
  • 为那些不具备SQL执行功能的存储系统带来SQL执行能力。例如Presto可以为HBase、Elasticsearch、Kafka带来SQL执行能力,甚至是本地文件、内存、JMX、HTTP接口,Presto也可以做到。
  • 构建虚拟的统一数据仓库,实现多数据源联邦查询。如果需要计算的数据源分散在不同的RDBMS,数据仓库,甚至其他RPC系统中,Presto可以直接把这些数据源关联在一起分析(SQL Join),而不需要从数据源复制数据,统一集中到一起。
  • 数据迁移和ETL工具。Presto可以连接多个数据源,再加上它有丰富的SQL Functions和UDF,可以方便的帮助数据工程师完成从一个数据源拉取(E)、转换(T)、装载(L)数据到另一个数据源。

4. Presto数据模型

  • Catalog : 即数据源。Hive、Mysql都是数据源,Presto可以连接多个Hive和多个Mysql
  • Schema: 类比于DataBase, 一个Catalog下有多个Schema
  • Table: 数据表,与我们常用的数据库表意义相同,一个Schema下有多个数据表

查询示例:

SELECT * from hive.dwd.table_a a 
JOIN mysql.dim.user_type_dim b
WHERE a.id = b.id

5. Presto 架构

Presto是MS(master- slave)架构的,由一个Coordinator节点,一个Discovery 节点,和多个Worker节点组成,如下所示:
在这里插入图片描述
上图由不同的组件组成。下表详细描述了每个组件。

在这里插入图片描述

5.1 执行流程

1、提交SQL:用户可以在SQL Client(CLI/JDBC/HTTP) 输入SQL,它负责提交SQL Query给Presto集群(Coordinator)

2、生成执行计划,任务调度:Coordinator接到SQL后,通过SQL语法解析器把SQL语法解析变成一个抽象的语法树AST,语法符合SQL语法,会经过一个逻辑查询计划器组件,通过connector 查询metadata中schema 列名 列类型等,将之与抽象语法数对应起来,生成一个物理的语法树节点, 然后得到一个逻辑的查询计划,将其分发到分布式的逻辑计划器里,拆分Stage和Task,调度分布式执行的Task到Presto Worker上。

3、执行:Presto Worker 负责执行收到的HttpRemoteTask,根据执行计划确定好都有哪些Operator以及它们的执行顺序,之后通过TaskExecutor和Driver完成所有Operator的计算。如果第一个要执行的Operator是SourceOperator,当前Task会先从External Storage System中拉取数据再进行后续的计算。如果最后一个执行的Operator是TaskOutputOperator,当前Task会将计算结果输出到OutputBuffer,等待依赖当前Stage的Stage来拉取结算结果。整个Query的所有Stage中的所有Task执行完后,将最终结果返回给SQL Client。

PS:
External Storage System:由于Presto自身不存储数据,计算涉及到的数据及元数据都来自于外部存储系统,如HDFS,AWS S3等分布式系统。在企业实践经验中,经常使用HiveMetaStore来存存储元数据,使用HDFS来存储数据,通过Presto执行计算的方式来加快Hive表查询速度。

执行计划:它描述的是SQL执行的详细步骤和细节,SQL执行引擎只要按照执行计划执行即可完成整个计算过程,如下图:

在这里插入图片描述


参考资料:

  1. https://prestodb.io/
  2. https://www.tutorialspoint.com/apache_presto/apache_presto_architecture.htm

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

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

相关文章

Hive基础命令

一、Hive其他命令 1、在hive cli命令窗口中如何查看hdfs文件系统 dfs -ls /;2、在hive cli命令窗口中如何查看本地文件系统 !ls /opt;二、Hive数据类型 1、基本数据类型 红标为常用的数据类型; 对于Hive的String类型相当于数据库的varchar类型,该类型…

python之web自动化测试框架

梳理下搭建web自动化框架的流程: 创建目录: cases:存放测试用例,unittest框架要求用例名必须以test开头,所以命名test_case.py test_case.py代码如下:继承unittest.TestCase类下面的方法setupclass(),te…

优思学院|精益生产现场管理的要素是什么?

精益生产的目的是通过消除3M来实现生产过程的优化和精简。3M指的是 "Muda"、"Muri"、"Mura",这三个词来自于日本,代表了生产过程中的浪费、超负荷和不平衡。 因此,要消除3M,优思学院认为企业精益生…

qt-c++进阶1-window、linux下获取本机所有网卡ip信息、根据网卡名获取ip地址。

系列文章目录 例如:第一章 主要是通过qt-c实现获取本机电脑的网卡信息或者是IP信息 文章目录系列文章目录前言一、获取本机网卡IP信息1.1 获取ip地址方法1.2 代码实例总结前言 总结c获取本机网卡信息的方法 第一章:适用于windows操作系统、linux操作系…

中级嵌入式系统设计师2015下半年下午应用技能试题

中级嵌入式系统设计师2015下半年下午试题 试题一 阅读以下关于某嵌入式系统设计的说明,回答下列问题。 [说明] 某公司承接了某嵌入式系统的研制任务。该嵌入式系统由数据处理模块、系统管理模块、FC网络交换模块和智能电源模块组成,系统组成如图1所示。数据处理模块处理系统…

Linux 练习三 (Makefile工程管理器)

文章目录Makefile工程管理器第一个makefile:编写两个.c源文件,并且让一个调用另外一个,使用makefile建立依赖,生成可执行文件,并执行。伪目标变量预定义变量和自动变量通配符和模式匹配内置函数循环指定makefile文件综…

js数组格式字符串处理

文章目录一. 前言二. 数组还原1. 方法一2. 方法二3. 方法三4. 方法四一. 前言 由于数据传输的问题我们常常在请求后拿到数组格式的字符串,一般情况分为以下四种: let str1 ["a","b","c","d"]; // 类型一 let…

【异常解决】The coordinator is not available

问题 最近上线跑了一个flink任务,运行不久,就会挂掉,初步查看日志报错如下 WARN org.apache.flink.connector.kafka.source.reader.KafkaSourceReader [] - Failed to commit consumer offsets for checkpoint 1 org.apache.kafka.clients…

IGBT窄脉冲现象

IGBT窄脉冲现象 tips:资料来自知乎 英飞凌《IGBT窄脉冲现象解读》 IGBT窄脉冲现象 1.什么是窄脉冲现象? 2.窄脉冲现象的原因 3.双脉冲测试IGBT窄脉冲开通 4.FWD窄脉冲开通 1.什么是窄脉冲现象? IGBT作为一种功率开关,从门级信号到器件开关过程…

用Python制作邮件检测器

github地址: https://github.com/CaLlMeErIC/MailDetective 因为需求需要写一个简单的邮件检测系统的框架,这里记录下思路 首先第一反应,这个检测系统不应该是各个邮件收件系统都有自带的吗,于是搜索了下是否有相关的邮件检测开源软件&#…

行测-判断推理-图形推理-样式规律-属性规律-对称性

中心对称:可以看作,图上的每一个点,都能关于中心点,在图上找到另一个对称的点五个图都是轴对称图形,只有答案C是轴对称图形选C都是中心对称图形选A1 3 5中心对称2 4 6轴对称中心对称选B对称轴顺时针45旋转选A对称轴的数…

极智项目 | 实战pytorch arcface人脸识别

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文介绍 实战pytorch arcface人脸识别,并提供完整项目源码。 本文介绍的实战arcface人脸识别项目,提供完整的可以一键训练、测试的项目工程…

微信公众号历史作品定向采集

最近有遇到微信公众号历史作品采集的需求,这里做一下记录, 登录自己注册好的的微信公众号后台进入创作界面,点击右上角的引用: 弹出如下界面: 选择查找公众号文章,输入要查找的公众号: 回车: 同时就可以打开F12开始抓包,选择公众号点击进入: appmsg?action=li…

golang 整合antlr语法校验

1. 背景 在项目中我们可能会遇到表达式检索的场景,例如,输入以下表达式检索,需要解析表达式并得到检索结果。 ip"192.168.1.3" && (port"80" || protocol"http")此时,我们需要对语法进行…

Linux启动过程

theme: channing-cyan 两种启动方式 传统启动方式(LEGACYMBR) 指传统BIOS启动方式,存在一些不足:比如最大只支持2TB磁盘,磁盘最多四个分区,且不支持图形操作 UEFIGPT方式 是新式的启动方式&#xff0c…

数学小课堂:三次方程(定理发明的过程)

文章目录 引言I 一元三次方程1.1 通解发明权之争1.2 费拉里-塔尔塔利亚公式1.3 Mathematica1.4 数学定理发明的过程引言 学习数学,最重要的是把实际问题变成数学问题,然后知道如何利用各种软件工具来解决。 方程是一个能把具体问题,等量转化成类型问题的好工具。 一元三次方…

Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch最全教程

文章目录一:Anaconda安装二:Cuda、Cudnn安装三:Pytorch安装一:Anaconda安装 Jetson系列边缘开发板,其架构都是arm64,而不是传统PC的amd64,深度学习的环境配置方法大不相同。想要看amd64的相关环…

智能家居项目(六)之摄像头模块

目录 一、树莓派mipg-streamer实现监控功能调试 1、实现基本思路 2、安装摄像头模块 2.1、在安装sudo apt-get install libv4l-dev 的命令时报错 3、开启摄像头 以下内容是针对树莓派是stretch版本的修改办法: 一、树莓派mipg-streamer实现监控功能调试 1、…

有哪些前端面试题是必须要掌握的

对浏览器的缓存机制的理解 浏览器缓存的全过程: 浏览器第一次加载资源,服务器返回 200,浏览器从服务器下载资源文件,并缓存资源文件与 response header,以供下次加载时对比使用; 下一次加载资源时&#x…

Flow API搭建指南

搭建Flow API,首先需要安装知行之桥EDI系统,注意,Flow API为新增功能,仅在2022版本(8336)及以后支持,如果你发现正在使用的产品没有这个功能,可以在我们官网下载最新版本或者联系我们…