簡介:sql
基於內存的並行計算,Facebook推出的分佈式SQL交互式查詢引擎 多個節點管道式執行
支持任意數據源 數據規模GB~PB 是一種Massively parallel processing(mpp)(大規模並行處理)模型
數據規模PB 不是把PB數據放到內存,只是在計算中拿出一部分放在內存、計算、拋出、再拿網絡
多數據源、支持SQL、擴展性(能夠本身擴展新的connector)、混合計算(同一種數據源的不一樣庫 or表;將多個數據源的數據進行合併)、高性能、流水線(pipeline)架構
數據倉庫 交互式略弱的查詢引擎 只能訪問HDFS文件 磁盤
可是presto是沒法代替hive的分佈式
基於spark core mpp模式 詳細課件spark sql一文oop
cube預計算性能
時序,數據放內存 索引 預計算ui
不適合多個大表的join操做,由於presto是基於內存的,太多數據內存放不下的
若是一個presto查詢查過30分鐘,那
就kill吧,說明不適合 也違背了presto的實時初衷spa
至關於MySQL的一個實例,插件
至關於MySQL的database3d
大內存、萬兆網絡、高計算能力
presto 查詢引擎是一個Master-Slave的拓撲架構
中心的查詢角色 接收查詢請求、解析SQL 生成執行計劃 任務調度 worker管理
coordinator進行是presto集羣的master進程
執行任務的節點
presto以插件形式對數據存儲層進行了抽象,它叫作鏈接器,不只包含Hadoop相關組件的鏈接器還包括RDBMS鏈接器
具體訪問哪一個數據源是經過catalog 中的XXXX.properties文件中connector.name決定的
提取數據 負責實際執行查詢計劃
將coordinator和worker結合在一塊兒服務;
worker節點啓動後向discovery service服務註冊
coordinator經過discovery service獲取註冊的worker節點
一、coordinator接到SQL後,經過SQL語法解析器把SQL語法解析變成一個抽象的語法樹AST,只是進行語法解析若是有錯誤此環節暴露
二、語法符合SQL語法,會通過一個邏輯查詢計劃器組件,經過connector 查詢metadata中schema 列名 列類型等,將之與抽象語法數對應起來,生成一個物理的語法樹節點 若是有類型錯誤會在此步報錯
三、若是經過,會獲得一個邏輯的查詢計劃,將其分發到分佈式的邏輯計劃器裏,進行分佈式解析,最後轉化爲一個個task
四、在每一個task裏面,會將位置信息解析出來,交給執行的plan,由plan將task分給worker執行
基於內存的並行計算
流水式計算做業
本地化計算
Presto在選擇Source任務計算節點的時候,對於每個Split,按下面的策略選擇一些minCandidates
優先選擇與Split同一個Host的Worker節點
若是節點不夠優先選擇與Split同一個Rack的Worker節點
若是節點還不夠隨機選擇其餘Rack的節點
動態編譯執行計劃
GC控制
一、若是某個worker掛了,discovery service 會通知coordinator二、對於query是沒有容錯的,一旦worker掛了,query就執行失敗了,與其在這裏容錯不如直接執行三、coordinator 和discovery service 的單點故障問題尚未解決