Presto一款数据管理与服务的工具,通过它可以对服务器进行必要管理以及独特的处理哦,整体的应用以及效果很出色哦,是非常出色的一个项目,应用领域广泛哦,同时整体的效率以及速度也很出色哦,受到非常多的用户喜爱哦!
Presto软件背景
Presto是facebook搭建开源的项目。
Facebook是一家数据驱动的公司。 数据处理和分析是Facebook为10亿多活跃用户开发和交付产品的核心所在。 拥有世界上最大的数据仓库之一,存储了大约 300PB 以上的数据。 这些数据被一系列不同种类的程序所使用, 包括传统的数据批处理程序、基于图论的数据分析、机器学习、和实时性的数据分析。
分析人员、数据科学家和工程师需要处理数据、分析数据、不断地改善我们的产品, 对于这些人来说, 提高数据仓库的查询性能是非常重要的。在一定时间内能够运行更多的查询并且能够更快地获得查询结果能够提高他们的工作效率。
Facebook数据仓库中的数据存储在几个大型的Hadoop HDFS的集群上。 Hadoop MapReduce和Hive被设计为用于进行大规模、高可靠性的计算,而且这些技术都被优化为用来提高整体系统的吞吐量。但是当数据仓库增长到PB级别,并且需求进一步提升的时候, 就非常需要一个在数据仓库上工作的,能够提供低延迟的交互式查询系统。
在2012年秋天,Facebook 数据基础设施(Data Infrastructure)部门的一支团队开始为数据仓库的用户解决这个问题。他们评估了一些外部项目, 发现这些项目或者是太不成熟,或者就是不能满足我们在灵活性和规模性上的要求。 所以他们决定开始搭建Presto,一个崭新的能够在PB级别的数据上进行交互式查询的系统。
Presto工作原理
Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。
下面的架构图中展现了简化的Presto系统架构。客户端(client)将SQL查询发送到Presto的协调员(coordinator)。协调员会进行语法检查、分析和规划查询计划。计划员(scheduler)将执行的管道组合在一起, 将任务分配给那些里数据最近的节点,然后监控执行过程。 客户端从输出段中将数据取出, 这些数据是从更底层的处理段中依次取出的。
Presto的运行模型和Hive或MapReduce有着本质的区别。Hive将查询翻译成多阶段的MapReduce任务, 一个接着一个地运行。 每一个任务从磁盘上读取输入数据并且将中间结果输出到磁盘上。 然而Presto引擎没有使用MapReduce。它使用了一个定制的查询和执行引擎和响应的操作符来支持SQL的语法。除了改进的调度算法之外, 所有的数据处理都是在内存中进行的。 不同的处理端通过网络组成处理的流水线。 这样会避免不必要的磁盘读写和额外的延迟。 这种流水线式的执行模型会在同一时间运行多个数据处理段, 一旦数据可用的时候就会将数据从一个处理段传入到下一个处理段。 这样的方式会大大的减少各种查询的端到端响应时间。
Presto注意事项
Apache Hadoop 1.x,使用 hive-hadoop1 连接器
Apache Hadoop 2.x,使用 hive-hadoop2 连接器
Cloudera CDH 4,使用 hive-cdh4 连接器
Cloudera CDH 5,使用 hive-cdh5 连接器
支持以下格式:Text、SequenceFile、RCFile、ORC。
另外,还需要一个远程的 Hive metastore 服务。本地的或者嵌入式模式是不支持的。Presto 不使用 MapReduce 并且只需要 HDFS。
Presto安装教程
安装方法
Presto安装:
Presto是一个标准的Maven项目。只需从项目根目录运行以下命令:
./mvnw clean install
在第一个构建中,Maven将从Internet下载所有依赖项并将它们缓存在本地存储库(~/.m2/repository)中,这可能会花费大量时间。随后的构建将更快。
Presto有一套全面的单元测试,可能需要几分钟才能运行。您可以在构建时禁用测试:
./mvnw clean install -DskipTests
Presto配置要求
Mac OS X或Linux
Java 8 Update 151或更高版本(8u151 +),64位。支持Oracle JDK和OpenJDK。
Maven 3.3.9+(用于建筑)
Python 2.4+(用于与启动脚本一起运行)
Presto小编点评
Presto是一个针对大数据的分布式SQL查询引擎,第一次构建Presto后,你可以将项目加载到你的IDE中并运行服务器,我们建议使用IntelliJ IDEA,因为Presto是一个标准的Maven项目,你可以使用根pom.xml文件将其导入到你的IDE中。