presto是什么_chenyulancn的博客-CSDN博客_presto是什么


本站和网页 https://blog.csdn.net/chenyulancn/article/details/79474218 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

presto是什么_chenyulancn的博客-CSDN博客_presto是什么
presto是什么
chenyulancn
于 2018-03-07 17:24:21 发布
9762
收藏
15
分类专栏:
大数据
大数据
专栏收录该内容
32 篇文章
2 订阅
订阅专栏
presto是什么
是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎
是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏
⽀持任意数据源(通过扩展式Connector组件),数据规模GB~PB级
使用的技术,如向量计算,动态编译执⾏计划,优化的ORC和Parquet Reader等
presto不太支持存储过程,支持部分标准sql
presto的查询速度比hive快5-10倍
上面讲述了presto是什么,查询速度,现在来看看presto适合干什么
适合:PB级海量数据复杂分析,交互式SQL查询,⽀持跨数据源查询
不适合:多个大表的join操作,因为presto是基于内存的,多张大表在内存里可能放不下
和hive的对比:
hive是一个数据仓库,是一个交互式比较弱一点的查询引擎,交互式没有presto那么强,而且只能访问hdfs的数据
presto是一个交互式查询引擎,可以在很短的时间内返回查询结果,秒级,分钟级,能访问很多数据源
hive在查询100Gb级别的数据时,消耗时间已经是分钟级了
但是presto是取代不了hive的,因为p全部的数据都是在内存中,限制了在内存中的数据集大小,比如多个大表的join,这些大表是不能完全放进内存的,实际应用中,对于在presto的查询是有一定规定条件的,比比如说一个查询在presto查询超过30分钟,那就kill掉吧,说明不适合在presto上使用,主要原因是,查询过大的话,会占用整个集群的资源,这会导致你后续的查询是没有资源进行查询的,这跟presto的设计理念是冲突的,就像是你进行一个查询,但是要等个5分钟才有资源继续查询,这是很不合理的,交互式就变得弱了很多
presto基本架构
在谈presto架构之前,先回顾下hive的架构
hive:client将查询请求发送到hive server,它会和metastor交互,获取表的元信息,如表的位置结构等,之后hive server会进行语法解析,解析成语法树,变成查询计划,进行优化后,将查询计划交给执行引擎,默认是MR,然后翻译成MR
presto:presto是在它内部做hive类似的逻辑
接下来,深入看下presto的内部架构
这里面三个服务:
Coordinator是一个中心的查询角色,它主要的一个作用是接受查询请求,将他们转换成各种各样的任务,将任务拆解后分发到多个worker去执行各种任务的节点
1、解析SQL语句
2、⽣成执⾏计划
3、分发执⾏任务给Worker节点执⾏
Worker,是一个真正的计算的节点,执行任务的节点,它接收到task后,就会到对应的数据源里面,去把数据提取出来,提取方式是通过各种各样的connector:
1、负责实际执⾏查询任务
Discovery service,是将coordinator和woker结合到一起的服务:
1、Worker节点启动后向Discovery Server服务注册
2、Coordinator从Discovery Server获得Worker节点
coordinator和woker之间的关系是怎么维护的呢?是通过Discovery Server,所有的worker都把自己注册到Discovery Server上,Discovery Server是一个发现服务的service,Discovery Server发现服务之后,coordinator便知道在我的集群中有多少个worker能够给我工作,然后我分配工作到worker时便有了根据
最后,presto是通过connector plugin获取数据和元信息的,它不是⼀个数据存储引擎,不需要有数据,presto为其他数据存储系统提供了SQL能⼒,客户端协议是HTTP+JSON
Presto支持的数据源和存储格式
Hadoop/Hive connector与存储格式:
HDFS,ORC,RCFILE,Parquet,SequenceFile,Text
开源数据存储系统:
MySQL & PostgreSQL,Cassandra,Kafka,Redis
其他:
MongoDB,ElasticSearch,HBase
Presto中SQL运行过程:整体流程
1、当我们执行一条sql查询,coordinator接收到这条sql语句以后,它会有一个sql的语法解析器去把sql语法解析变成一个抽象的语法树AST,这抽象的语法书它里面只是进行一些语法解析,如果你的sql语句里面,比如说关键字你用的是int而不是Integer,就会在语法解析这里给暴露出来
2、如果语法是符合sql语法规范,之后会经过一个逻辑查询计划器的组件,他的主要作用是,比如说你sql里面出现的表,他会通过connector的方式去meta里面把表的schema,列名,列的类型等,全部给找出来,将这些信息,跟语法树给对应起来,之后会生成一个物理的语法树节点,这个语法树节点里面,不仅拥有了它的查询关系,还拥有类型的关系,如果在这一步,数据库表里某一列的类型,跟你sql的类型不一致,就会在这里报错
3、如果通过,就会得到一个逻辑的查询计划,然后这个逻辑查询计划,会被送到一个分布式的逻辑查询计划器里面,进行一个分布式的解析,分布式解析里面,他就会去把对应的每一个查询计划转化为task
4、在每一个task里面,他会把对应的位置信息全部给提取出来,交给执行的plan,由plan把对应的task发给对应的worker去执行,这就是整个的一个过程
这是一个通用的sql解析流程,像hive也是遵循类似这样的流程,不一样的地方是distribution planner和executor pan,这里是各个引擎不一样的地方,前面基本上都一致的
Presto中SQL运行过程:MapReduce vs Presto
task是放在每个worker上该执行的,每个task执行完之后,数据是存放在内存里了,而不像mr要写磁盘,然后当多个task之间要进行数据交换,比如shuffle的时候,直接从内存里处理
Presto监控和配置:监控
Web UI
  Query基本状态的查询
