《Presto實(shí)戰(zhàn)》筆記摘錄6

作者 | 士心先生
來(lái)源 | 程序員的讀書(shū)故事 (公眾號(hào):pg_reading)

查詢執(zhí)行模型

Presto通常部署為包含一個(gè)協(xié)調(diào)器和多個(gè)工作節(jié)點(diǎn)的集群痴奏。

在協(xié)調(diào)器內(nèi)部翎嫡,SQL語(yǔ)句首先以文本形式提交到協(xié)調(diào)器请敦,協(xié)調(diào)器解析和分析這條語(yǔ)句料祠,之后創(chuàng)建一個(gè)由Presto內(nèi)部數(shù)據(jù)結(jié)構(gòu)表示的執(zhí)行計(jì)劃秃嗜,叫做查詢計(jì)劃权均。


presto2.png

查詢計(jì)劃生成過(guò)程利用了元數(shù)據(jù)SPI和數(shù)據(jù)統(tǒng)計(jì)SPI來(lái)創(chuàng)建查詢計(jì)劃。也就是說(shuō)锅锨,協(xié)調(diào)器會(huì)使用SPI直接連接到數(shù)據(jù)源叽赊,以收集有關(guān)表和其他元數(shù)據(jù)的信息。

presto3.png

協(xié)調(diào)器通過(guò)元數(shù)據(jù)SPI獲取表必搞、列和數(shù)據(jù)類型的信息必指。這些信息用于對(duì)查詢進(jìn)行語(yǔ)義校驗(yàn)、類型檢查和安全檢查恕洲。

統(tǒng)計(jì)SPI用于獲取行數(shù)和表大小的信息塔橡,從而在計(jì)劃期間進(jìn)行基于代價(jià)的查詢優(yōu)化。
在創(chuàng)建分布式查詢計(jì)劃時(shí)會(huì)利用數(shù)據(jù)位置SPI來(lái)生成表內(nèi)容的邏輯切片霜第。切片是任務(wù)分配和并行的最小單位葛家。

分布式查詢計(jì)劃是簡(jiǎn)單查詢計(jì)劃的一個(gè)擴(kuò)展,它包含一個(gè)或多個(gè)stage泌类。簡(jiǎn)單查詢計(jì)劃被切分為多個(gè)計(jì)劃片段癞谒。Stage是在運(yùn)行時(shí)的計(jì)劃片段,它包含對(duì)應(yīng)計(jì)劃片段所描述的所有任務(wù)刃榨。

協(xié)調(diào)器將查詢計(jì)劃切分成Stage弹砚,從而分配給集群中的多個(gè)工作節(jié)點(diǎn)進(jìn)行并行處理,從而加快整體查詢的執(zhí)行速度喇澡。多個(gè)Stage會(huì)被組織成一棵依賴樹(shù)迅栅。Stage的數(shù)量依賴于查詢的復(fù)雜度。例如晴玖,查詢的表读存、返回的列、JOIN語(yǔ)句呕屎、Where條件让簿、Group by操作和其他SQL語(yǔ)句都可能影響Stage的數(shù)量。

presto4.png

分布式執(zhí)行計(jì)劃定義了Stage和查詢?cè)赑resto集群上執(zhí)行的方式秀睛。協(xié)調(diào)器使用它在工作節(jié)點(diǎn)上進(jìn)一步計(jì)劃和調(diào)度任務(wù)尔当。一個(gè)Stage通常包含一個(gè)或多個(gè)任務(wù),每個(gè)任務(wù)則負(fù)責(zé)處理一小部分?jǐn)?shù)據(jù)。

一個(gè)任務(wù)處理數(shù)據(jù)的單位是切片椭迎。切片代表一個(gè)工作節(jié)點(diǎn)可以抽取并處理的一段底層數(shù)據(jù)锐帜,它是并行和任務(wù)分配的單位。

presto5.png

源Stage的任務(wù)以page的形式生產(chǎn)數(shù)據(jù)畜号,每個(gè)page都是以列式存儲(chǔ)格式表示的一系列行缴阎。這些page傳輸?shù)较掠蔚闹虚gStage。Exchange算子從上游Stage中讀取數(shù)據(jù)简软,從而在不同Stage之間傳輸page蛮拔。

在連接器的幫助下,源任務(wù)使用數(shù)據(jù)源SPI從底層數(shù)據(jù)源獲取數(shù)據(jù)痹升。這些數(shù)據(jù)以
page的形式在Presto的查詢引擎之中傳送建炫。算子根據(jù)它們的語(yǔ)義處理接收到的page并產(chǎn)生新page。

