Presto查询引擎简单分析
admin
2023-02-17 19:00:03
0

Hive查询流程分析

各个组件的作用

UI(user interface)(用户接口):提交数据操作的窗口
Driver(引擎):负责接收数据操作,实现了会话句柄,并提供基于JDBC / ODBC的execute和fetch API
Metastore(元数据):Hive元数据,存储所有表信息以及相关的HDFS文件存储目录,一般采用MySQL或者derby存储
Compiler(编译器):解析查询的SQL,生成阶段性的执行计划(包含MapReduce、元数据操作)
Execution Engine(执行引擎):执行compiler生成的执行计划。该执行计划是一个阶段的DAG


查询流程

Step 1:UI调用的Driver的execute接口

Step 2:Driver为查询创建会话句柄,并将查询发送给compiler以生成执行计划,

Step 3,4:compiler从metastore获取相关的元数据

Step 5:检查元数据,基于查询谓词调整分区,解析SQL,生成执行计划

Step 6,6.1,6.2,6.3:由compiler生成的执行计划是阶段的DAG,每个阶段都会涉及到Map/Reduce job,元数据的操作或者HDFS文件的操作。
在Map/Reduce阶段,执行计划包含Map操作树(操作树在Mappers上执行)和reduce操作树(Reduce 操作树在 Reducers上执行),
Execution Engine 将各个阶段提交个适当的组件执行。
Step 7, 8 and 9:在每个任务(mapper / reducer)中,表或者中间输出相关的反序列化器从HDFS读取行,并通过相关的操作树进行传递。
一旦这些输出产生,将通过序列化器生成零时的的HDFS文件(这个只发生在只有Map没有reduce的情况),生成的HDFS零时文件用于执行计划后续的Map/Reduce阶段。
对于DML操作,临时文件最终移动到表的位置。该方案确保不出现脏数据读取(文件重命名是HDFS中的原子操作),
对于查询,临时文件的内容由Execution Engine直接从HDFS读取,作为从Driver Fetch API的一部分


Presto查询流程分析

在Map/Reduce阶段 执⾏计划包含Map操作树 操作树在Mappers上执⾏ 和reduce

Presto查询引擎简单分析


各个组件的作用

Client(客户端):提交数据操作的窗口

Discovery Server(服务发现者):存储可用的Server列表
Coordinator(协调者): 接收数据操作,解析SQL语句,生成查询计划,分发任务至Worker机
Connector Plugin(连接插件):连接Storagr,提供元数据,支持Hive、Kafka、MySQL、MonogoDB、Redis、JMX等数据源,可自定义
Worker(执行者):执行查询计划


查询流程

1、Client使用HTTP协议发送一个query请求
2、通过Discovery Server发现可用的Server
3、Coordinator构建查询计划(通过Anltr3解析为AST(抽象语法树),然后通过Connector获取原始数据的Metadata信息,生成分发计划和执行计划)
4、Coordinator向workers发送任务
5、Worker通过Connector插件读取数据
6、Worker在内存里执行任务(Worker是纯内存型计算引擎)
7、Worker将数据返回给Coordinator,汇总之后再响应客户端


Presto与Hive对比

Presto查询引擎简单分析


区别:
MapReduce每个操作都需要写磁盘,每个stage需要等待前一个stage全部完成才开始执行,  
而Presto将SQL转换为stage,每个stage又由多个tasks执行,每个tasks又将分为多个split。  
所有的task是并行的方式执行,stage之间数据是以pipeline形式流式的执行,  
数据之间的传输也是通过网络以Memory-to-Memory的形式进行,没有磁盘io操作。  
这也是Presto性能比Hive快5-10倍的决定性原因


Presto缺点

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

2、内存限制,由于Presto是纯内存计算,所以当内存不够时,Presto并不会将结果dump到磁盘上,所以查询也就失败了(据说最新版本的Presto已经支持写盘操作)

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

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


Mob项目的应用
http://gitlab.code.mob.com/mobdata-plat/dbcloud-api



相关内容

热门资讯

欧盟对俄制裁列单中企,中国驻欧... 问:2026年7月23日,欧盟通过第21轮对俄罗斯制裁方案,新增列单制裁中国企业。中方对此有何评论?...
特朗普预警9月政府“停摆”,美... 一国总统公开预警自家联邦政府即将“停摆”,这种魔幻剧情又双叒叕要在华盛顿上演?当地时间7月22日,特...
视频丨2026年APEC数字和... 昨天(23日),2026年亚太经合组织数字和人工智能部长会议在四川成都举行。本届会议的主题为“数字和...
海南商发二期发射区土建完工,建... 7 月 24 日消息,海南商发今日宣布,海南商业航天发射场二期发射区建设项目土建工作完成,全面转入设...
菲律宾,没有以色列的命,得了以... 菲律宾,马尼拉。美国国务卿鲁比奥来了。菲律宾期盼已久的“救星”来了。菲律宾认为的“阳光”来了。从机场...
服务器盛会东莞启幕,松山湖软硬... 7月23日至24日,“智算筑基 融链共赢——2026年服务器产业供需对接活动”在东莞举行。作为系列配...
面向6G通信、高端安检、精准医... 太赫兹作为“电磁波段最后一块未开垦之地”,近年在超快光电子、低尺度半导体技术的推动下,逐步从实验室走...
获得全球最高奖项的中国数学家,... 一个喜欢玩梗的二次元大佬,竟然站上了数学界最高荣誉的领奖台。他就是今年的菲尔兹奖得主之一,邓煜。另一...
单向空间杭州旗舰店8年后谢幕,... 去年12月,单向空间杭州乐堤港店员工回应闭店谣言,称“没有收到任何闭店通知”。不到一年,停止营业的消...
带娃家长刷不到下铺,算法不该把... 据新华社的报道,一位宝妈带4岁娃要从昭通去杭州南,在12306上购票时反复被分到上铺,一天内取消三次...