JMX HTTP API
  GET /v1/jmx/mbean[/{objectName}]    • com.facebook.presto.execution:name=TaskManager    • com.facebook.presto.execution:name=QueryManager    • com.facebook.presto.execution:name=NodeScheduler事件通知  Event Listener    • query start, query complete
Presto监控和配置:配置
执行计划计划(Coordinator)
node-scheduler.include-coordinator
  • 是否让coordinator运行task
query.initial-hash-partitions
  • 每个GROUP BY操作使⽤的hash bucket(=tasks)最大数目(default: 8)
node-scheduler.min-candidates
  • 每个stage并发运行过程中可使用的最大worker数目(default:10)
query.schedule-split-batch-size
  • 每个split数据量
任务执行(Worker)
query.max-memory (default: 20 GB)
  • 一个查询可以使用的最大集群内存
  • 控制集群资源使用,防止一个大查询占住集群所有资源
  • 使用resource_overcommit可以突破限制
query.max-memory-per-node (default: 1 GB)
  • 一个查询在一个节点上可以使用的最大内存
举例
  • Presto集群配置: 120G * 40
  • query.max-memory=1 TB
  • query.max-memory-per-node=20 GB
query.max-run-time (default: 100 d)
  • 一个查询可以运行的最大时间
  • 防止用户提交一个长时间查询阻塞其他查询
task.max-worker-threads (default: Node CPUs * 4)
  • 每个worker同时运行的split个数
  • 调大可以增加吞吐率,但是会增加内存的消耗
