Presto
- Presto介绍:
Presto 是 Facebook 推出的一个基于Java开发的大数据分布式 SQL 查询引擎,是一种Massively parallel processing (MPP)架构,数据规模达GB~PG级,Presto 支持众多类型的数据源,包括传统的关系数据库和其他数据源,如hive、Cassandra、mysql等。据称Presto 的查询速度是hive的5~10倍,单个 Presto 查询可合并来自多个数据源的数据进行统一分析。Presto 的目标是在可期望的响应时间内返回查询结果,Facebook 在内部多个数据存储中使用 Presto 交互式查询,包括 300PB 的数据仓库,超过 1000 个 Facebook 员工每天在使用 Presto 运行超过 3 万个查询,每天扫描超过 1PB 的数据。
- Presto优点:
Presto 支持跨库跨源,跨库:即mysql数据库a中的表可与数据库b中的表进行join操作,跨源:即 postgresql中的表可与mysql中的表进行join;
Presto SQL与传统sql大同小异,使用简单;
Presto 是集群部署 可支持水平扩展;
Presto 数据规模支持GB到PB;
Presto 可以使用jdbc查询,客户端可以是java、PHP、python、命令行等等;
- Presto架构:
Presto 有俩种类型服务器,一个是coordinators 另一个是workers。
Presto coordinator是负责解析语句,规划查询和管理Presto workers的服务器;
Discovery Server: 通常内嵌于Coordinator节点中,发现worker节点;
Presto worker负责执行任务和处理数据,worker节点从连接器获取数据并相互交换中间数据。coordinator负责从worker那里获取结果并将最终结果返回给客户。worker节点使用REST API与其他worker节点和Presto coordinator进行通信。