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