Hologres揭秘:高性能原生加速MaxCompute核心原理

Hologres(中文名交互式分析)是阿里云自研的一站式實時數(shù)倉被碗,這個云原生系統(tǒng)融合了實時服務(wù)和分析大數(shù)據(jù)的場景,全面兼容PostgreSQL協(xié)議并與大數(shù)據(jù)生態(tài)無縫打通,能用同一套數(shù)據(jù)架構(gòu)同時支持實時寫入實時查詢以及實時離線聯(lián)邦分析谭期。它的出現(xiàn)簡化了業(yè)務(wù)的架構(gòu)茬高,與此同時為業(yè)務(wù)提供實時決策的能力兆旬,讓大數(shù)據(jù)發(fā)揮出更大的商業(yè)價值。從阿里集團誕生到云上商業(yè)化怎栽,隨著業(yè)務(wù)的發(fā)展和技術(shù)的演進丽猬,Hologres也在持續(xù)不斷優(yōu)化核心技術(shù)競爭力,為了讓大家更加了解Hologres熏瞄,我們計劃持續(xù)推出Hologres底層技術(shù)原理揭秘系列脚祟,從高性能存儲引擎到高效率查詢引擎,高吞吐寫入到高QPS查詢等强饮,全方位解讀Hologres由桌,請大家持續(xù)關(guān)注!

本期我們將帶來Hologres高性能原生加速查詢MaxCompute的技術(shù)原理解析胡陪。

隨著數(shù)據(jù)收集手段不斷豐富沥寥,行業(yè)數(shù)據(jù)大量積累,數(shù)據(jù)規(guī)模已增長到了傳統(tǒng)軟件行業(yè)無法承載的海量數(shù)據(jù)(TB柠座、PB邑雅、EB)級別,MaxCompute(原名ODPS)也因此應(yīng)運而生妈经,致力于批量結(jié)構(gòu)化數(shù)據(jù)的存儲和計算淮野,提供海量數(shù)據(jù)倉庫的解決方案及分析建模服務(wù),是一種快速吹泡、完全托管的EB級數(shù)據(jù)倉庫解決方案骤星。

Hologres在離線大數(shù)據(jù)場景上與MaxCompute天然無縫融合,無需數(shù)據(jù)導入導出就能實現(xiàn)加速查詢MaxCompute爆哑,全兼容訪問各種MaxCompute文件格式洞难,實現(xiàn)對PB級離線數(shù)據(jù)的毫秒級交互式分析。而這一切的背后揭朝,都離不開Hologres背后的執(zhí)行器SQE(S Query Engine)队贱,通過SQE實現(xiàn)對MaxCompute的Native訪問,然后再結(jié)合Hologres高性能分布式執(zhí)行引擎HQE的處理潭袱,達到極致性能柱嫌。

Hologres加速查詢MaxCompute主要有以下幾個優(yōu)勢:

  • 高性能:可以直接對MaxCompute數(shù)據(jù)加速查詢,具有亞秒級響應(yīng)的查詢性能屯换,在OLAP場景可以直接即席查詢编丘,滿足絕大多數(shù)報表等分析場景。
  • 低成本:MaxCompute經(jīng)過數(shù)年的發(fā)展,用戶在MaxCompute上存儲了大量數(shù)據(jù)嘉抓,不需要冗余一份存儲可直接進行訪問索守;另一方面用戶可以只需將部分高性能場景的數(shù)據(jù)遷移到SSD上,報表等分析場景的數(shù)據(jù)可以存儲在MaxCompute進一步降低成本抑片。
  • 更高效:實現(xiàn)對MaxCompute的Native訪問蕾盯,無需遷移和導入數(shù)據(jù),就可以高性能和全兼容的訪問各種MaxCompute文件格式蓝丙,以及Hash/Range Clustered Table等復雜表级遭,降低用戶的使用成本。

SQE 架構(gòu)介紹

mc加速1.png

