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
Presto: 可以处理PB级别数据的分布式SQL查询引擎的更多相关文章
- [Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁
随着DT时代的来临,数据对于企业经营决策的价值日益凸显,而企业在进行互联网+转型的过程中,如何让数据架构平滑迁移到大数据平台,对于传统业务的转型升级至关重要.企业IT部门该如何进行PB级别大数据平台的 ...
- 浅谈PageHelper插件分页实现原理及大数据量下SQL查询效率问题解决
前因:项目一直使用的是PageHelper实现分页功能,项目前期数据量较少一直没有什么问题.随着业务扩增,数据库扩增PageHelper出现了明显的性能问题.几十万甚至上百万的单表数据查询性能缓慢,需 ...
- 对json数据进行类似sql查询
添加js引用:jsonsql-0.1.js 通过下面列子得到一个json类型的结果 Example: jsonsql.query("select * from json.channel.it ...
- 大数据系列之分布式大数据查询引擎Presto
关于presto部署及详细介绍请参考官方链接 http://prestodb-china.com PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持G ...
- #数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie
郑昀 创建于2014/10/30 最后更新于2014/10/31 一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售 ...
- Presto 来自Facebook的开源分布式查询引擎
Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速.实时的数据分析.它支持标准的ANSI SQL,包括复杂查询.聚合(aggregation).连接(join)和窗口函数(windo ...
- 实时查询引擎 - Facebook Presto 介绍与应用
1. Presto 是什么 Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...
- 大数据技术之_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 ...
- facebook Presto SQL分析引擎——本质上和spark无异,分解stage,task,MR计算
Presto 是由 Facebook 开源的大数据分布式 SQL 查询引擎,适用于交互式分析查询,可支持众多的数据源,包括 HDFS,RDBMS,KAFKA 等,而且提供了非常友好的接口开发数据源连接 ...
随机推荐
- Java SE学习之printf 日期转换符
本文是学习网络上的文章时的总结,感谢大家无私的分享. System.out.printf()方法能够对日期做处理输出. 相应列表 转换符 类型 举例 c 完整的日期和时间 Mon Feb 09 18: ...
- 三期_day12_其它+jetty的使用
1.大致总结 行程管理和留言反馈和前面的思路差点儿相同,这里就不多啰嗦了.经过十几天的写写停停.有了一个初步的进展了,再往下写也没有啥欲望了.还是研究下android和server,设计模式和网络这些 ...
- android照片墙的实现
转载自 http://blog.csdn.net/guolin_blog/article/details/9526203 由于每个android应用程序都有内存限制,所以如果加载很多图片的话,一定会出 ...
- mysql.cnf 配制文件详解
代码如下: [client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedi ...
- POJ1329题
Circle Through Three Points Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Jav ...
- android和javascript之间相互通信实例分析
1. AndroidManifest.xml中必须使用许可 "android.permission.INTERNET", 否则会出Web page not available错误 ...
- 全球5大安全工具Linux发行版本
全球5大安全工具Linux发行版本http://automationqa.com/forum.php?mod=viewthread&tid=2314&fromuid=21
- Java 并发——多线程基础
Thead类与Runnable接口 Java的线程,即一个Thread实例. Java的线程执行过程有两种实现方式: 子类继承Thread类,并且重写void run()方法. 自定义类实现Runna ...
- centos 下安装ati显卡驱动方法
1)到ati的官网(http://support.amd.com/us/gpudownload/Pages/index.aspx)下载相应的驱动,一定要注意 radeon系列和mobility rad ...
- ThinkPHP函数详解:cookie方法
cookie函数也是一个多元化操作函数,完成cookie的设置.获取和删除操作. Cookie 用于Cookie 设置.获取.删除操作 用法cookie($name, $value='', $opti ...