Presto 简介


本教程是关于Presto数据查询引擎的简介内容,作为整个树懒中整个Presto教程的开端,我们会在这篇教程中为您介绍Presto的特点、架构以及这个数据查询引擎的基本原理。

1 Presto简介

Presto是一种OLAP数据查询引擎,它由Facebook于2012年开发,并于2013年正式开源。

Presto支持多种数据源,且支持数据规模达GB至PB量级的运算处理,是大规模并行处理模型(Massively parallel processing,MPP)

2 Presto的特点

  • Presto的优点

Presto数据查询引擎的架构是由关系型数据库延伸而来的,之所以Presto能够被Facebook誉为“性能比Hive好10倍之多”,是因为它具备以下几个特点:

1)支持不同数据源:Presto支持Mysql、PostgreSQL、Cassanda、Hive、Kafka、JMX等多种数据源的Connector。 

2)支持SQL查询:Presto支持SQL查询,并提供SQL Shell脚本语言,用户可直接使用Shell脚本语言进行查询。

3)扩展性强:支持开发人员对Presto进行二次开发,如用户可以根据特定的数据源去开发相对应的Connector。

4)支持混合计算:指用户可配置多个查询目录,进行混合目录的数据查询操作。

5)高性能:Facebook称Presto性能是Hive的10倍之好。

6)PipeLine式设计:Presto支持数据处理的流水过程显式化,即用户可以在操作终端看到数据处理的整个流程。

  • Presto的缺点

由于Presto数据查询引擎是基于内存来进行数据处理的,因此对于大量的数据查询而言,Presto并不适用于多表间的Join操作。

3 Presto的架构

  • Coordinator

Coordinator负责解析语句规划查询管理Presto工作节点的服务器。它是Presto的“大脑”,也是客户端连接以提交执行语句的节点。每个Presto进程都必须有一个Coordinator一个或多个Worker

  • Worker

Worker负责执行任务处理数据Worker节点从connector处获取数据并相互交换中间数据。Coordinator负责从Worker那里获取结果并将最终结果返回给客户端。

  • connector

Presto以插件形式数据存储层进行了抽象,它叫做connector。connector用于让Presto适配Hive关系性数据库等不同的数据源。

Presto包含多个内置connector:用于JMX的connector、提供对内置系统表的访问的系统connector、Hive connector和设计用于提供TPC-H基准数据的TPCH connector。

  • discovery service

用于协调Coordinator和Worker之间的服务。

4 Presto教程

本教程将对Presto这一强大的OLAP数据查询引擎进行由简入深的介绍,教会您包括基本概念、安装配置、操作过程等内容,因此零基础的小白也可放心大胆地食用~