Presto 來自非死book的開源分布式查詢引擎
Presto是一個分布式SQL查詢引擎, 它被設計為用來專門進行高速、實時的數據分析。它支持標準的ANSI SQL,包括復雜查詢、聚合(aggregation)、連接(join)和窗口函數(window functions)。下圖中展現了簡化的Presto系統架構。客戶端(client)將SQL查詢發送到Presto的協調員 (coordinator)。協調員會進行語法檢查、分析和規劃查詢計劃。計劃員(scheduler)將執行的管道組合在一起, 將任務分配給那些里數據最近的節點,然后監控執行過程。 客戶端從輸出段中將數據取出,這些數據是從更底層的處理段中依次取出的。
Presto的運行模型和Hive或MapReduce有著本質的區別。Hive將查詢翻譯成多階段的MapReduce任務, 一個接著一個地運行。每一個任務從磁盤上讀取輸入數據并且將中間結果輸出到磁盤上。然而Presto引擎沒有使用MapReduce。它使用了一個定制的 查詢和執行引擎和響應的操作符來支持SQL的語法。除了改進的調度算法之外,所有的數據處理都是在內存中進行的。不同的處理端通過網絡組成處理的流水線。 這樣會避免不必要的磁盤讀寫和額外的延遲。這種流水線式的執行模型會在同一時間運行多個數據處理段,一旦數據可用的時候就會將數據從一個處理段傳入到下一 個處理段。這樣的方式會大大的減少各種查詢的端到端響應時間。
Presto查詢引擎是一個Master-Slave的架構,由一個Coordinator節點,一個Discovery Server節點,多個Worker節點組成,Discovery Server通常內嵌于Coordinator節點中。Coordinator負責解析SQL語句,生成執行計劃,分發執行任務給Worker節點執行。 Worker節點負責實際執行查詢任務。Worker節點啟動后向Discovery Server服務注冊,Coordinator從Discovery Server獲得可以正常工作的Worker節點。如果配置了Hive Connector,需要配置一個Hive MetaStore服務為Presto提供Hive元信息,Worker節點與HDFS交互讀取數據。
Presto特點:
- 完全基于內存的并行計算
- 流水線
- 本地化計算
- 動態編譯執行計劃
- 小心使用內存和數據結構
- 類BlinkDB的近似查詢
- GC控制
擴展性是在設計Presto時的另一個要點。在項目的早期階段, 非死book就意識到出了HDFS之外,大量數據會被存儲在很多其他類型的系統中。 其中一些是像HBase一類的為人熟知的系統,另一類則是象非死book New Feed一樣的定制的后臺。Presto設計了一個簡單的數據存儲的抽象層, 來滿足在不同數據存儲系統之上都可以使用SQL進行查詢。存儲插件(連接器,connector)只需要提供實現以下操作的接口,包括對元數據 (metadata)的提取,獲得數據存儲的位置,獲取數據本身的操作等。除了我們主要使用的Hive/HDFS后臺系統之外, 非死book也開發了一些連接其他系統的Presto 連接器,包括HBase,Scribe和定制開發的系統。作為Hive和Pig(Hive和Pig都是通過MapReduce的管道流來完成HDFS數據 的查詢)的替代者,Presto不僅可以訪問HDFS,也可以操作不同的數據源,包括:RDBMS和其他的數據源(例如:Cassandra)。目前已經 被支持的RDBMS有:MySQL、SQLServer、PostgreSQL等
WebUI
1、AirPal(推薦)
AirPal是AirBnb開源的查詢Presto的WebUI。 項目特性:
- 可選的用戶訪問控制
- SQL語法高亮
- 查詢結果導出到CSV文件,或者存到Hive表中
- 可查看SQL查詢的歷史記錄
- 可保存查詢
- 根據表名搜索對應的表
- 可查看表結構,并預覽前1000行數據
項目地址 https://github.com/airbnb/airpal
2、Shib
Shib是Treasure Data員工TAGOMORI開源的查詢Hive、Presto、BigQuery的WebUI。
項目地址 https://github.com/tagomoris/shib
3、Hue
Hue本身是不支持查詢Presto的,但是可以通過以下的方法使其支持查詢Presto: https://medium.com/@ilkkaturunen/integrating-presto-with-hue-61702b244839
4、yanagishima
這是一個奇怪的英文名字,因為是一個日本人起的,來自東京的軟件工程師wyukawa。項目特性:
- 安裝簡單(無需安裝RDBMS)
- 易用,與MySQL Workbench類似
- 使用本地存儲記錄獨立的查詢歷史
- 可以為查詢添加標簽
- 可以查看歷史查詢列表
- 可以Kill正在運行的查詢
- 可以格式化查詢語句
- 可查看表信息(列、分區)
- 查詢結果保存為TSV文件
項目地址 https://github.com/wyukawa/yanagishima
其他參考鏈接:
- Presto 官網: http://prestodb.io/
- Presto Github 主頁: https://github.com/非死book/presto
- 京東修改版(推薦): https://github.com/CHINA-JD/presto
- Presto 文檔: http://prestodb-china.com/docs/current/
轉載請注明: 標點符 ? Presto 來自非死book的開源分布式查詢引擎