presto入門

presot要解決的問題


這些系統(tǒng)不允許你使用標準工具來查詢和檢視數(shù)據(jù)击孩。面向特定系統(tǒng)的查詢語言和分析工具比比皆是特愿。

然而商業(yè)分析師已習慣使用業(yè)界標準——SQL移必,無數(shù)強大的工具依賴 SQL 來分析數(shù)據(jù)友鼻、創(chuàng)建儀表盤奋姿、制作富文本報告以及完成其他商業(yè)智能工作。
數(shù)據(jù)分散在各個孤島上古沥,其中有些系統(tǒng)甚至不能提供滿足分析所需的查詢性能瘸右,其他一些系統(tǒng)則將數(shù)據(jù)存儲在單一龐大的系統(tǒng)上,因而不能像現(xiàn)代的云應(yīng)用程序一樣橫向擴展岩齿。沒有這樣的能力尊浓,你就只能縮小潛在的使用場景和用戶數(shù)量,因此降低了數(shù)據(jù)的實用價值纯衍。

presto來救場:
通過支持不同系統(tǒng)上的聯(lián)邦查詢、并行查詢和橫向集群擴展等功能苗胀,它還為我們提供了更多可能性襟诸。
Presto 是一個開源的分布式 SQL 查詢引擎,它是為了高效查詢不同系統(tǒng)和各種規(guī)模(從 GB 級到 PB 級)的數(shù)據(jù)源而從頭開始設(shè)計和編寫的一套系統(tǒng)基协。
Presto 使用分布式執(zhí)行來快速查詢海量數(shù)據(jù)歌亲。如果有 TB 級乃至 PB 級的數(shù)據(jù)需要查詢,你可能會使用 Apache Hive 等工具澜驮,這些工具基于 Hadoop 和 Hadoop 分布式文件系統(tǒng)(Hadoop Distributed File System陷揪,HDFS)工作。

盡管 Presto 能理解并高效地執(zhí)行 SQL杂穷,但它并不是一個數(shù)據(jù)庫悍缠,因為它并不包含自己的數(shù)據(jù)存儲系統(tǒng)。

Presto 同時使用了眾所周知的技術(shù)和新穎的技術(shù)來執(zhí)行分布式查詢耐量,這些技術(shù)包括內(nèi)存并行處理飞蚓、跨集群節(jié)點管線執(zhí)行、多線程執(zhí)行模型(以充分利用所有 CPU 核心)廊蜒、高效的扁平內(nèi)存數(shù)據(jù)結(jié)構(gòu)(以最小化 Java 的垃圾回收)和 Java 字節(jié)碼生成等趴拧。

SQL-on-Anything

image.png

Presto 在原地查詢數(shù)據(jù),無須事先將數(shù)據(jù)遷移集中到某個位置山叮。因此著榴,Presto 不僅可以查詢 HDFS 和其他分布式對象存儲系統(tǒng)中的數(shù)據(jù),而且還可以查詢 RDBMS 和其他數(shù)據(jù)源屁倔。無論數(shù)據(jù)存放在何處脑又,Presto 都可以查詢,因此它可以取代傳統(tǒng)、昂貴和笨重的抽取–變換–加載(ETL)過程挂谍,至少可以幫你減輕相關(guān)任務(wù)的負擔叔壤。

Presto 可以通過動態(tài)擴展計算集群的規(guī)模來擴展查詢能力,并可以在數(shù)據(jù)源中數(shù)據(jù)所在的位置查詢數(shù)據(jù)口叙。借助這一特性,你可以極大地優(yōu)化硬件資源需求并降低成本妄田。

聯(lián)邦查詢是在一個語句中引用并使用不同數(shù)據(jù)庫和模式(schema)的SQL 查詢俺亮,這些數(shù)據(jù)庫和 schema 來自于完全不同的系統(tǒng)。在同一條 SQL 查詢中疟呐,可以查詢 Presto 中可用的所有數(shù)據(jù)源脚曾。

Presto的架構(gòu)

Presto 的查詢執(zhí)行模型、查詢計劃以及基于代價的查詢優(yōu)化算法启具。
Presto 通過在整個集群的服務(wù)器上分配處理任務(wù)來實現(xiàn)橫向擴展本讥,而非通過提高單臺服務(wù)器性能來進行縱向擴展。這意味著鲁冯,你可以通過添加更多的計算節(jié)點來獲得更強大的處理能力拷沸。

image.png
  1. 協(xié)調(diào)器用于接受用戶查詢并管理工作節(jié)點以執(zhí)行查詢工作。
  2. 工作節(jié)點負責執(zhí)行任務(wù)和處理數(shù)據(jù)薯演。
  3. 協(xié)調(diào)器上通常會運行一個節(jié)點發(fā)現(xiàn)服務(wù)(discovery service)撞芍,工作節(jié)點通過注冊到此服務(wù)以加入集群】绨纾客戶端序无、協(xié)調(diào)器和工作節(jié)點之間的通信和數(shù)據(jù)傳輸完全通過基于 HTTP/HTTPS 的 RESTful API 調(diào)用。

