Presto(即PrestoDB)是一款靈活、可擴充的分布式SQL查詢引擎。本文介紹Presto的基本特性、系統組成和優勢等資訊。
注意事項
EMR-3.45.0和EMR-5.11.0版本開始支援Presto,其版本號碼通常為0.2XX。此前各版本中的組件版本號碼為3XX的Presto,其核心均為PrestoSQL或Trino,相關資訊請參見Trino。
基本特性
Presto使用Java語言進行開發,具備易用、高效能和強擴充能力等特點,具體如下:
完全支援ANSI SQL。
支援豐富的資料來源,例如,Hive、Hudi、Iceberg、Delta Lake、MySQL和PostgreSQL。
支援進階資料結構,具體如下:
數組和Map資料
JSON資料
GIS(Geographic Information System)資料
顏色資料
功能擴充能力強,提供了多種擴充機制:
擴充資料連線器
自訂資料類型
自訂SQL函數
流水線:基於Pipeline處理模型資料在處理過程中即時返回給使用者。
監控介面完善:
提供友好的Web UI,可視化的呈現查詢任務執行過程。
支援JMX協議。
系統組成
Presto的系統組成如下圖所示。
Presto是典型的M/S架構的系統,由一個Coordinator節點和多個Worker節點群組成。 Coordinator負責如下工作:
接收使用者查詢請求,解析並產生執行計畫,下發Worker節點執行。
監控Worker節點運行狀態,各個Worker節點與Coordinator節點保持心跳串連,彙報節點狀態。
維護MetaStore資料。
Worker節點負責執行下發到任務,通過連接器讀取外部儲存系統到資料,進行處理,並將處理結果發送給Coordinator節點。
Presto當前不支援高可用架構。在EMR叢集中,Coordinator僅會部署在master-1-1節點上;Worker部署在全部Core和Task節點上。
應用情境
Presto是定位在資料倉儲和資料分析業務的分布式SQL引擎,適合以下應用情境:
ETL
Ad-Hoc查詢
海量結構化資料或半結構化資料分析
海量多維資料彙總或報表分析
Presto是一個數倉類產品,因為其對事務支援有限,所以不適合線上業務情境。
產品優勢
E-MapReduce(簡稱EMR)中的Presto與開源Presto比較,還具備如下優勢:
即買即用,快速完成上百節點的Presto叢集搭建。
彈性擴縮容,簡單快速。
與EMR軟體棧完美結合,支援DLF和OSS或OSS-HDFS。
無需營運,EMR提供一站式服務。
基本概念
資料模型
資料模型即資料的組織形式。Presto使用Catalog、Schema和Table三層結構來管理資料。
Catalog:一個Catalog可以包含多個Schema,物理上指向一個外部資料源,可以通過Connector訪問該資料來源。一次查詢可以訪問一個或多個Catalog。
Schema:相當於一個資料庫執行個體,一個Schema包含多張資料表。
Table:資料表,與一般意義上的資料庫表相同。
Connector
Presto通過內建的各種Connector來接入多種外部資料源。Presto提供了一套標準的SPI介面,您可以使用這套介面開發自己的Connector,以便訪問自訂的資料來源。
通常,一個Catalog會綁定一種類型的Connector,並在Catalog的Properties檔案中進行設定。
更多參考
請根據您所使用的Presto組件的版本號碼,修改https://prestodb.io/docs/XXX/中的XXX為對應的版本號碼,然後在瀏覽器訪問該連結,即可查看開源Presto文檔。
例如,如果您的Presto版本號碼為0.279,則可以訪問https://prestodb.io/docs/0.279/,查看相應版本的開源Presto文檔。