Presto首次Summit 「读后感」

最近 Presto 社区在它的发源地 Facebook 公司举行了它历史上的第一次 Summit, 目前 PPT 已经都放出来了,看了一遍,还是有不少收获的,这里介绍一下 Facebook、Starburst、LinkedIn以及Lyft 这几个公司分享的内容。

Facebook

Facebook 的 Martin 分享了一下 Presto 这个项目目前的状态。 从 2012年8月8日 Martin 同学写下第一行代码算起,Presto 已经有6年历史了,目前在 Facebook 部署了 1000 多个节点,每天要处理 100 多 PB的数据,70%以上的新数仓负载都是由 Presto 来承载的。

Presto初始提交记录

项目方面这一年的进展很大,总的 Contributor 数是330个。安全性方面支持了客户端证书、密码以及JSON Web Token的认证;支持节点之间的数据加密;支持行级别的权限控制。查询执行方面支持分区化的查询执行(Partitioned query Execution)以及分布式排序。SQL语法方面比较大的改进是支持了新的 Geospatial 函数和Lateral JOIN。

将来的计划是要支持更大的集群:超过1000个节点;支持故障恢复;自动处理数据倾斜;工作负载重新平衡化;支持临时表;多阶段查询执行;语言方面支持UDF;支持SQL 2016的特性,比如 Row Matching 等等。

Starburst

Starburst 的PPT是所有PPT里面最具商务气息的,这跟它们公司成立不久,需要更多的曝光度有关,它们整个 PPT 的前半部分都在介绍 Starburst 这个公司。他们提的一点蛮有意思,说他们公司是一个没有风投,员工做主,能盈利的公司,在这个风投遍地的时代还是有点另类的。他们的主要优势是:

  • 公司是由 Presto 的 Commiter 组成的,真正的意思上的一个技术型公司。
  • 他们对 Presto 已经有了3年多的贡献历史。
  • 他们支持了大型的企业用户。
  • 他们贡献了一些很关键的特性,比如“spill to disk”, CBO优化器等等。

真正的技术分享篇幅倒是很短,简单介绍了一下最近开发的关键特性: Cost-Base Optimizer, 主要是因为CBO本身在数据处理领域不是一个新概念,而且他们之前也有专门文章介绍过,感兴趣的可以看下他们之前的博客: Introduction to Presto Cost-Based Optimizer

LinkedIn

Linkedin 介绍的角度是作为一个新使用 Presto 的公司,如何解决碰到的各种问题。对于想要采用 Presto 的公司比较有参考意义。

刚开始的时候 Linkedin 的数据都是以 Hadoop 为中心来组织的,为了使用 Presto , 部署了单独的 Presto 集群,为了能够把数据灌到这个集群里面去,需要做一些数据集成的事情,比如数据复制。LinkedIn 是采用 Apache Gobblin 来简化这些问题。Gobblin 是一个分布式的数据集成框架,它能简化关于数据集成的方方面面,比如数据摄取,数据复制,数据组织,以及生命周期管理,比较牛的地方是它不止支持离线数据,还支持实时数据。

引入一个新的框架之后,很关键的一点是要看看用户对这个新的框架的感受如何,在这一点上面他们利用了 Presto 的 EventListener 机制记录下了用户使用过程中的各种元数据,比如多少用户在用,哪些查询耗费了大量的资源,数据的血缘关系是什么样的,用户使用数据的时候碰到了什么问题等等。

public interface EventListener {
   void queryCreated(QueryCreatedEvent queryCreatedEvent);
   void queryCompleted(QueryCompletedEvent queryCompletedEvent);         
   void splitCompleted(SplitCompletedEvent splitCompletedEvent);
}

通过这个接口把数据灌进 Kafka ,之后再把数据倒回 Presto 进行分析,也算是 Dog eat dog‘s food 了。

在最初验证完概念之后,如何进一步推进 Presto 的使用? 要把数据全部都导入 Presto 是不现实的,因为没有人愿意花那么大代价把数据从 Hadoop 搬到 Presto 上面来;同时也要考虑怎么让这个 Presto 的新框架能够与公司内部老的工具很好的集成;而且公司内的数据除了 Hadoop, Presto上的,还有各种其他的数据源,比如 JDBC, Kafaka, Elasticsearch 等等。他们做了一个 Federation Connector,充当数据 Connector 的门面,查询进来之后,这个 Federation Connector 会根据实际的数据类型对数据进行路由。

Federation Plugin

LinkedIn 还开发了一个叫做 Dali View 的东西, 这个 Dali View 就像数据库里面的视图一样,通过在数据之上封装一层,让整个公司里面所有的数据看起来像是在一个同构的数据库里面一样。用户可以通过各种客户端来对这些数据进行查询。如果访问到的是一个 Presto 的表,那么直接路由到底层的 Presto,如果是一个 Hive View,那么先把请求转给 Hive 的 Analyzer,再通过 Calcite 生成 Presto 的 SQL,再丢给 Presto 去执行,这样可以把所有的计算收到 Presto 这一个地方,运维团队几种精力优化 Presto 这一个系统就好了。

Dali View

统一了 SQL 查询之后,LinkedIn 还对 UDF 进行了统一,因为每个平台都有自己的 UDF API,他们搞了一个通用的抽象,使得用户只要写一份 UDF,就可以在各个平台上运行。

Lyft

最后一个想聊一下的是 Lyft,他们的 PPT 是最长的,其它人 PPT 只有20来页,而他们的 PPT 是70多页(其实很多是PPT是为了页面过度效果)。Lyft 的数仓在 2013 年的时候是完全基于 Redshift的,到了2018年 Redshift(以及Hive) 只管批量计算,而用户的交互式查询完全交给了 Presto 和 Druid。他们的数据量级在 10 PB以上,保存在S3上面,使用的 Parquet 格式,通过日期对数据进行分区,表的总数在50000以上。

他们使用 Presto 主要还是用来交互式的数据查询以及每天定时的报表生成,不进行数据清洗,使用高峰时间是在白天上班时间。

他们开发的一个比较有意思的特性是 Presto Gateway,这个 Gateway 的来由是这样的:上面提到过,在 Lyft 用户对 Presto 的使用模式分两种: 交互式查询以及定时报表生成,这两种使用模式对于服务响应速度的需求是不一样的,为了他们不要相互影响而把 Presto 分成了多个集群,但是他们不想让用户知道这种底层细节。因此他们开发了一个 Gateway,所有的请求都提交到这个 Gateway,然后这个 Gateway 会根据一些路由规则把请求自动路由到正确的集群。

Presto Gateway

这个架构图画的确实有点朴素...

他们还做了一个很有意思的查询保护机制,保护整个集群不至于被某些慢查询拖垮,这里使用的也是 Presto 的插件机制,对用户的查询进行分析,分析完成之后应用一些预先定义的规则对查询进行阻止,比如查表的时候不带分区,一些预先知道的很差的Query。

总结

Presto 界目前有两大玩家: Facebook 和 Starburst,Facebook 是 Presto 的缔造者,地位自不用说;Starburst 则是由 Presto 的一些 Committer 组建的一个公司,目前在 Presto 商业版本的一些事情, 一些很关键的特性比如 Presto 的 Cost Base Optimizer 就是由他们贡献的。其实阿里在 Presto 上面也有很大的研发投入,只是我们在开源方面发声不多,有点可惜。

Presto 虽然已经有了6年的历史,但是社区还不是很大,Summit 也是才开第一次。但是这种网络带宽越来越大,计算跟存储逐渐分离,这种可以对各种不同格式的、保存在各种不同存储里面的数据进行分析的计算引擎应该会越来越受欢迎。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容