如上圖所示是SQE的整體架構(gòu)渺尘,可以看出整個架構(gòu)也是非常簡單挫鸽。MaxCompute的數(shù)據(jù)統(tǒng)一存儲在Pangu,當Hologres執(zhí)行一條Query去加速查詢MaxCompute的數(shù)據(jù)時鸥跟,在Hologres端:

  • Hologres Frontend通過RPC向SQE Master請求獲取Meta等相關(guān)信息丢郊。
  • Hologres Blackhole 通過 RPC 向 SQE Executor 請求獲取具體的數(shù)據(jù)相關(guān)信息。
  • SQE由兩種角色的進程組成:
    • SQE Master負責處理Meta相關(guān)的請求医咨,主要負責獲取表枫匾、分區(qū)元數(shù)據(jù)、鑒權(quán)以及文件分片等功能拟淮。
    • SQE Executor作為SQE的核心干茉,負責具體讀取數(shù)據(jù)請求,涉及Block Cache很泊、預讀取角虫、UDF 處理、表達式下推處理委造、索引處理戳鹅、Metric、Meter等等功能昏兆。

MaxCompute外表引擎核心技術(shù)創(chuàng)新

基于SQE的架構(gòu)枫虏,能做到對MaxCompute的數(shù)據(jù)高性能加速查詢,主要是基于以下技術(shù)創(chuàng)新優(yōu)勢:
1)抽象分布式外表
結(jié)合MaxCompute的分布式特性爬虱,Hologres抽象了一個分布式的外表隶债,來支持訪問MaxCompute分布式數(shù)據(jù)。目前可支持訪問跨集群的MaxCompute分布式盤古文件饮潦,并按MaxCompute計算集群就近讀取燃异。

2)和 MaxCompute Meta無縫互通携狭,支持帶版本的元數(shù)據(jù)緩存
SQE和MaxCompute 的 Meta 無縫互通继蜡,可以做到 Meta 和 Data 實時獲取,支持通過Import Foreign Schema命令,自動同步MaxCompute的元數(shù)據(jù)到Hologres的外表稀并,實現(xiàn)外表的自動創(chuàng)建仅颇,結(jié)構(gòu)自動更新。

3)支持UDF/表達式下推
SQE 通過支持 UDF/表達式下推碘举,來實現(xiàn)用戶自定義的UDF計算忘瓦;將表達式下推可以減少無用的數(shù)據(jù)傳輸帶來的開銷,進一步提升性能引颈。

4)異步ORC Reader耕皮,異步prefetch
目前MaxCompute大部分數(shù)據(jù)為ORC格式,在Hologres V0.10及以上版本蝙场,Hologres更新了執(zhí)行引擎凌停,使用異步 Reader 進行更高效的異步讀取,還支持異步prefetch售滤,進一步降低讀取延遲罚拟;此外Hologres支持了 **IO 合并、LazyRead完箩、Lazy Decoding **等一些列的優(yōu)化技術(shù)手段赐俗,來降低在 IO 在整個查詢上的延遲,以帶來極致性能弊知。

5)支持Block Cache
為了避免每次讀數(shù)據(jù)都用IO到文件中取阻逮,SQE同樣使用BlockCache把常用和最近用的數(shù)據(jù)放在內(nèi)存中,減少不必要的IO秩彤,加快讀的性能夺鲜。在同一個節(jié)點內(nèi),通過一致性Hash實現(xiàn)將相同訪問的數(shù)據(jù)共享一個Block Cache呐舔。 比如在Scan 場景可帶來2倍以上的性能提升币励,大大提升查詢性能。

6)常駐進程珊拼,減少調(diào)度開銷
傳統(tǒng)的進程模型等架構(gòu)需要動態(tài)實時的創(chuàng)建進程等調(diào)度操作食呻,帶來了較大的調(diào)度開銷。SQE 采用常駐進程模式澎现,避免不必要的調(diào)度開銷仅胞,此外還可以大大提升Block Cache的命中率和有效使用率。

7)Network Shuffle剑辫,減少落盤開銷
Network Shuffle需要提供一種快速且穩(wěn)定的容錯機制干旧。由于Network Shuffle必須保證發(fā)送端和接收端進程同時alive才能完成數(shù)據(jù)shuffle。同樣的妹蔽,如果采用傳統(tǒng)落盤的方式來進行Network Shuffle的Retry椎眯,雖然能夠保證穩(wěn)定性挠将,但是可能會在Retry過程中由于磁盤IO引入比較大的性能overhead。為了解決這個問題编整,我們優(yōu)化了分階段調(diào)度來解決快速穩(wěn)定的容錯問題舔稀。

