在之前的《大数据开发:OLAP开源数据分析引擎简介》一文当中,我们对主流的一些开源数据分析查询引擎做了大致的介绍,今天的大数据开发分享,我们具体来讲解其中的Presto查询引擎,是什么,为什么会出现,又能够解决什么样的数据处理需求。
Presto是什么?
Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。
Presto为什么会出现?
Hadoop提供了大数据存储与计算的一整套解决方案;但是它采用的是MapReduce计算框架,只适合离线和批量计算,无法满足快速实时的Ad-Hoc查询计算的性能要求。
Hive使用MapReduce作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求。
Presto可以做什么?
Presto支持在线数据查询,包括Hive,Cassandra,关系数据库以及专有数据存储。一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。
Presto以分析师的需求作为目标,他们期望响应时间小于1秒到几分钟。Presto终结了数据分析的两难选择,要么使用速度快的昂贵的商业方案,要么使用消耗大量硬件的慢速的“免费”方案。
Presto架构
Presto查询引擎是一个Master-Slave的主从架构,Coordinator是主,worker是从。
一个presto集群,由一个Coordinator节点,一个Discovery Server节点(通常内嵌于Coordinator节点中),多个Worker节点组成。其中,Coordinator负责接收查询请求、解析SQL语句、生成执行计划、任务调度给Worker节点执行、worker管理;Worker节点是工作节点,负责实际执行查询任务Task。
Worker节点启动后向Discovery Server服务注册;Coordinator从Discovery Server获得可以正常工作的Worker节点。
presto采取三层表结构:catalog对应某一类数据源,例如hive的数据,或mysql的数据;schema对应mysql中的数据库;table对应mysql中的表。
Presto三大特点
高性能:Presto基于内存计算,减少数据的落盘,计算更快;轻量快速,支持近乎实时的查询;
多数据源:通过配置不同的Connector,Presto可以连接不同的数据源,所以可以将来自不同数据源的表进行连接查询;
扩展性:可以根据实际的需要,开发特定的数据源的Connector,从而可以SQL查询此数据元的数据。
关于大数据开发,分布式OLAP查询引擎Presto入门,以上就为大家做了简单的介绍了。在交互式查询领域,Presto可以说是非常代表性的一个产品,在大规模交互式查询式,性能可观。
网友评论