Presto官方免费版是一款非常适用于大数据的分布式SQL查询引擎程序,它是Facebook推出的用于大数据的开源分布式SQL查询引擎,它具有存储数据以及计算和分析的能力,并且支持许多常见的数据源,它还可以对其执行混合计算和分析,并且其可伸缩性也非常好,可以扩展和开发它,以对大小从GB到PB的各种数据源运行交互式分析查询, Presto查询可以合并来自多个源的数据,以便可以在整个组织中对其进行分析,它适用于预期响应时间从几秒钟到几分钟不等的分析人员,它完全是内存计算,支持的数据量完全取决于群集内存的大小,与可配置为将溢出的数据持久保存到磁盘的SparkSQL不同,Presto是完整的内存计算,而Presto是基于PipeLine设计的,在大型数据计算过程中,最终用户(驱动程序)无需等待所有数据计算完成,看到结果后,一旦开始计算,就可以立即返回一部分结果,随后的计算结果将在多个页面中返回给最终用户(驱动程序)。
功能特点
1.多数据源,混合计算支持:支持许多通用数据源,并且可以执行混合计算分析;
2.大数据:完整的内存计算,支持的数据量完全取决于群集内存大小。与可以配置为将溢出数据持久保存到磁盘的SparkSQL不同,Presto是完整的内存计算;
3.高性能:与Hive(无论MR,Tez,Spark执行引擎)相比,低延迟和高并发内存计算引擎,Impala的执行效率要高得多。根据Facebook和JD.com的测试报告,它至少高出10倍;
4.支持ANSI SQL:与基于HQL(方言)的Hive和SparkSQL不同,Presto是标准SQL。用户可以使用标准SQL进行数据查询和分析计算。
5.扩展性:开发人员可以编写UDF和UDTF,并且受许多SPI扩展点支持。您甚至可以实现自定义连接器以实现索引下推,并借助外部索引功能在特殊情况下实现MPP。
6.管道:Presto基于管道设计。在大数据计算过程中,最终用户(驱动程序)无需等待所有数据计算完成即可查看结果。一旦开始计算,便可以立即返回一部分结果,随后的计算结果将分多页返回给最终用户(驱动程序)。
配置要求
Mac OS X或Linux
Java 8 Update 151或更高版本(8u151 +),64位。支持Oracle JDK和OpenJDK。
Maven 3.3.9+(用于建筑)
Python 2.4+(用于与启动脚本一起运行)
安装教程
Presto安装:
Presto是一个标准的Maven项目。只需从项目根目录运行以下命令:
./mvnw clean install
在第一个构建中,Maven将从Internet下载所有依赖项并将它们缓存在本地存储库(~/.m2/repository)中,这可能会花费大量时间。随后的构建将更快。
Presto有一套全面的单元测试,可能需要几分钟才能运行。您可以在构建时禁用测试:
./mvnw clean install -DskipTests
常见问题
Presto是否可以连接到MySQL或PostgreSQL?
是的,通过MySQL Connector或PostgreSQL Connector。这两个连接器都扩展了基本的JDBC连接器,该连接器很容易扩展以连接到其他数据库。 Presto还包括一个JDBC驱动程序,该驱动程序允许Java应用程序连接到Presto。
为什么在启动时看到错误“无法连接到发现服务器以进行刷新”?
通常这不是问题。出现错误消息是因为发现客户端在嵌入式发现服务器准备就绪之前启动了。成功刷新后,在日志中出现错误消息后不久,您将看到一条消息,指示一切正常。我们最终将修复日志消息,但这纯粹是一个表面问题。
查询运行速度比预期的慢。有哪些因素影响Presto的性能?
首先要检查的是您的员工和协调员的基本机器统计信息。随时间测量负载,网络和磁盘利用率,以了解Presto资源的耗尽情况。
如果Presto进程大部分处于空闲状态,则意味着Presto无法足够快地从HDFS数据节点检索数据。这可能是由于数据节点上的网络或磁盘带宽或CPU引起的。
如果Presto进程正在使用100%cpu,则可能是由于使用了昂贵的解析输入格式引起的。例如,文本文件是一种非常昂贵的输入格式。
如果以上两个条件都不成立,则Presto进程可能会出现内部资源短缺的情况。在这种情况下,您应该使用jstack之类的工具来转储协调器和人员的线程,作为调查的起点。