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

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

  1. [Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁

    随着DT时代的来临,数据对于企业经营决策的价值日益凸显,而企业在进行互联网+转型的过程中,如何让数据架构平滑迁移到大数据平台,对于传统业务的转型升级至关重要.企业IT部门该如何进行PB级别大数据平台的 ...

  2. 浅谈PageHelper插件分页实现原理及大数据量下SQL查询效率问题解决

    前因:项目一直使用的是PageHelper实现分页功能,项目前期数据量较少一直没有什么问题.随着业务扩增,数据库扩增PageHelper出现了明显的性能问题.几十万甚至上百万的单表数据查询性能缓慢,需 ...

  3. 对json数据进行类似sql查询

    添加js引用:jsonsql-0.1.js 通过下面列子得到一个json类型的结果 Example: jsonsql.query("select * from json.channel.it ...

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

    关于presto部署及详细介绍请参考官方链接 http://prestodb-china.com PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持G ...

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

    郑昀 创建于2014/10/30 最后更新于2014/10/31   一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售 ...

  6. Presto 来自Facebook的开源分布式查询引擎

    Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速.实时的数据分析.它支持标准的ANSI SQL,包括复杂查询.聚合(aggregation).连接(join)和窗口函数(windo ...

  7. 实时查询引擎 - Facebook Presto 介绍与应用

    1. Presto 是什么   Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...

  8. 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器

    第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...

  9. facebook Presto SQL分析引擎——本质上和spark无异,分解stage,task,MR计算

    Presto 是由 Facebook 开源的大数据分布式 SQL 查询引擎,适用于交互式分析查询,可支持众多的数据源,包括 HDFS,RDBMS,KAFKA 等,而且提供了非常友好的接口开发数据源连接 ...

随机推荐

  1. JS中比較2个字符串内元素的不同(字符1, 字符2, 分隔符可选)

    比較2个字符串内元素的不同(字符1, 字符2, 分隔符可选) 文件: diff.js // 演示样例使用方法 /* var str1 = "tie, mao, 55"; var s ...

  2. [AngularJS + Webpack] Using Webpack for angularjs

    1. Install webpack & angular: npm install webpack angular 2. Create webpack.config.js file: modu ...

  3. 浅谈C语言中的联合体

    联合体union 当多个数据须要共享内存或者多个数据每次仅仅取其一时.能够利用联合体(union).在C Programming Language 一书中对于联合体是这么描写叙述的: 1)联合体是一个 ...

  4. FAQ系列 | 解读EXPLAIN执行计划中的key_len

    http://imysql.com/2015/10/20/mysql-faq-key-len-in-explain.shtml

  5. RFC 2616

    Network Working Group R. Fielding Request for Comments: 2616 UC Irvine Obsoletes: 2068 J. Gettys Cat ...

  6. 关于字符串计算size的方法比较

    往往字符串需要计算size来满足UI排版的自适应的需要,而一般字符串也是放在UILabel里的. 而在计算size的方法里,一般有两种方式(deprecated的就不说了). NSString的方法 ...

  7. the third assignment of software testing

    没有网的日子不好过,Junit4下不下来,先用androidTestCase实现一个. 遇到了几个bug. 首先是除0问题. public void testDivide(){ result=calc ...

  8. MAC上搭建Jenkins + Android + IOS自动开发部署环境

    因为MAC是大小写不敏感的操作系统,很多Linux命令不支持,所以首先要创建大小写敏感的操作系统. 设置静态IP 打开"System Preferences..." 点击" ...

  9. nyoj 24 素数距离问题

    素数距离问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:2   描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度. ...

  10. (转)了解了这些才能开始发挥jQuery的威力

    原文地址:http://www.cnblogs.com/dolphinX/p/3347677.html 由于当前jQuery如此的如雷贯耳,相信不用介绍什么是jQuery了,公司代码中广泛应用了jQu ...