0
点赞
收藏
分享

微信扫一扫

初识Presto

概述

        Presto是一个分布式SQL查询引擎,它被设计专门用于进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(Aggregation)、连接(Join)和窗口函数(Window function)。

        Presto的运行模型和Hive或MapReduce有着本质的区别。Hive将查询翻译成多阶段的MapReduce任务,一个接着一个运行,每一个任务从磁盘读取输入数据并且将中间结果输出到磁盘上。然而,Presto引擎没有使用MapReduce,它使用了一个定制的查询和执行引擎及响应的操作符来支持SQL语法。除了改进的调度算法之外,所有的数据处理都是在内存中进行的。通过软件的优化,形成处理的流水线,以避免不必要的磁盘读写和额外的延迟。这种流水线式的执行模型会在同一时间运行多个数据处理段,一旦数据可用就会将数据从一个处理段传入下一个处理段。这样的方式会大大减少各种查询的端到端响应时间。

        相比Druid,Presto主要是解决SQL查询引擎的问题,将SQL查询转换成分布式任务,快速到数据存储区获得必要的数据,并且返回结果。它并不直接去优化存储结构,而是直接访问HDFS或者其他数据存储层。

架构

        在上面的架构图中可以看出,Coordinator负责与客户端交互,发现Worker节点并协调相应的查询任务。

节点类型

1. Coordinator

2. Worker

        Presto通过Coordinator(协调节点)和Worker(工人节点),完成查询任务。Coordinator接收客户端的查询请求,并把查询任务分解到Worker节点完成查询工作,最后汇总结果返回给客户端。

注意

        Presto查询的数据源不在Presto本身的整体架构内,只需要合适的Connector,Presto既可以把传统的关系型数据库作为数据源,也可以把Hadoop和HDFS作为数据源。

举报

相关推荐

0 条评论