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

美洲葡萄酒?

Pinot是一個每秒可以處理數(shù)以萬計分析類查詢的系統(tǒng)横殴,支持近實時地從流式數(shù)據(jù)源進行數(shù)據(jù)攝取萝快。簡單來說作為一個分析類系統(tǒng):數(shù)據(jù)進得快、查詢返回快蚜厉。

為了達到數(shù)據(jù)消費的實時性,Pinot采取了Lambda的架構畜眨,Pinot把它叫做"Hybid table", 一份數(shù)據(jù)同時存在實時和離線兩部分昼牛,用戶將查詢的時候,Pinot同時查離線和實時的數(shù)據(jù)胶果,然后把merge的結(jié)果返回給用戶匾嘱,關于這種Lambda架構的特點,后面還會詳細討論一下早抠。

Pinot里面數(shù)據(jù)也是按照傳統(tǒng)的數(shù)據(jù)庫霎烙、表的形式來組織的。在物理上 Pinot 的表是被切分成一個個 Segments蕊连,而這些Segments會被復制多份保存悬垃,以保證數(shù)據(jù)可用性。Segment數(shù)據(jù)是不可變的, 要插入新數(shù)據(jù)甘苍,或者對數(shù)據(jù)進行更新是通過替換整個segment來完成尝蠕。(Segment的內(nèi)容是不可變的,但是Segment整個是可以被替換掉的)载庭。Segment里面的數(shù)據(jù)是按照列來存的看彼,這算是分析性數(shù)據(jù)庫的標配了,主要為了查詢的時候可以掃描最少的數(shù)據(jù)囚聚,達到更大的存儲壓縮比等等靖榕。

Pinot Segment

Pinot的查詢語言是標準SQL的一個子集:PQL,不支持JOIN顽铸,不支持嵌套子查詢茁计,不支持DDL(表結(jié)構是通過souce control工具來維護的,感覺在他們內(nèi)部可能是需要通過提申請才能添加新表的)谓松,而且不支持任何單條記錄級別的創(chuàng)建星压、更新践剂、刪除操作等等。

限制太多了啊娜膘,在目前這個時間點看來逊脯,感覺有點弱啊。

跟Storm設計思想類似的是劲绪,Pinot也是一個Share Nothing的架構男窟,所有的組件都是無狀態(tài)的,任何節(jié)點隨時都可以被停掉贾富,然后再另外一臺機器起另外一個實例代替歉眷。

Lambda架構

上面提到Pinot采用了Lambda架構以達到數(shù)據(jù)已最快的速度可以被用戶查詢到的目的。Lambda架構這個概念是Storm的作者Nathan Marz提出來的颤枪,它主要的目的在于讓我們可以既能及時的獲取到最新的數(shù)據(jù)(通過流計算引擎), 同時又要保證數(shù)據(jù)的準確性(通過離線計算引擎)汗捡。典型的 Lambda 架構如下圖:

Lambda Architecture

每次查詢過來會分別取查詢離線和實時的數(shù)據(jù)、在合并之后返回給用戶畏纲。

但是從目前的大數(shù)據(jù)領域來看扇住,Lambda架構并不是一個特別好的方式,原因就在于它的復雜性盗胀,對于同一份數(shù)據(jù)艘蹋,要同時維護離線和實時兩套代碼,而這兩套在模型上不完全一樣票灰,但是要強行糅合到一起進行配合女阀,Pinot特性上的一些限制,比如不支持join屑迂,不支持嵌套查詢浸策,我懷疑跟這種復雜架構是有關系的。而且要使用好這一套架構需要你同時對離線和實時計算引擎都非常精通惹盼,以便進行性能調(diào)優(yōu)庸汗,問題排查。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)嘗試要解決的一個問題就是要通過一個系統(tǒng)把離線和實時的底層框架糅合在一起了手报,我感覺這個事情太難了◎遣眨現(xiàn)在比較流行的,看起來應該也是未來發(fā)展方向的是一種叫做Kappa的架構, 這種架構認為Lambda架構之所以出現(xiàn)是因為它確實解決了數(shù)據(jù)實時性 + 準確性的需求掩蛤,其根本原因還是在于實時計算引擎的能力問題晓淀,只要實時計算能夠:

  • 有辦法以流計算引擎可讀的形式保存大量的歷史數(shù)據(jù)。
  • 非痴档担快的處理歷史數(shù)據(jù)。
  • 可以非常精準的處理數(shù)據(jù)燥爷。

那么完全可以把離線計算引擎那條路去掉蜈亩,整個架構就大為簡化:

Kappa Architecture