包含在一個(gè)任務(wù)里的一串算子叫做流水線疼蛾。流水線中的最后一個(gè)算子通常會(huì)將它輸出的page放置在任務(wù)的輸出緩沖區(qū)中肛跌。下游任務(wù)的Exchange算子會(huì)從上游任務(wù)的輸出緩沖區(qū)中消費(fèi)page。所有這些操作都在不同的工作節(jié)點(diǎn)上并行運(yùn)行据过。


presto6.png

因此惋砂,任務(wù)是運(yùn)行時(shí)分配給一個(gè)工作節(jié)點(diǎn)的計(jì)劃片段。在任務(wù)創(chuàng)建之后绳锅,它會(huì)為每個(gè)切片初始化一個(gè)驅(qū)動(dòng)西饵。每個(gè)驅(qū)動(dòng)都是包含多個(gè)算子的流水線的一個(gè)實(shí)例,并且負(fù)責(zé)處理切片中的數(shù)據(jù)鳞芙。根據(jù)Presto配置和環(huán)境眷柔,一個(gè)任務(wù)可以使用一個(gè)或多個(gè)驅(qū)動(dòng)。當(dāng)所有驅(qū)動(dòng)都執(zhí)行完且數(shù)據(jù)被傳送到下一個(gè)切片時(shí)原朝,驅(qū)動(dòng)和任務(wù)的工作就結(jié)束了驯嘱,它們之后會(huì)被銷毀。


presto7.png

算子處理輸入數(shù)據(jù)并為下游算子生產(chǎn)輸出數(shù)據(jù)喳坠。常見(jiàn)的算子包括TableScan(表掃描)鞠评、Filter(過(guò)濾)、Join和Aggregate(聚合)壕鹉。一系列相連的算子組成一套算子流水線剃幌。例如,你可以擁有一條流水線晾浴,它先掃描并讀入數(shù)據(jù)负乡,再過(guò)濾數(shù)據(jù),最后在數(shù)據(jù)上執(zhí)行局部聚合脊凰。

要處理一條查詢抖棘,協(xié)調(diào)器首先根據(jù)來(lái)自連接器的元數(shù)據(jù)創(chuàng)建切片列標(biāo)。使用該切片列表,協(xié)調(diào)器開(kāi)始在工作節(jié)點(diǎn)上調(diào)度任務(wù)切省,以獲取其中的數(shù)據(jù)最岗。在查詢執(zhí)行期間,協(xié)調(diào)器跟蹤所有可用于處理的切片和任務(wù)在工作節(jié)點(diǎn)上執(zhí)行的位置数尿。一些任務(wù)完成了處理仑性,并產(chǎn)生了很多供下游處理的切片,協(xié)調(diào)器就會(huì)繼續(xù)調(diào)度更多的任務(wù)來(lái)處理它們右蹦,直到?jīng)]有待處理的切片為止。

一旦工作節(jié)點(diǎn)處理完了所有切片歼捐,全部數(shù)據(jù)就可用了何陆。此時(shí)協(xié)調(diào)器會(huì)將結(jié)果返回給客戶端。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豹储,一起剝皮案震驚了整個(gè)濱河市贷盲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剥扣,老刑警劉巖巩剖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钠怯,居然都是意外死亡佳魔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門晦炊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鞠鲜,“玉大人,你說(shuō)我怎么就攤上這事断国∠湍罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵稳衬,是天一觀的道長(zhǎng)霞捡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)薄疚,這世上最難降的妖魔是什么碧信? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮输涕,結(jié)果婚禮上音婶,老公的妹妹穿的比我還像新娘。我一直安慰自己莱坎,他們只是感情好衣式,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般碴卧。 火紅的嫁衣襯著肌膚如雪弱卡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天住册,我揣著相機(jī)與錄音婶博,去河邊找鬼。 笑死荧飞,一個(gè)胖子當(dāng)著我的面吹牛凡人,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叹阔,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挠轴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了耳幢?” 一聲冷哼從身側(cè)響起岸晦,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睛藻,沒(méi)想到半個(gè)月后启上,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡店印,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年冈在,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吱窝。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡讥邻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出院峡,到底是詐尸還是另有隱情兴使,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布照激,位于F島的核電站发魄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏俩垃。R本人自食惡果不足惜励幼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望口柳。 院中可真熱鬧苹粟,春花似錦、人聲如沸跃闹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至苛秕,卻和暖如春肌访,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艇劫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工吼驶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人店煞。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓蟹演,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親顷蟀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轨帜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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