《Pinot: Realtime OLAP for 530 Million Users》读后感

美洲葡萄酒?

Pinot是一个每秒可以处理数以万计分析类查询的系统,支持近实时地从流式数据源进行数据摄取。简单来说作为一个分析类系统:数据进得快、查询返回快。

为了达到数据消费的实时性,Pinot采取了Lambda的架构,Pinot把它叫做"Hybid table", 一份数据同时存在实时和离线两部分,用户将查询的时候,Pinot同时查离线和实时的数据,然后把merge的结果返回给用户,关于这种Lambda架构的特点,后面还会详细讨论一下。

Pinot里面数据也是按照传统的数据库、表的形式来组织的。在物理上 Pinot 的表是被切分成一个个 Segments,而这些Segments会被复制多份保存,以保证数据可用性。Segment数据是不可变的, 要插入新数据,或者对数据进行更新是通过替换整个segment来完成。(Segment的内容是不可变的,但是Segment整个是可以被替换掉的)。Segment里面的数据是按照列来存的,这算是分析性数据库的标配了,主要为了查询的时候可以扫描最少的数据,达到更大的存储压缩比等等。

Pinot Segment

Pinot的查询语言是标准SQL的一个子集:PQL,不支持JOIN,不支持嵌套子查询,不支持DDL(表结构是通过souce control工具来维护的,感觉在他们内部可能是需要通过提申请才能添加新表的),而且不支持任何单条记录级别的创建、更新、删除操作等等。

限制太多了啊,在目前这个时间点看来,感觉有点弱啊。

跟Storm设计思想类似的是,Pinot也是一个Share Nothing的架构,所有的组件都是无状态的,任何节点随时都可以被停掉,然后再另外一台机器起另外一个实例代替。

Lambda架构

上面提到Pinot采用了Lambda架构以达到数据已最快的速度可以被用户查询到的目的。Lambda架构这个概念是Storm的作者Nathan Marz提出来的,它主要的目的在于让我们可以既能及时的获取到最新的数据(通过流计算引擎), 同时又要保证数据的准确性(通过离线计算引擎)。典型的 Lambda 架构如下图:

Lambda Architecture

每次查询过来会分别取查询离线和实时的数据、在合并之后返回给用户。

但是从目前的大数据领域来看,Lambda架构并不是一个特别好的方式,原因就在于它的复杂性,对于同一份数据,要同时维护离线和实时两套代码,而这两套在模型上不完全一样,但是要强行糅合到一起进行配合,Pinot特性上的一些限制,比如不支持join,不支持嵌套查询,我怀疑跟这种复杂架构是有关系的。而且要使用好这一套架构需要你同时对离线和实时计算引擎都非常精通,以便进行性能调优,问题排查。LinkedIn的Jay Kreps这段评价我深以为然:

The API meant to hide the underlying frameworks proved to be the leakiest of abstractions.

-- Jay Kreps (LinkedIn Principal Staff Engineer)

Lambda架构(包括我们的主角Pinot)尝试要解决的一个问题就是要通过一个系统把离线和实时的底层框架糅合在一起了,我感觉这个事情太难了。现在比较流行的,看起来应该也是未来发展方向的是一种叫做Kappa的架构, 这种架构认为Lambda架构之所以出现是因为它确实解决了数据实时性 + 准确性的需求,其根本原因还是在于实时计算引擎的能力问题,只要实时计算能够:

  • 有办法以流计算引擎可读的形式保存大量的历史数据。
  • 非常快的处理历史数据。
  • 可以非常精准的处理数据。

那么完全可以把离线计算引擎那条路去掉,整个架构就大为简化:

Kappa Architecture

而目前在Kafka, Flink等等先进的流计算/存储框架出现的情况下,感觉时机已经成熟了。我觉得这个应该是未来,因为一是简单,二是实时是未来,计算引擎的方向应该也是实时。

多租户

正如论文里面所说,在一个大公司里面,为不同的业务、不同的场景搭建单独的集群肯定是有问题的,原因有很多,一是会造成资源浪费:不同的业务使用会有波峰波谷,搭建单独集群使得不同集群之间资源无法在业务波谷的时候给别的业务使用。但是也不能什么措施也不做,直接混用一个集群,这会使得一个业务的过分使用导致其他业务得不到资源。因此多租户是个必须要做的事情。

Pinot里面多租户的实现手段非常的简单,它给每个业务发放一些token,这些token会随着时间的推移以一定的速度不停的发放,但是达到指定的最大值之后不再增长。每当一个查询过来,就从这个token池子里面消耗一些token,当token被消耗完之后,再来新的查询就要等待了,等待产生足够的token之后再继续执行。

这个方法的特点是特别的简单易懂,看上去很漂亮。后面要看看其它系统是怎么做的,有没有更精细的做法。

Pinot VS Others

Pinot与其它框架的对比

说实话从这个对比来看,Pinot对我的吸引力很小,首先我最看重的 Query Flexibility, 从前面我们知道Pinot查询能力方面很受限制,JOIN都不支持,感觉用户压根就没法用。而 "Fast ingest and indexing" 目前通过Lambda架构首先的思路不是很好,维护的难度,运维的复杂性都很高,如果只考虑通过Kafka接进行写入的思路,而把流计算那部分去掉的话倒是一个解决数据实时性的不错思路。

另外Pinot这里提到了一个"Offline OLAP"的概念,这里它指的是类似Hive, Impala, Presto这类引擎,之所以说作者把他们成为offline,我理解可能还是数据实时性的问题,这类系统接的基本都是分布式文件系统,数据一般都是 T - 1 的。

总结

从这篇论文里面我个人最大的收获是两个,一是学习了这种多租户资源隔离的技术,非常简单,非常优雅,为后续读其他论文找到了一个新的方向;另外一个是重温了Lambda架构,Lambda架构本身是有它的历史和现实意义的,但是由于他的复杂性,终究不会成为一种主流的架构方式。

参考资料

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

推荐阅读更多精彩内容