Presto首次Summit 「讀后感」

最近 Presto 社區(qū)在它的發(fā)源地 Facebook 公司舉行了它歷史上的第一次 Summit, 目前 PPT 已經(jīng)都放出來(lái)了藐翎,看了一遍,還是有不少收獲的且轨,這里介紹一下 Facebook枫耳、Starburst老客、LinkedIn以及Lyft 這幾個(gè)公司分享的內(nèi)容。

Facebook

Facebook 的 Martin 分享了一下 Presto 這個(gè)項(xiàng)目目前的狀態(tài)茵臭。 從 2012年8月8日 Martin 同學(xué)寫(xiě)下第一行代碼算起疫诽,Presto 已經(jīng)有6年歷史了,目前在 Facebook 部署了 1000 多個(gè)節(jié)點(diǎn)笼恰,每天要處理 100 多 PB的數(shù)據(jù)踊沸,70%以上的新數(shù)倉(cāng)負(fù)載都是由 Presto 來(lái)承載的。

Presto初始提交記錄

項(xiàng)目方面這一年的進(jìn)展很大社证,總的 Contributor 數(shù)是330個(gè)逼龟。安全性方面支持了客戶端證書(shū)、密碼以及JSON Web Token的認(rèn)證追葡;支持節(jié)點(diǎn)之間的數(shù)據(jù)加密腺律;支持行級(jí)別的權(quán)限控制。查詢執(zhí)行方面支持分區(qū)化的查詢執(zhí)行(Partitioned query Execution)以及分布式排序宜肉。SQL語(yǔ)法方面比較大的改進(jìn)是支持了新的 Geospatial 函數(shù)和Lateral JOIN匀钧。

將來(lái)的計(jì)劃是要支持更大的集群:超過(guò)1000個(gè)節(jié)點(diǎn);支持故障恢復(fù)谬返;自動(dòng)處理數(shù)據(jù)傾斜之斯;工作負(fù)載重新平衡化;支持臨時(shí)表遣铝;多階段查詢執(zhí)行佑刷;語(yǔ)言方面支持UDF;支持SQL 2016的特性酿炸,比如 Row Matching 等等瘫絮。

Starburst

Starburst 的PPT是所有PPT里面最具商務(wù)氣息的,這跟它們公司成立不久填硕,需要更多的曝光度有關(guān)麦萤,它們整個(gè) PPT 的前半部分都在介紹 Starburst 這個(gè)公司。他們提的一點(diǎn)蠻有意思扁眯,說(shuō)他們公司是一個(gè)沒(méi)有風(fēng)投壮莹,員工做主,能盈利的公司恋拍,在這個(gè)風(fēng)投遍地的時(shí)代還是有點(diǎn)另類(lèi)的垛孔。他們的主要優(yōu)勢(shì)是:

  • 公司是由 Presto 的 Commiter 組成的,真正的意思上的一個(gè)技術(shù)型公司施敢。
  • 他們對(duì) Presto 已經(jīng)有了3年多的貢獻(xiàn)歷史周荐。
  • 他們支持了大型的企業(yè)用戶狭莱。
  • 他們貢獻(xiàn)了一些很關(guān)鍵的特性,比如“spill to disk”, CBO優(yōu)化器等等概作。

真正的技術(shù)分享篇幅倒是很短腋妙,簡(jiǎn)單介紹了一下最近開(kāi)發(fā)的關(guān)鍵特性: Cost-Base Optimizer, 主要是因?yàn)镃BO本身在數(shù)據(jù)處理領(lǐng)域不是一個(gè)新概念,而且他們之前也有專(zhuān)門(mén)文章介紹過(guò)讯榕,感興趣的可以看下他們之前的博客: Introduction to Presto Cost-Based Optimizer骤素。

LinkedIn

Linkedin 介紹的角度是作為一個(gè)新使用 Presto 的公司,如何解決碰到的各種問(wèn)題愚屁。對(duì)于想要采用 Presto 的公司比較有參考意義济竹。

剛開(kāi)始的時(shí)候 Linkedin 的數(shù)據(jù)都是以 Hadoop 為中心來(lái)組織的,為了使用 Presto 霎槐, 部署了單獨(dú)的 Presto 集群送浊,為了能夠把數(shù)據(jù)灌到這個(gè)集群里面去,需要做一些數(shù)據(jù)集成的事情丘跌,比如數(shù)據(jù)復(fù)制袭景。LinkedIn 是采用 Apache Gobblin 來(lái)簡(jiǎn)化這些問(wèn)題。Gobblin 是一個(gè)分布式的數(shù)據(jù)集成框架闭树,它能簡(jiǎn)化關(guān)于數(shù)據(jù)集成的方方面面耸棒,比如數(shù)據(jù)攝取,數(shù)據(jù)復(fù)制报辱,數(shù)據(jù)組織与殃,以及生命周期管理,比較牛的地方是它不止支持離線數(shù)據(jù)碍现,還支持實(shí)時(shí)數(shù)據(jù)奈籽。