協(xié)調(diào)器為工作節(jié)點分配任務(wù)衡创、更新狀態(tài)并從工作節(jié)點獲取頂層的結(jié)果集返回給用戶帝嗡。工作節(jié)點從數(shù)據(jù)源以及運行在其他節(jié)點上的上游任務(wù)中獲取數(shù)據(jù)。
一個 Presto 集群至少包含一個協(xié)調(diào)器璃氢,可能包含一個或多個工作節(jié)點丈探。
一旦接收到一條 SQL 語句,協(xié)調(diào)器就負責解析拔莱、分析碗降、優(yōu)化和調(diào)度查詢?nèi)蝿?wù)在 Presto 工作節(jié)點上的執(zhí)行,查詢語句被翻譯成一系列相連的任務(wù)(Task)塘秦,這些任務(wù)被分發(fā)到各個工作節(jié)點上執(zhí)行讼渊。在工作節(jié)點處理數(shù)據(jù)的同時,協(xié)調(diào)器會將結(jié)果抽取出來放到輸出緩沖區(qū)中尊剔,并將緩沖區(qū)的內(nèi)容暴露給客戶端爪幻。一旦客戶端讀完輸出緩沖區(qū)的內(nèi)容,協(xié)調(diào)器就會代表客戶端向工作節(jié)點請求更多的數(shù)據(jù)。另外挨稿,工作節(jié)點也在不斷地與數(shù)據(jù)源交互并從中讀取數(shù)據(jù)仇轻。最終,客戶端不斷地請求數(shù)據(jù)奶甘,工作節(jié)點則不斷地從數(shù)據(jù)源讀取數(shù)據(jù)并提供給客戶端篷店,直到查詢執(zhí)行結(jié)束。協(xié)調(diào)器臭家、工作節(jié)點和客戶端基于 HTTP 進行通信疲陕。

基于連接器的架構(gòu)

Presto 存儲與計算分離的核心是基于連接器的架構(gòu)。連接器為 Presto 提供了連接任意數(shù)據(jù)源的接口钉赁。每個連接器在底層數(shù)據(jù)源上提供了一個基于表的抽象蹄殃。只要數(shù)據(jù)可以用 Presto 支持的數(shù)據(jù)類型表示成表、列和行你踩,就可以創(chuàng)建連接器并讓查詢引擎使用這些數(shù)據(jù)進行查詢處理诅岩。

查詢執(zhí)行模型

SQL 語句首先以文本形式提交到協(xié)調(diào)器,協(xié)調(diào)器解析和分析這條語句带膜,之后創(chuàng)建一個由 Presto 內(nèi)部數(shù)據(jù)結(jié)構(gòu)表示的執(zhí)行計劃按厘,叫作查詢計劃。圖 4-6 展示了這一流程钱慢。查詢計劃全面地表示了一條SQL 語句處理數(shù)據(jù)和返回結(jié)果所需進行的步驟。
image.png
  1. 協(xié)調(diào)器通過元數(shù)據(jù) SPI 獲取表卿堂、列和數(shù)據(jù)類型的信息束莫。這些信息用于對查詢進行語義校驗、類型檢查和安全檢查草描。
  2. 統(tǒng)計 SPI 用于獲取行數(shù)和表大小的信息览绿,從而在計劃期間進行基于代價的查詢優(yōu)化。
  3. 在創(chuàng)建分布式查詢計劃時會利用數(shù)據(jù)位置 SPI 來生成表內(nèi)容的邏輯切片穗慕。切片是任務(wù)分配和并行的最小單位饿敲。
image.png

連接器

連接器將底層數(shù)據(jù)源(如 RDBMS、對象存儲或鍵值存儲)的查詢和存儲概念翻譯成 SQL 和 Presto 中的表逛绵、列怀各、行和數(shù)據(jù)類型的概念。它們可以是簡單的 SQL 到 SQL 之間的轉(zhuǎn)換和映射术浪,也可以是更復雜的 SQL 到對象存儲或 NoSQL 系統(tǒng)的轉(zhuǎn)換瓢对,還可以是由用戶定義的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胰苏,一起剝皮案震驚了整個濱河市硕蛹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖法焰,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秧荆,死亡現(xiàn)場離奇詭異,居然都是意外死亡埃仪,警方通過查閱死者的電腦和手機乙濒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贵试,“玉大人琉兜,你說我怎么就攤上這事”胁#” “怎么了豌蟋?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長桑滩。 經(jīng)常有香客問我梧疲,道長,這世上最難降的妖魔是什么运准? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任幌氮,我火速辦了婚禮,結(jié)果婚禮上胁澳,老公的妹妹穿的比我還像新娘该互。我一直安慰自己,他們只是感情好韭畸,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布宇智。 她就那樣靜靜地躺著,像睡著了一般胰丁。 火紅的嫁衣襯著肌膚如雪随橘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天锦庸,我揣著相機與錄音机蔗,去河邊找鬼。 笑死甘萧,一個胖子當著我的面吹牛萝嘁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扬卷,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酿愧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了邀泉?” 一聲冷哼從身側(cè)響起嬉挡,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤钝鸽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庞钢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拔恰,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年基括,在試婚紗的時候發(fā)現(xiàn)自己被綠了颜懊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡风皿,死狀恐怖河爹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桐款,我是刑警寧澤咸这,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站魔眨,受9級特大地震影響媳维,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遏暴,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一侄刽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朋凉,春花似錦州丹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盖灸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間磺芭,已是汗流浹背赁炎。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钾腺,地道東北人徙垫。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像放棒,于是被迫代替她去往敵國和親姻报。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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