队列(Queue)
任务提交或者资源使用的一些配置,是通过队列的配置来实现的
资源隔离,查询可以提交到相应队列中
• 资源隔离,查询可以提交到相应队列中• 每个队列可以配置ACL(权限)• 每个队列可以配置Quota  可以并发运行查询的数量  排队的最大数量
大数据OLAP引擎对比
Presto:内存计算,mpp架构
Druid:时序,数据放内存,索引,预计算
Spark SQL:基于Spark Core,mpp架构
Kylin:Cube预计算  
最后,一些零散的知识点
presto适合pb级的海量数据查询分析,不是说把pb的数据放进内存,比如一张pb表,查询count,vag这种有个特点,虽然数据很多,但是最终的查询结果很小,这种就不会把数据都放到内存里面,只是在运算的过程中,拿出一些数据放内存,然后计算,在抛出,在拿,这种的内存占用量是很小的,但是join这种,在运算的中间过程会产生大量的数据,或者说那种查询的数据不大,但是生成的数据量很大,这种也是不合适用presto的,但不是说不能做,只是会占用大量内存,消耗很长的时间,这种hive合适点
presto算是hive的一个补充,需要尽快得出结果的用presto,否则用hive
work是部署的时候就事先部署好的,work启动100个,使用的work不一定100个,而是根据coordinator来决定拆分成多少个task,然后分发到多少个work去
一个coordinator可能同时又多个用户在请求query,然后共享work的去执行,这是一个共享的集群
coordinator和discovery server可以启动在一个节点一个进程,也可以放在不同的node上,但是现在公司大部分都是放在一个节点上,一个launcher start会同时把上述两个启动起来
对于presto的容错,如果某个worker挂掉了,discovery server会发现并通知coordinator
但是对于一个query,是没有容错的,一旦一个work挂了,那么整个qurey就是败了
因为对于presto,他的查询时间是很短的,与其查询这里做容错能力,不如重新执行来的快来的简单
对于coordinator和discovery server节点的单点故障,presto还没有开始处理这个问题貌似
chenyulancn
关注
关注
点赞
15
收藏
评论
presto是什么
presto是什么是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏⽀持任意数据源(通过扩展式Connector组件),数据规模GB~PB级使用的技术,如向量计算,动态编译执⾏计划,优化的ORC和Parquet Reader等presto不太支持存储过程,支持部分标准sql...
复制链接
扫一扫
专栏目录
presto和hive的使用区别
11-27
Hive是把一个查询转化成多个MapReduce任务,然后一个接一个执行。执行的中间结果通过对磁盘的读写来同步。然而,Presto没有使用MapReduce,它是通过一个定制的查询和执行引擎来完成的。它的所有的查询处理是在内存中,这也是它的性能很高的一个主要原因。
Presto和Spark语法差异
书忆江南的IT博客
10-31
535
Presto返回2,Spark返回2.5。Spark会返回结果12,Presto会返回空,除非写select substr('123', 1, 2);Spark会返回1,而Presto会报错。该查询中tag列中包含特殊空格制表符,如下图所示:在Presto中,末尾处的正则表达式应该用解决方法:使用element_at(map(K, V), key)获取值,不要用map[key]写法。参考:Presto与众不同的那些坑_while(True):的博客-CSDN博客_presto unnest。
参与评论
您还未登录,请先
登录
后发表或查看评论
第二章:大数据 MPP 工具 Presto
09-17
1.Presto 技术原理与架构
2.presto架构
3.presto低延迟原理
4.presto存储插件
5.presto执行过程
6.presto引擎对比
7.presto 演示
Presto (一) --------- Presto 简介
最新发布
在森林里麋了鹿
11-06
446
Presto简介
[Presto]什么是Presto
SmartSi
09-30
6872
1. Presto不是什么
虽然Presto一直被一些个人或者团体称为 数据库 ,但是Presto并不是数据库。
千万不要以为Presto可以解析SQL,那么Presto就是一个标准的数据库。Presto并不是传统意义上的数据库。Presto并不是MySQL、PostgreSQL或者Oracle的代替品。Presto并不能用来处理在线事务。其实很多其他的数据库产品也是被用来设计为数据仓
深入理解Presto
01-27
Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:清晰的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。
简单的数据结构,列式存储,逻辑行,大部分数据都可以轻易的转化成presto所需要的这种数据结构。
Presto中的名词解释
qq_32736999的博客
06-24
537
presto服务进程
presto集群中一共有两种服务器进程:coordinator服务进程和worker服务进程,其中coordinator服务进程的主要作用是:接收查询请求、解析查询语句、生成查询执行计划、任务调度和worker管理。而worker服务进程则执行被分解后的查询执行任务:task
coordinator
coordinator服务进程部署于集群中一个单独的节点上,是整个prest...
Presto是什么
zjttlance的专栏
10-30
1197
presto是什么
是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎
是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏
⽀持任意数据源(通过扩展式Connector组件),数据规模GB~PB级
使用的技术,如向量计算,动态编译执⾏计划,优化的ORC和Parquet Reader等
presto不太支持存储过程...
[大数据] Presto架构及原理
1.02^365的成长裂变
07-26
5286
Presto 是 Facebook 推出的一个基于Java开发的大数据分布式 SQL 查询引擎,可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别,据称该引擎的性能是 Hive 的 10 倍以上。Presto 可以查询包括 Hive、Cassandra 甚至是一些商业的数据存储产品,单个 Presto 查询可合并来自多个数据源的数据进行统一分析。Presto 的目标...
presto源码学习1——Presto概述
小黄鸭的博客
10-17
825
presto源码学习1——Presto概述
presto是基于Java语言开发的一个用来即席查询大数据的查询引擎,是facebook公司的一个开源产品
相关文档
git地址:https://gitee.com/mirrors/presto.git
官方文档
presto的特点
特点
说明
多数据源
presto目前支持包括mysql、hive等多种常用存储
扩展性
presto支持开发者自定义开发可插拔式的数据源插件
混合计算
presto支持同一个集群接入多个同一种存储组件
Presto简介
qq_42511550的博客
08-07
9191
一 Presto 是什么
Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。因此Presto集群的硬件必须满足大内存,万兆网络和高计算能力特点。
二 Presto 特点
三 Presto基本概念
1 Presto 服务进程
Presto 集群中一共有两种服务器进程: Coordinator服务进程,Worker服务进程。因此Presto集群是Master-Slave的拓扑结构。
Coordi
presto是什么?
weixin_43592194的博客
02-18
299
是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎
是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏
⽀持任意数据源(通过扩展式Connector组件),数据规模GB~PB级
使用的技术,如向量计算,动态编译执⾏计划,优化的ORC和Parquet Reader等
presto不太支持存储过程,支持部分标准sql
pres...
presto 理论概念和安装部署总结
qq_41578371的博客
03-21
872
presto 理论概念和安装部署总结
presto 理论概念
presto 定义与概念
MPP(大规模并行处理)引擎MPP就是将任务并行地分散到多个服务器与节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果,Presto就是MPP引擎,Presto对于task中的splits可以做到并行处理。
presto 由facebook开源,用于在apache hadoop 之上的数据仓库上运行交互式查询。presto 是开源的用于大数据高性能的分布式的sql查询引擎,通过presto 可以让
关于对presto统一查询引擎的理解
qq_38976693的博客
09-28
2118
presto是个开源的,分布式的查询引擎,基于内存的并行计算,MPP架构,速度比hive快5-6倍,但并不能完全取代hive。
上面讲述了presto是什么,查询速度,现在来看看presto适合干什么
适合:PB级海量数据复杂分析,交互式SQL查询,⽀持跨数据源查询
不适合:多个大表的join操作,因为presto是基于内存的,多张大表在内存里可能放不下
和hive的对比:...
深入理解Presto(1) : Presto的架构
马云雷的专栏
10-12
8074
简介Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:
清晰的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。
简单的数据结构,列式存储,逻辑行
Presto - 简介(一)
牧码的博客
12-10
719
背景
MapReduce不能满足大数据快速实时adhoc查询计算的性能要求,Facebook2012年开发,2013年开源。
是什么
基于内存的并行计算,Facebook推出的分布式SQL交互式查询引擎,多个节点管道式执行,支持任意数据源 数据规模GB~PB 是一种Massively parallel processing(mpp)(大规模并行处理)模型数据规模PB 不是把PB数据放到内存,只是在计算中拿出一部分放在内存、计算、抛出、再拿。
为什么要用 & 优点 & 特点..
初识机器学习
WihauShe's Blogger
06-26
96
概念
利用计算机从历史数据中找出规律,并把这些规律用到对未来不确定场景的决策。
特点
在数据中寻找规律
用数据代替专家
经济驱动,数据变现
发展历史
基于专家经验
基于统计-分纬度统计
机器学习-在线学习
数据分析与机器学习
常用的算法
框架
...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
chenyulancn
CSDN认证博客专家
CSDN认证企业博客
码龄17年
暂无认证
89
原创
2万+
周排名
95万+
总排名
232万+
访问
等级
2万+
积分
374
粉丝
439
获赞
160
评论
1539
收藏
私信
关注
热门文章
解决socket.error: [Errno 98] Address already in use问题
64205
FW/IDS/IPS/WAF等安全设备部署方式及优缺点
62746
总结C++中几种结构体初始化的方法
56163
python apply函数的用法
44224
python中 class 或对象属性转化成dict 、dict转换成对象
37714
分类专栏
wsl-linux
4篇
MinIO
1篇
mysql
4篇
aarch64
1篇
Flink
2篇
python
171篇
cython
4篇
vscode
1篇
linux
232篇
C、C++
44篇
xen、kvm 虚拟化技术
93篇
go
15篇
java
14篇
c#
4篇
redis
17篇
MongoDB
8篇
Docker
19篇
groovy
8篇
nginx
9篇
lua
7篇
大数据
32篇
ovs
2篇
windows
5篇
架构
2篇
网络及网络安全
28篇
存储
6篇
libvirt
50篇
messagepack
1篇
区块链
2篇
Ocaml
5篇
其它
34篇
elastic
3篇
最新评论
WSL2常用命令、设置静态 IP 地址
qq_37225682:
操作前 window(ip) wsl(ip) ubuntu(ip) 能两两ping通 且能ping百度 照楼主 想固定wsl(ip)跟ubuntu(ip)
操作后 ubuntu(ip) ping不通window(ip) 也不能上网 防火墙开了也不行
wsl -d Ubuntu-22.04 -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d Ubuntu-22.04 -u root ip addr add 192.168.4.220/24 broadcast 192.168.4.255 dev eth0
wsl -d Ubuntu-22.04 -u root ip route add 0.0.0.0/0 via 192.168.4.215 dev eth0
wsl -d Ubuntu-22.04 -u root echo nameserver 192.168.4.215 ^> /etc/resolv.conf
powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 192.168.4.215 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.4.0/24;"
操作前 window(192.168.4.230) wsl(172.X.X.X) ubuntu(172.X.X.X)
操作后 window(192.168.4.230) wsl(192.168.4.235) ubuntu(192.168.4.240)
wsl 启动 [已退出进程,代码为 4294967295] 解决办法
不要剁我爪:
这个方法的本质是把在‘启用或关闭Windows功能’里把‘虚拟机平台’和‘适用于Linux的子系统’关闭,重启电脑再打开,再重启电脑。有用
qemu-kvm虚拟机与宿主机之间简单文件传输方法
慢慢走比较快k:
这个可以实现虚拟机给宿主机传回去文件吗,我知道宿主给虚拟机传文件就是在虚拟机重新挂载一下就行;所以反过来传输的话就是把宿主机重新挂载一下吗,还是怎么说
Process finished with exit code -1073740791 (0xC0000409)
only-lucky:
这方法一改,你的print终端输入就成程序退出打印了,不能监控鼠标点击事件
qemu-kvm虚拟机与宿主机之间简单文件传输方法
Studying!!!:
第四部具体命令是啥啊
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
docker elastic search 设置密码,修改密码
C++11下的单例模式
vsftpd 服务配置
2022年20篇
2021年17篇
2020年9篇
2019年11篇
2018年71篇
2017年112篇
2016年101篇
2015年46篇
2014年88篇
2013年146篇
2012年133篇
目录
目录
分类专栏
wsl-linux
4篇
MinIO
1篇
mysql
4篇
aarch64
1篇
Flink
2篇
python
171篇
cython
4篇
vscode
1篇
linux
232篇
C、C++
44篇
xen、kvm 虚拟化技术
93篇
go
15篇
java
14篇
c#
4篇
redis
17篇
MongoDB
8篇
Docker
19篇
groovy
8篇
nginx
9篇
lua
7篇
大数据
32篇
ovs
2篇
windows
5篇
架构
2篇
网络及网络安全
28篇
存储
6篇
libvirt
50篇
messagepack
1篇
区块链
2篇
Ocaml
5篇
其它
34篇
elastic
3篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值