引入一個(gè)新的框架之后,很關(guān)鍵的一點(diǎn)是要看看用戶對(duì)這個(gè)新的框架的感受如何鸵赫,在這一點(diǎn)上面他們利用了 Presto 的 EventListener 機(jī)制記錄下了用戶使用過(guò)程中的各種元數(shù)據(jù),比如多少用戶在用躏升,哪些查詢耗費(fèi)了大量的資源辩棒,數(shù)據(jù)的血緣關(guān)系是什么樣的,用戶使用數(shù)據(jù)的時(shí)候碰到了什么問(wèn)題等等膨疏。

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

通過(guò)這個(gè)接口把數(shù)據(jù)灌進(jìn) Kafka 一睁,之后再把數(shù)據(jù)倒回 Presto 進(jìn)行分析,也算是 Dog eat dog‘s food 了佃却。

在最初驗(yàn)證完概念之后者吁,如何進(jìn)一步推進(jìn) Presto 的使用? 要把數(shù)據(jù)全部都導(dǎo)入 Presto 是不現(xiàn)實(shí)的,因?yàn)闆](méi)有人愿意花那么大代價(jià)把數(shù)據(jù)從 Hadoop 搬到 Presto 上面來(lái)饲帅;同時(shí)也要考慮怎么讓這個(gè) Presto 的新框架能夠與公司內(nèi)部老的工具很好的集成复凳;而且公司內(nèi)的數(shù)據(jù)除了 Hadoop, Presto上的瘤泪,還有各種其他的數(shù)據(jù)源,比如 JDBC, Kafaka, Elasticsearch 等等育八。他們做了一個(gè) Federation Connector对途,充當(dāng)數(shù)據(jù) Connector 的門(mén)面,查詢進(jìn)來(lái)之后髓棋,這個(gè) Federation Connector 會(huì)根據(jù)實(shí)際的數(shù)據(jù)類(lèi)型對(duì)數(shù)據(jù)進(jìn)行路由实檀。

Federation Plugin

LinkedIn 還開(kāi)發(fā)了一個(gè)叫做 Dali View 的東西, 這個(gè) Dali View 就像數(shù)據(jù)庫(kù)里面的視圖一樣按声,通過(guò)在數(shù)據(jù)之上封裝一層膳犹,讓整個(gè)公司里面所有的數(shù)據(jù)看起來(lái)像是在一個(gè)同構(gòu)的數(shù)據(jù)庫(kù)里面一樣。用戶可以通過(guò)各種客戶端來(lái)對(duì)這些數(shù)據(jù)進(jìn)行查詢签则。如果訪問(wèn)到的是一個(gè) Presto 的表须床,那么直接路由到底層的 Presto,如果是一個(gè) Hive View怀愧,那么先把請(qǐng)求轉(zhuǎn)給 Hive 的 Analyzer侨颈,再通過(guò) Calcite 生成 Presto 的 SQL,再丟給 Presto 去執(zhí)行芯义,這樣可以把所有的計(jì)算收到 Presto 這一個(gè)地方哈垢,運(yùn)維團(tuán)隊(duì)幾種精力優(yōu)化 Presto 這一個(gè)系統(tǒng)就好了。

Dali View

統(tǒng)一了 SQL 查詢之后扛拨,LinkedIn 還對(duì) UDF 進(jìn)行了統(tǒng)一耘分,因?yàn)槊總€(gè)平臺(tái)都有自己的 UDF API,他們搞了一個(gè)通用的抽象绑警,使得用戶只要寫(xiě)一份 UDF求泰,就可以在各個(gè)平臺(tái)上運(yùn)行。

Lyft

最后一個(gè)想聊一下的是 Lyft计盒,他們的 PPT 是最長(zhǎng)的渴频,其它人 PPT 只有20來(lái)頁(yè),而他們的 PPT 是70多頁(yè)(其實(shí)很多是PPT是為了頁(yè)面過(guò)度效果)北启。Lyft 的數(shù)倉(cāng)在 2013 年的時(shí)候是完全基于 Redshift的卜朗,到了2018年 Redshift(以及Hive) 只管批量計(jì)算,而用戶的交互式查詢完全交給了 Presto 和 Druid咕村。他們的數(shù)據(jù)量級(jí)在 10 PB以上场钉,保存在S3上面,使用的 Parquet 格式懈涛,通過(guò)日期對(duì)數(shù)據(jù)進(jìn)行分區(qū)逛万,表的總數(shù)在50000以上。