MaxCompute外表引擎升級到HQE

上面提到了我們通過SQE進行加速查詢MaxCompute外表,通過SQE查詢時性能可以做到很好掌测,但是和Hologres交互時中間會有一層RPC 交互内贮,在數(shù)據(jù)量較大時網(wǎng)絡(luò)會存在一定瓶頸。
因此我們基于Hologres已有的能力汞斧,在Hologres V0.10及以上版本我們對執(zhí)行引擎進行了優(yōu)化夜郁,支持Hologres HQE查詢引擎直讀MaxCompute 表,在性能上得到進一步的提升粘勒,較SQE方式讀取有 30%以上的性能提升拂酣。
這主要得益于以下幾個方面:

  1. 節(jié)省了 SQE 和 Hologres中間 RPC 的交互,相當于節(jié)省一次數(shù)據(jù)的序列化和反序列化仲义,在性能上得到進一步的提升婶熬。
  2. 可以復用Hologres的Block Cache,這樣第二次查詢時無需訪問存儲埃撵,避免存儲IO赵颅,直接從內(nèi)存訪問數(shù)據(jù),更好的加速查詢暂刘。
  3. 可以復用已有的Filter 下推能力饺谬,減少需要處理的數(shù)據(jù)量。
  4. 在底層的IO層實現(xiàn)了預讀和Cache谣拣,更進一步加速Scan時的性能募寨。

以下是某客戶某實際在線業(yè)務(wù)查詢的性能數(shù)據(jù):

E2E運行時間 SQL Num SQE查詢性能(平均響應(yīng)) HQE查詢性能(平均響應(yīng)) 性能提升
2-10s 547 4,956 ms 2,609 ms +47.34%
10-30s 207 16,757 ms 5,457 ms +67.43%
30s以上 63 78,686 ms 12,666 ms +83.90%
Total 817 13,631 ms 4,106 ms +69.87%

執(zhí)行817個SQL,總體性能提升70%森缠,其中長 Query 提升80%以上拔鹰。

MaxCompute加速場景選擇

在Hologres中加速查詢MaxCompute有兩種方式:
1)創(chuàng)建外表(數(shù)據(jù)還是存儲在MaxCompute中),性能相比在MaxCompute中查詢會有2-5倍的提升
2)導入內(nèi)表贵涵,性能相比外表約有10-100倍的提升
創(chuàng)建外表的方式其原理就是PostgreSQL中的Foreign Data Wrappers列肢,通過外部訪問接口,來訪問存儲在外部的數(shù)據(jù)宾茂。建議您使用更方便的IMPORT FOREIGN SCHEMA 方式來創(chuàng)建外表瓷马,可以更好的簡化元數(shù)據(jù)的同步,無需關(guān)注字段類型映射等跨晴。

直接建外表并的方式實際上是利用查詢引擎的優(yōu)化能力來提高效率的欧聘,但是沒有利用到Hologres的索引能力。所以當把外表導到內(nèi)表的時候端盆,可以根據(jù)查詢的方式指定內(nèi)表的索引結(jié)構(gòu)怀骤,通過這些索引能力帶來更高的查詢性能费封。這就是外表導入內(nèi)表,內(nèi)表的性能更好的原因晒喷,可以充分發(fā)揮數(shù)倉的索引優(yōu)化能力。

目前這兩種方式主要對比如下:

場景/維度 性能 存儲成本 數(shù)據(jù)量 索引 便捷性
Hologres 內(nèi)表 非常好
(SSD) 可支持PB級 可支持位圖访敌、聚簇等多種索引 需要導入數(shù)據(jù)
Hologres 外表 較好
(HDD) 單次query查詢200GB限制 只支持ODPS索引 無需遷移和導入數(shù)據(jù)

從上面對比可以看出:

  • 如果您是數(shù)據(jù)量很大凉敲、對性能有很高的要求時(比如100ms內(nèi)等),對查詢延遲敏感寺旺,對查詢有SLA要求時爷抓,建議您將數(shù)據(jù)導入Hologres內(nèi)表,進行查詢訪問阻塑。
  • 如果是臨時性的探索性分析蓝撇,或者對延遲不敏感的內(nèi)部業(yè)務(wù),可以使用MaxCompute外表方式陈莽,減少數(shù)據(jù)移動渤昌。
  • 除上述場景外,您可以根據(jù)具體業(yè)務(wù)情況選擇合適的使用場景走搁。

