大数据SQL查询引擎 Presto 简介
作者头像
  • 许晨
  • 2020-10-12 16:44:18 8

一、Presto概述

Presto是由Facebook开发的一种数据查询工具,能够高效地处理超过250PB的数据,并支持快速的交互式分析。

该项目始于2012年,如今已经在超过1000名Facebook员工中广泛使用,每天处理的数据量达到1PB以上。据Facebook称,Presto的性能比Hive高出10倍以上。2013年,Facebook正式对外开源了Presto项目。

二、Presto查询执行流程

Presto采用主从架构,包括一个协调器节点、一个发现服务器节点以及多个工作节点。发现服务器通常集成在协调器节点中。协调器负责解析SQL语句,生成执行计划,并将任务分配给工作节点执行。工作节点则负责实际执行查询任务。工作节点启动后会向发现服务器注册,协调器通过发现服务器找到可用的工作节点。如果启用了Hive连接器,则需要配置一个Hive元存储服务来为Presto提供Hive元数据,工作节点会与HDFS交互以读取数据。

  1. 客户端向协调器发送请求。
  2. SQL语句通过ANTLR进行语法分析,生成抽象语法树(AST)。
  3. 抽象语法树通过元数据进行语义解析。
  4. 解析后的数据生成逻辑执行计划,并通过规则进行优化。
  5. 逻辑执行计划被拆分为不同的阶段,并调度工作节点生成任务。
  6. 任务生成相应的物理执行计划。
  7. 协调器根据调度结果将各个阶段串联起来。
  8. 工作节点执行物理执行计划。
  9. 客户端不断从协调器获取查询结果,协调器从最终汇总结果的工作节点拉取查询结果。

三、Presto为何具有高性能?

  • Pipeline和全内存计算:Presto采用了管道式处理和全内存计算的方式,提高了数据处理速度。
  • SQL查询计划优化:通过规则优化SQL查询计划,进一步提升性能。
  • 动态代码生成技术:利用动态代码生成技术,实现高效的代码执行。
  • 数据调度本地化:通过优化数据结构、缓存和非精确查询等技术,提高数据调度的效率,降低内存开销。

如需了解更多关于Hadoop、HDFS、HBase、MapReduce、YARN、Hive等技术的内容,欢迎访问Hadoop大数据技术专栏。

    本文来源:图灵汇
责任编辑: : 许晨
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
引擎简介数据Presto查询SQL
    下一篇