概述内容
(1)简介
(2)Hive and Prestodb, comparison of functionality
(3)Hive and Prestodb, comparison of performance
(1)简介
Presto是由facebook开发的一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。
Presto框架图如下:
下面的架构图中展现了简化的Presto系统架构。客户端(client)将SQL查询发送到Presto的协调员(coordinator)。协调员会进行语法检查、分析和规划查询计划。计划员(scheduler)将执行的管道组合在一起,将任务分配给那些里数据最近的节点,然后监控执行过程。客户端从输出段中将数据取出,这些数据是从更底层的处理段中依次取出的。
Presto的运行模型和Hive或MapReduce有着本质的区别。Hive将查询翻译成多阶段的MapReduce任务,一个接着一个地运行。每一个任务从磁盘上读取输入数据并且将中间结果输出到磁盘上。然而Presto引擎没有使用MapReduce。它使用了一个定制的查询和执行引擎和响应的操作符来支持SQL的语法。除了改进的调度算法之外,所有的数据处理都是在内存中进行的。不同的处理端通过网络组成处理的流水线。这样会避免不必要的磁盘读写和额外的延迟。这种流水线式的执行模型会在同一时间运行多个数据处理段, 一旦数据可用的时候就会将数据从一个处理段传入到下一个处理段。这样的方式会大大的减少各种查询的端到端响应时间。
(2)Hive and Prestodb, comparison of functionality
√: Yes; ×: No; Blue: The main differences between hive and presto
hive 0.11.0 |
presto 0.56 |
|
Implement |
Java |
Java |
DataType |
||
integer |
√ |
√ |
string |
√ |
√ |
floating point |
√ |
√ |
boolean |
√ |
√ |
map |
√ |
√ |
list |
√ |
√ |
struct |
√ |
√ |
uniontype |
√ |
× |
timestamp |
√ |
√ |
DDL(数据定义语言) |
||
create/alter/drop table |
√ |
× |
create view |
√ |
× |
truncate table |
√ |
× |
desc |
√ |
√ |
create index |
√ |
× |
DML(数据操作语言) |
||
load data |
√ |
× |
insert |
√ |
√ |
explain |
√ |
√ |
tablesample(基于column做bucket) |
√ |
√ |
group by |
√ |
√ |
order by |
√ |
√ |
having |
√ |
√ |
limit |
√ |
√ |
inner/left/right/full join |
√ |
√ |
union |
√ |
√ |
sub queries |
√ |
√ |
Enhanced Aggregation, Cube, Grouping and Rollup |
√ |
× |
lateral view |
√ |
× |
Function |
|
|
UDF |
√ |
× |
Mathematical Functions |
√ |
√ |
String Functions |
√ |
√ |
Date and Time Functions |
√ |
√ |
Regex |
√ |
√ |
Type Conversion Functions |
√ |
× |
Conditional Functions |
√ |
√ |
Aggregate Functions |
√ |
√ |
Windowing |
√ |
√ |
Distinct |
√ |
√ |
Url |
√ |
√ |
Json |
√ |
√ |
功能上,Presto与Hive有几个不同的地方,也可以说是Presto功能不完善,毕竟Presto推出时间不长,详见如下:
1. Presto完成没有数据写入功能,不能使用create语句建表(可通过CREATE TABLE tablename AS query),建立视图、导数据。
2. Presto不支持UDF(用户自定义函数)。
3. Presto支持窗口函数,但比Hive相对较少。
(3)Hive and Prestodb, comparison of performance
测试环境如下:
由于部分机器涉及应用,暂用4台机器作为prestodb的集群,prestodb所有运算都在内存,所以配置大内存有助于提高prestodb的运算速度(现配置4G)。
以下为具体的测试结果:
记录数:169984827 |
||
DML |
Hive(s) |
Prestodb(s) |
limit |
5.493 |
0.05 |
where |
49.255 |
0.05 |
count(*) |
184.974 |
86 |
group by |
161.633 |
110 |
sub queries |
105.686 |
0.09 |
join |
657.006 |
177 |
注:prestodb查询时间只精确到秒,后带小数忽略
参考资料
Prestodb官网:http://prestodb.io/
相关推荐
据称该引擎的性能是 Hive 的 10 倍以上。 PrestoDB 是 Facebook 推出的一个大数据的分布式 SQL 查询引擎。可对从数 G 到数 P 的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别。 Presto 可以查询包括 ...
prestoDB在京东的应用实践
主题:PrestoDB在京东的应用实践 演讲人:吕信,京东商城集团运维...演讲介绍:PrestoDB的基础架构和原理、PrestoDB与Hive在实际业务中的性能对比、京东集团对PrestoDB所做的改造、优化以及PrestoDB在京东的应用实践。
Airpal 是一个基于 Web 的查询执行工具,利用 Facebook 的 PrestoDB 进行查询和获取结果。提供了查找表、元数据、浏览数据行,编写和执行查询的功能,这些功能全部通过浏览器完成。一旦查询开始执行,用户可跟踪查询...
开源项目-prestodb-presto-go-client.zip,正式普雷斯托客户
docker-prestodb 这是具有映像。 注意:从标签325开始,它开始将基本映像从openjdk切换到正式的prestosql容器映像 。 建造 运行以下命令以使用prestodb版本347和Db2连接器构建映像: docker build --build-arg ...
PyPresto PyPresto是客户端协议实现 。 Presto是用于大数据的分布式SQL查询引擎。 该客户端实现异步调用,并对结果集进行基本配置。 很抱歉缺少文档,以后我会尝试制作一个更全面的版本。 要求 ...
PhpPresto客户端连接到 PrestoDB 服务器的简单 Php 类,该服务器针对 Hadoop HDFS 集群运行分布式查询。 Presto 使用 SQL 的子集作为其查询语言。 Presto 是 Hadoop-Hive 或 Impala 的替代方案。用法有关如何使用它...
nimPresto:带有nim的prestodb连接器
安装 $ pip install presto-python-client快速开始使用DBAPI接口查询Presto: import prestodbconn = prestodb . dbapi . connect ( host = 'localhost' , port = 8080 , user = 'the-user' , catalog = 'the-...
官网:https://prestodb.io/ Presto架构 Presto由一个coordinator和多个worker组成 Presto优缺点 优点 1.基于内存计算,减少了磁盘IO,计算更快 2.能够连接多个数据源,跨数据源连表查,如从hive查询大量网站访问记录,...
这在使用PrestoDb对Hazelcast上运行SQL查询实验。 它启动一个 PrestoDb 服务器和一个嵌入式 Hazelcast 实例。 连接器用于查询地图,就像它们是表一样。 地图中的对象被视为行。用法使用 gradle (2+) 启动服务器。 ...
Teradata prestodb ODBC驱动 32位+64位
下载并安装presto数据库/ sql驱动程序: go get github.com/prestodb/presto-go-client/presto 确保已在$ PATH中安装了Git。用法该Presto客户端是Go的database/sql/driver接口的实现。 为了使用它,您需
我们的性能比其他开放源代码版本的HBase连接器快10到100倍。性能比较环境细节资料大小事件表包含500万条记录和90个字段工人3 硬件16个逻辑核心64GB内存(分别为Presto和HBase 16GB内存)4T * 2硬盘 详细信息: : ...
网关用于presto计算引擎的负载均衡器/代理/网关。如何设置开发环境第1步:设置mysql。 首次设置时,安装docker并运行以下命令: docker run -d -p 3306:3306 --name mysqldb -e MYSQL_ROOT_PASSWORD=root123 -e ...
Presto是用于大数据的分布式SQL查询引擎。 环境要求: Mac OS X或Linux Java 8 Update 151或更高...Presto有一套全面的单元测试,可能需要几分钟才能运行。您可以在构建时禁用测试: ./mvnw clean install -DskipTests
Presto Presto is a distributed SQL query engine for big data. See the for deployment instructions and end user documentation. Requirements Mac OS X or Linux Java 8 Update 151 or higher (8u151+), 64-...
kubesql kubesql is a tool to use sql to query the resources of kubernetes. The resources of kubernetes such as nodes, pods and so on are handled as tables. For example, all pods are easily to list ...