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. 收集磁盘分区信息(总量、可用、已用、百分比)导出到csv

    #############################脚本功能及说明##################################################该脚本用来收集磁盘分区总大小 ...

  2. 【转】C++中多重继承的二义性及解决办法

    转自:http://www.cnblogs.com/lintong/archive/2012/07/28/2613002.html 1. 什么是多重继承的二义性 class A{ public: vo ...

  3. 【转】Sqlserver通过链接服务器访问Oracle的那些事儿!

    原文:http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 前言:1.不经历风雨,怎能见彩虹.2.充分利用BaiDu.google等搜索引擎查找资料 ...

  4. RHCA442学习笔记-Unit10内存地址及分配

      Unit 10 Memory Addressing and Allocation 内存地址及分配 学习目标: A. 虚拟地址与物理地 B. 调整内存地址分配 C. 解析内存溢出    10.1 O ...

  5. wpf 计算器布局练习

    先看一下windows自带计算机的布局: 大概布局能看出,有菜单栏(menu),有显示框(textbox),然后剩下的6行5列的布局 先看下代码: <StackPanel> <Gri ...

  6. MySQL【第三篇】数据类型

    一.整型 整型的每一种都有无符号(unsigned)和有符号(signed)两种类型. MySQL数据类型 含义 tinyint(m) 1个字节表示:signed(-128~127):unsigned ...

  7. 选择 GCD 还是 NSTimer ?

    我们常常会延迟某件任务的执行,或者让某件任务周期性的执行.然后也会在某些时候需要取消掉之前延迟执行的任务. 延迟操作的方案一般有三种: 1.NSObject的方法: 2.使用NSTimer的方法: 3 ...

  8. cobbler部署

    1.cobbler介绍 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的 ...

  9. samba服务器与远程登录ssh

    作者:相思羽  出处:http://www.cnblogs.com/xiang-siyu 欢迎转载,也请保留这段声明.谢谢! deepin安装与配置samba服务器 安装  apt-get insta ...

  10. 微信公众号支付(三):页面调用微信支付JS并完成支付

    一.调用微信的JS文件 1.首先要绑定[JS接口安全域名],“公众号设置”的“功能设置”中 2.引入JS文件 备注:支持使用 AMD/CMD 标准模块加载方法加载 <script type=&q ...