Presto (SQL查詢引擎)
Presto是一種用於大數據的高效能分散式SQL查詢引擎。其架構允許使用者查詢各種資料來源,如Hadoop、AWS S3、Alluxio、MySQL、Cassandra、Kafka和MongoDB。甚至可以在單個查詢中查詢來自多個資料來源的資料。Presto是Apache許可證下發布的社群驅動的開源軟體。
原作者 | Martin Traverso, Dain Sundstrom, David Phillips, Eric Hwang |
---|---|
首次發布 | 2013年11月10日 |
程式語言 | Java |
作業系統 | 跨平台 |
標準 | SQL |
類型 | 資料倉儲 |
許可協定 | Apache License 2.0 |
網站 | prestodb prestosql |
歷史
Presto最初是Facebook為資料分析師設計和開發的,用於在Apache Hadoop中的大型資料倉儲上執行互動式查詢。在Presto誕生之前,Facebook的資料分析師依靠Apache Hive在他們PB級的資料倉儲上執行SQL分析。Hive不適合Facebook的規模,而Presto是為了填補快速查詢這塊的差距而發明的。最初的開發始於2012年,並於當年晚些時候部署在Facebook上。2013年11月,Facebook宣布將其開源。[1][2] 2014年,Netflix透露他們使用Presto儲存在Amazon Simple Storage Service (S3)中的10 PB資料。[3] 2019年1月,Presto軟體基金會(頁面存檔備份,存於網際網路檔案館)宣布成立。該基金會是一個致力於推進Presto開源分散式SQL查詢引擎的非營利組織[4][5]。由Facebook主導的PrestoDB的開發與由Presto基金會主導的PrestoSQL的開發各自獨立進行,有時會有一些代碼交錯。
架構
Presto的架構非常類似於使用叢集計算(MPP)的傳統資料庫管理系統。它可以視為一個協調器節點,與多個工作節點同步工作。客戶端提交已解析和計劃的SQL語句,然後將並列任務安排給工作機。工作機一同處理來自資料來源的行並生成返回給客戶端的結果。與在每個查詢上使用Hadoop的MapReduce機制的原始Apache Hive執行模型相比,Presto不會將中間結果寫入磁碟,從而顯著提高速度。Presto是用Java語言編寫的。單個Presto查詢可以組合來自多個源的資料。Presto提供資料來源的連接器,包括Alluxio、Hadoop分散式檔案系統、Amazon S3中的檔案、MySQL、PostgreSQL、Microsoft SQL Server、Amazon Redshift、Apache Kudu、Apache Phoenix、Apache Kafka、Apache Cassandra、Apache Accumulo、MongoDB和Redis。與其他只支援Hadoop特定發行版的工具(如Cloudera Impala)不同,Presto可以使用任何風格的Hadoop,也可以不用Hadoop。Presto支援計算和儲存的分離,可以在本地和雲中部署。
參考資料
- ^ Joab Jackson. Facebook goes open source with query engine for big data. Computer World. November 6, 2013 [April 26, 2017]. (原始內容存檔於2019-02-01).
- ^ Jordan Novet. Facebook unveils Presto engine for querying 250 PB data warehouse. Giga Om. June 6, 2013 [April 26, 2017]. (原始內容存檔於2019-09-06).
- ^ Eva Tse, Zhenxiao Luo, Nezih Yigitbasi. Using Presto in our Big Data Platform on AWS. Netflix technical blog. October 7, 2014 [April 26, 2017]. (原始內容存檔於2017-02-24).
- ^ Presto Software Foundation Launches to Advance Presto Open Source Community. PRWeb. [2019-02-01]. (原始內容存檔於2020-04-24).
- ^ Presto's New Foundation Signals Growth for the Big Data SQL Engine. The New Stack. 2019-01-31 [2019-02-01]. (原始內容存檔於2019-02-01) (美國英語).