MaxCompute與Hologres的組合關(guān)系

上面介紹了很多Hologres外表查詢引擎如何加速查詢MaxCompute的場景独柑,但并不是說所有類型的查詢都適合在Hologres的外表引擎上執(zhí)行。
Hologres是針對交互式分析場景設(shè)計的同步的查詢引擎私植,面向的是大數(shù)據(jù)進忌栅,小數(shù)據(jù)出的場景,典型用在Serving和Analytics的場景曲稼。而MaxCompute是針對海量數(shù)據(jù)加工處理處理場景設(shè)計的異步的數(shù)據(jù)加工引擎索绪,面向的是大數(shù)據(jù)進,大數(shù)據(jù)出的場景贫悄,典型用在ETL的場景瑞驱。在ETL的場景,作業(yè)異步提交窄坦,IO接口針對Scan優(yōu)化钱烟,計算過程需要節(jié)點的冗余設(shè)計支撐高可用,需要計算狀態(tài)落盤從而可以在失敗時自動重試嫡丙,而這些都是Hologres不具備的能力拴袭。因此MaxCompute+Hologres組合在一起,形成了數(shù)據(jù)加工+服務(wù)的一站式體驗曙博,減少了數(shù)據(jù)的隔離和冗余拥刻,可以為大數(shù)據(jù)數(shù)倉提供合理的解決方案架構(gòu),支撐實時離線一體化的開發(fā)體驗父泳。


mc加速2.png

總結(jié)

Hologres通過SQE與MaxCompute深度整合般哼,充分利用Hologres和MaxCompute的優(yōu)勢吴汪,以極致性能為目標,直接就能加速查詢MaxCompute數(shù)據(jù)蒸眠,讓用戶更方便高效的進行交互式分析漾橙,同時也降低了極大的分析成本,實現(xiàn)離線數(shù)倉服務(wù)一體化楞卡。

作者簡介:王奇(花名慧青)霜运,阿里巴巴技術(shù)專家,現(xiàn)從事交互式分析引擎Hologres研發(fā)工作蒋腮。

后續(xù)我們將會陸續(xù)推出有關(guān)Hologres的技術(shù)底層原理揭秘系列淘捡,敬請持續(xù)關(guān)注!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末池摧,一起剝皮案震驚了整個濱河市焦除,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌作彤,老刑警劉巖膘魄,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竭讳,居然都是意外死亡瓣距,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門代咸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹈丸,“玉大人,你說我怎么就攤上這事呐芥÷哒龋” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵思瘟,是天一觀的道長荸百。 經(jīng)常有香客問我,道長滨攻,這世上最難降的妖魔是什么够话? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮光绕,結(jié)果婚禮上女嘲,老公的妹妹穿的比我還像新娘。我一直安慰自己诞帐,他們只是感情好欣尼,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著停蕉,像睡著了一般愕鼓。 火紅的嫁衣襯著肌膚如雪钙态。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天菇晃,我揣著相機與錄音册倒,去河邊找鬼。 笑死磺送,一個胖子當著我的面吹牛驻子,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播册着,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼拴孤,長吁一口氣:“原來是場噩夢啊……” “哼脾歧!你這毒婦竟也來了甲捏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤鞭执,失蹤者是張志新(化名)和其女友劉穎司顿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兄纺,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡大溜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了估脆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钦奋。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疙赠,靈堂內(nèi)的尸體忽然破棺而出付材,到底是詐尸還是另有隱情,我是刑警寧澤圃阳,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布厌衔,位于F島的核電站,受9級特大地震影響捍岳,放射性物質(zhì)發(fā)生泄漏富寿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一锣夹、第九天 我趴在偏房一處隱蔽的房頂上張望页徐。 院中可真熱鬧,春花似錦银萍、人聲如沸泞坦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贰锁。三九已至赃梧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豌熄,已是汗流浹背授嘀。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锣险,地道東北人蹄皱。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像芯肤,于是被迫代替她去往敵國和親巷折。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

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