分布式SQL查询引擎技术选型presto及部署文档
简介
Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。
- Presto是Facebook开发的数据查询引擎,可对250PB以上的数据进行快速地交互式分析。
- 该项目始于 2012 年秋季开始开发,目前该项目已经在超过 1000 名 Facebook 雇员中使用,运行超过 30000 个查询,每日数据在 1PB 级别。Facebook 称 Presto 的性能比Hive要好上 10 倍有多。2013年Facebook正式宣布开源 Presto。领先的互联网公司包括Airbnb和Dropbox都在使用Presto。
presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:
- 清晰的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。
- 简单的数据结构,列式存储,逻辑行,大部分数据都可以轻易的转化成presto所需要的这种数据结构。
场景
Presto 支持 SQL 并提供了一个标准数据库的语法特性,但其不是一个通常意义上的关系数据库,他不是关系数据库,如 MySQL、PostgreSQL 或者 Oracle 的替代品。Presto 不是设计用来解决在线事物处理(OLTP);
Presto 是一个工具,被用来通过分布式查询来有效的查询大量的数据。Presto 是一个可选的工具,可以用来查询 HDFS,通过使用 MapReduce 的作业的流水线,例如 hive,pig,但是又不限于查询 HDFS 数据,它还能查询其他的不同数据源的数据,包括关系数据库以及其他的数据源,比如 cassandra;
Presto 被设计为处理数据仓库和分析:分析数据,聚合大量的数据并产生报表,这些场景通常被定义为 OLAP。
优势
-
多数据源,支持SQL,自定义扩展Connector
-
混合计算(同一种数据源的不同库 or表;将多个数据源的数据进行合并)
-
低延迟,高并发,纯内存计算引擎,高性能
Presto是一个低延迟高并发的内存计算引擎,相比Hive,执行效率要高很多。
举例:
SELECT id,
name,
source_type,
created_at
FROM dw_dwb.dwb_user_day
WHERE dt='2018-06-03'
AND created_at>’2018-05-20’;
上述SQL在Presto运行时间不到1秒钟,在Hive里要几十秒钟。
架构
presto提供插件化的connector来支持外部数据查询,原生支持hive、cassandra、elasticsear