他們使用 Presto 主要還是用來(lái)交互式的數(shù)據(jù)查詢以及每天定時(shí)的報(bào)表生成批钠,不進(jìn)行數(shù)據(jù)清洗宇植,使用高峰時(shí)間是在白天上班時(shí)間得封。

他們開(kāi)發(fā)的一個(gè)比較有意思的特性是 Presto Gateway,這個(gè) Gateway 的來(lái)由是這樣的:上面提到過(guò)当纱,在 Lyft 用戶對(duì) Presto 的使用模式分兩種: 交互式查詢以及定時(shí)報(bào)表生成呛每,這兩種使用模式對(duì)于服務(wù)響應(yīng)速度的需求是不一樣的,為了他們不要相互影響而把 Presto 分成了多個(gè)集群坡氯,但是他們不想讓用戶知道這種底層細(xì)節(jié)晨横。因此他們開(kāi)發(fā)了一個(gè) Gateway,所有的請(qǐng)求都提交到這個(gè) Gateway箫柳,然后這個(gè) Gateway 會(huì)根據(jù)一些路由規(guī)則把請(qǐng)求自動(dòng)路由到正確的集群手形。

Presto Gateway

這個(gè)架構(gòu)圖畫(huà)的確實(shí)有點(diǎn)樸素...

他們還做了一個(gè)很有意思的查詢保護(hù)機(jī)制,保護(hù)整個(gè)集群不至于被某些慢查詢拖垮悯恍,這里使用的也是 Presto 的插件機(jī)制库糠,對(duì)用戶的查詢進(jìn)行分析,分析完成之后應(yīng)用一些預(yù)先定義的規(guī)則對(duì)查詢進(jìn)行阻止涮毫,比如查表的時(shí)候不帶分區(qū)瞬欧,一些預(yù)先知道的很差的Query。

總結(jié)

Presto 界目前有兩大玩家: Facebook 和 Starburst罢防,F(xiàn)acebook 是 Presto 的締造者艘虎,地位自不用說(shuō);Starburst 則是由 Presto 的一些 Committer 組建的一個(gè)公司咒吐,目前在 Presto 商業(yè)版本的一些事情, 一些很關(guān)鍵的特性比如 Presto 的 Cost Base Optimizer 就是由他們貢獻(xiàn)的野建。其實(shí)阿里在 Presto 上面也有很大的研發(fā)投入,只是我們?cè)陂_(kāi)源方面發(fā)聲不多恬叹,有點(diǎn)可惜候生。

Presto 雖然已經(jīng)有了6年的歷史,但是社區(qū)還不是很大绽昼,Summit 也是才開(kāi)第一次唯鸭。但是這種網(wǎng)絡(luò)帶寬越來(lái)越大,計(jì)算跟存儲(chǔ)逐漸分離硅确,這種可以對(duì)各種不同格式的肿孵、保存在各種不同存儲(chǔ)里面的數(shù)據(jù)進(jìn)行分析的計(jì)算引擎應(yīng)該會(huì)越來(lái)越受歡迎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疏魏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晤愧,更是在濱河造成了極大的恐慌大莫,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件官份,死亡現(xiàn)場(chǎng)離奇詭異只厘,居然都是意外死亡烙丛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)羔味,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)河咽,“玉大人,你說(shuō)我怎么就攤上這事赋元⊥罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵搁凸,是天一觀的道長(zhǎng)媚值。 經(jīng)常有香客問(wèn)我,道長(zhǎng)护糖,這世上最難降的妖魔是什么褥芒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嫡良,結(jié)果婚禮上锰扶,老公的妹妹穿的比我還像新娘。我一直安慰自己寝受,他們只是感情好坷牛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著羡蛾,像睡著了一般漓帅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痴怨,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天忙干,我揣著相機(jī)與錄音,去河邊找鬼浪藻。 笑死捐迫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爱葵。 我是一名探鬼主播施戴,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼萌丈!你這毒婦竟也來(lái)了赞哗?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辆雾,失蹤者是張志新(化名)和其女友劉穎肪笋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藤乙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年猜揪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坛梁。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡而姐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出划咐,到底是詐尸還是另有隱情拴念,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布尖殃,位于F島的核電站丈莺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏送丰。R本人自食惡果不足惜缔俄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望器躏。 院中可真熱鬧俐载,春花似錦、人聲如沸登失。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)揽浙。三九已至状婶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馅巷,已是汗流浹背膛虫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钓猬,地道東北人稍刀。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像敞曹,于是被迫代替她去往敵國(guó)和親账月。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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