Presto: 可以处理PB级别数据的分布式SQL查询引擎

2012年秋季Facebook启动了Presto,Presto的目的是在几百PB级别数据量上面进行准实时分析。在摒弃了一些外部项目以后,Facebook准备开发他们自己的分布式查询引擎。Presto的语法基于ANSI SQL,大多数分布式查询引擎需要用户去学习一种新的语法,有的语法类似SQL,但是没有一种是和真正的SQL一样被人们所熟悉,并且有详尽的文档。Facebook希望这个决定能够使得培训新用户变得更容易更快速。依赖于 ANSI SQL也让Presto能够利用的现存的第三方工具。

在内部, Presto基于流水线。当请求被分析,任务分配到适当节点以后,客户端从输出阶段拉取数据,输出阶段从更底层阶段里面拉取数据。Presto的执行模式是和Hive/MapReduce有着基础性的差异的。Hive把查询语句翻译为MapReduce任务的不同阶段,然后一个接着一个的执行。每个任务从磁盘读取输入,然后把中间结果写回到磁盘中。与之相反的是,Presto不是使用MapReduce,他使用大家所习惯的查询和执行引擎,它们有着设计好的支持SQL语法的操作符。比优化过的调度更进一步的是,全部处理过程都是在内存中,而且是在不同阶段之间通过网络交互进行流水线作业的。这规避了不必要的IO操作,和随之造成的过高的延迟。这种流水线化的执行模型可以在同一时间内运行不同的阶段,当数据可用以后,流数据就从一个阶段到另外一个阶段。对于很多类型查询来说,这就显著的减少了端到端的延迟。

Presto是使用Java写的一个可插拔的后端。对于很多数据源来说,例如Hive、Hbase或者Scribe,就需要一个数据连接器。这个连接器为Presto提供元数据、那些节点保持数据的信息,还提供了一种把数据当做流的办法。

在Facebook绝大多数查询场景中,Presto在时间消耗和cpu占用上面超过Hive/MapReduce十倍。Facebook仍然计划去进一步提升性能。一个计划是设计一种新的数据格式以减少当数据从一个阶段到另外一个阶段时候所需的数据转换量。Facebook还计划去掉一些目前设计中的限制:目前最主要的限制是join操作时候表的大小和unique 主键和group时候的基数的大小。目前系统缺乏把输出数据协会到表的能力,目前查询结果是回流到客户端的。

国内目前美团有大规模使用,见:http://tech.meituan.com/presto.html

目前Presto已经纳入到apache2.0中,其git地址:https://github.com/prestodb/presto

官方文档:https://prestodb.io/docs/current/overview/use-cases.html

时间: 2024-10-20 12:58:05

Presto: 可以处理PB级别数据的分布式SQL查询引擎的相关文章

大数据系列之分布式大数据查询引擎Presto

关于presto部署及详细介绍请参考官方链接 http://prestodb-china.com PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节. Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题. 它可以做什么? Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储. 一条Presto查询可以将多个数据源的数据进行合并,可以跨越

#数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie

郑昀 创建于2014/10/30 最后更新于2014/10/31 一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售运营的数据分析师: 要求数据分析师掌握查询SQL查询脚本编写技巧,掌握不同业务的数据存储在不同的数据集市里: 不管他们的计算任务是提交给 数据库 还是 Hadoop,计算时间都可能会很长,不可能在线等待: 所以, 使用者提交了一个计算任务(PIG/SQL/Hive SQL),控制台告知任务已排队,给出大

关系型数据的分布式处理系统MyCAT(转载)

  ——概述和基本使用教程 日期:2014/12/24 文:阿蜜果 1.   MyCAT概述 1.1 背景 随着传统的数据库技术日趋成熟.计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上.这时集中式数据库系统表现出它的不足: (1)集中式处理,势必造成性能瓶颈: (2)应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性不高: (3)集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差. 在这种形势下,集中式数据库将向分布式数据库

PB导出数据excel格式dw2xls

PB导出数据excel格式dw2xls 使用DW2XLS控件 语法 uf_save_dw_as_excel ( dw, filename ) 參数 dw A reference to the datawindow object filename A string whose value is the name of the file you want to create. If filename is not on the operating system's search path, you

JAVA使用POI如何导出百万级别数据

经常使用Excel的人应该都能知道excel2007及以上版本可以轻松实现存储百万级别的数据,但是系统中的大量数据如何能够快速准确的导入到excel中这好像是个难题,对于一般的web系统,我们为了解决成本,基本都是使用的入门级web服务器tomcat,jdk在32为系统中支持的内存不能超过2个G,但是在64为中没有限制,但是在64位的系统中,性能并不是太好,所以为了解决上诉问题,我们要针对我们的代码来解决我们要解决的问题,在POI3.8之后新增加了一个类,SXSSFWorkbook,它可以控制e

DataGridView显示不同级别数据

我们都知道,DataGridView可以直接绑定数据源,显示数据库中的数据.但是我想做的是可以对他进行条件查询,根据用户级别选择不同级别的记录. 以上这个控件就是DataGridView控件,可以用它直接绑定数据源,显示数据库中表格的数据. 添加控件以后,出来一个DataGridView任务,按照步骤一步一步,就会成功绑定数据源. 绑定数据源之后会出来一张表格,如图: 接下来就是添加查询了,注意查询语句不要写错. 注意我们的查询语句不能写错.查询用户级别为一般用户的就写为:     SELECT

Python 转化成 PB 格式数据

一.概述 Protocol Buffers 是 Google 公司开发的一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格式. Protocol Buffers 简称为 protobuf 或 pb,下面是使用 python 解析 pb. 二.安装 下载目标语言的编译器:下载地址 安装: $ ./configure $ make $ sudo make i

Java千万级别数据生成文件思路和优化

一年前写过一个百万级别数据库数据生成配置xml文件的程序,程序目的是用来把数据库里面的数据生成xml文件.程序可以配置多少文件生成到一个文件中去. 程序刚开始设计的时候说的是最多百万级别数据,最多50W数据生成到一个xml文件里面去,所以在做测试的时候自己也只是造了100W的数据并没有做过多数据量的测试,然后问题就来了....由于程序使用的局点数据量巨大,需要生成xml文件的客户资料接近千万级别的程度,而现场对程序的配置大约是100W条数据生成一个xml文件里面去,程序在这样的大数据量下面偶尔会

大数据伪分布式搭建

大数据伪分布式搭建 ***对于大数据这块相信大家对linux有一定的认识,所有对创建虚拟机那块就不给予详细的说明了. 基础环境的搭建 1.系统环境 平台:VMware Workstation pro 系统:centos 7 Hadoop版本: Apache Hadoop 3.0.0 本次实验是搭建一台master和两台node节点.因为我们主要的目的是想让大家了解一下Hadoop伪分布式的搭建流程,如果说大家的电脑小于8G的话,那就每台节点就大概开个1.5G左右,也是为了大家有一个好的体验. 修