而目前在Kafka, Flink等等先進的流計算/存儲框架出現(xiàn)的情況下懦窘,感覺時機已經(jīng)成熟了。我覺得這個應該是未來稚配,因為一是簡單畅涂,二是實時是未來,計算引擎的方向應該也是實時道川。

多租戶

正如論文里面所說午衰,在一個大公司里面,為不同的業(yè)務冒萄、不同的場景搭建單獨的集群肯定是有問題的臊岸,原因有很多,一是會造成資源浪費:不同的業(yè)務使用會有波峰波谷尊流,搭建單獨集群使得不同集群之間資源無法在業(yè)務波谷的時候給別的業(yè)務使用帅戒。但是也不能什么措施也不做,直接混用一個集群崖技,這會使得一個業(yè)務的過分使用導致其他業(yè)務得不到資源逻住。因此多租戶是個必須要做的事情。

Pinot里面多租戶的實現(xiàn)手段非常的簡單迎献,它給每個業(yè)務發(fā)放一些token瞎访,這些token會隨著時間的推移以一定的速度不停的發(fā)放,但是達到指定的最大值之后不再增長吁恍。每當一個查詢過來扒秸,就從這個token池子里面消耗一些token,當token被消耗完之后践盼,再來新的查詢就要等待了鸦采,等待產(chǎn)生足夠的token之后再繼續(xù)執(zhí)行。

這個方法的特點是特別的簡單易懂咕幻,看上去很漂亮渔伯。后面要看看其它系統(tǒng)是怎么做的,有沒有更精細的做法肄程。

Pinot VS Others

Pinot與其它框架的對比

說實話從這個對比來看锣吼,Pinot對我的吸引力很小,首先我最看重的 Query Flexibility, 從前面我們知道Pinot查詢能力方面很受限制蓝厌,JOIN都不支持玄叠,感覺用戶壓根就沒法用。而 "Fast ingest and indexing" 目前通過Lambda架構首先的思路不是很好拓提,維護的難度读恃,運維的復雜性都很高,如果只考慮通過Kafka接進行寫入的思路,而把流計算那部分去掉的話倒是一個解決數(shù)據(jù)實時性的不錯思路寺惫。

另外Pinot這里提到了一個"Offline OLAP"的概念疹吃,這里它指的是類似Hive, Impala, Presto這類引擎,之所以說作者把他們成為offline西雀,我理解可能還是數(shù)據(jù)實時性的問題萨驶,這類系統(tǒng)接的基本都是分布式文件系統(tǒng),數(shù)據(jù)一般都是 T - 1 的艇肴。

總結(jié)

從這篇論文里面我個人最大的收獲是兩個腔呜,一是學習了這種多租戶資源隔離的技術,非常簡單再悼,非常優(yōu)雅核畴,為后續(xù)讀其他論文找到了一個新的方向;另外一個是重溫了Lambda架構帮哈,Lambda架構本身是有它的歷史和現(xiàn)實意義的膛檀,但是由于他的復雜性,終究不會成為一種主流的架構方式娘侍。

參考資料

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咖刃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子憾筏,更是在濱河造成了極大的恐慌嚎杨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氧腰,死亡現(xiàn)場離奇詭異枫浙,居然都是意外死亡,警方通過查閱死者的電腦和手機古拴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門箩帚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黄痪,你說我怎么就攤上這事紧帕。” “怎么了桅打?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵是嗜,是天一觀的道長。 經(jīng)常有香客問我挺尾,道長烦周,這世上最難降的妖魔是什么冈敛? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任稚失,我火速辦了婚禮振乏,結(jié)果婚禮上恢准,老公的妹妹穿的比我還像新娘。我一直安慰自己甫题,他們只是感情好顷歌,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幔睬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芹扭。 梳的紋絲不亂的頭發(fā)上麻顶,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音舱卡,去河邊找鬼辅肾。 笑死,一個胖子當著我的面吹牛轮锥,可吹牛的內(nèi)容都是我干的矫钓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼舍杜,長吁一口氣:“原來是場噩夢啊……” “哼新娜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起既绩,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤概龄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饲握,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體私杜,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年救欧,在試婚紗的時候發(fā)現(xiàn)自己被綠了衰粹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡笆怠,死狀恐怖铝耻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骑疆,我是刑警寧澤田篇,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站箍铭,受9級特大地震影響泊柬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诈火,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一兽赁、第九天 我趴在偏房一處隱蔽的房頂上張望状答。 院中可真熱鬧,春花似錦刀崖、人聲如沸惊科。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馆截。三九已至,卻和暖如春蜂莉,著一層夾襖步出監(jiān)牢的瞬間蜡娶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工映穗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窖张,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓蚁滋,卻偏偏與公主長得像宿接,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辕录,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容