什麼是 Presto 或 PrestoDB?

Presto (或 PrestoDB) 是全新設計的開放原始碼分散式 SQL 查詢引擎,可對任何規模的資料進行快速的分析查詢。它同時支援非關聯性來源 (例如 Hadoop 分散式檔案系統 (HDFS)、Amazon S3、Cassandra、MongoDB 和 HBase) 與關聯性資料來源 (例如 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server, 和 Teradata)。

Presto 可以查詢資料儲存的位置,而無需將資料移至單獨的分析系統中。在純記憶體架構上並行執行查詢,大多數結果在幾秒鐘內就會出現。許多知名公司都在使用 Presto,例如 FacebookAirbnbNetflixAtlassian 和 Nasdaq

Python 的發展歷程為何?

Presto 從 Facebook 中的專案開始,用於針對 300PB 資料倉儲執行互動式分析查詢,該專案由基於 Hadoop/HDFS 的大型叢集建置。在建立 Presto 之前,Facebook 使用 Apache Hive,它在 2008 年建立並推出,將 SQL 語法的熟悉性帶入 Hadoop 生態系統。Hive 對 Hadoop 生態系統產生了重大影響,因為將複雜的 Java MapReduce 工作簡化為類似 SQL 的查詢,同時能夠大規模執行作業。但是,它並未針對互動查詢所需的快速效能進行最佳化。

2012 年,Facebook Data Infrastructure 組織建置 Presto,這是一個可以在 PB 規模快速執行的互動式查詢系統。它於 2013 年春季在全公司推出。2013 年 11 月,Facebook 在 Apache 軟體授權下開放 Presto 原始碼,並讓任何人都可以在 Github 上下載。如今,Presto 已成為在 Hadoop 上進行互動查詢的流行選擇,並且從 Facebook 和其他組織中獲得了很多貢獻內容。Facebook 的 Presto 實作由超過一千名員工使用,他們每天執行超過 30,000 個查詢,並且處理一個 PB 的資料。

Presto 如何運作?

Presto 是一個在 Hadoop 上執行的分散式系統,其使用類似於經典大規模平行處理 (MPP) 資料庫管理系統的架構。Presto 採用一個協調器節點,其與多個工作節點同步處理。使用者將其 SQL 查詢提交給協調器,協調器會使用自訂查詢和執行引擎來剖析、規劃和排程跨工作節點的分散式查詢計劃。它旨在支援標準 ANSI SQL 語義,包括複雜查詢、彙總、聯結、左/右外部聯結、子查詢、視窗函數、不同計數和近似百分位。

編譯查詢後,Presto 會在工作節點中將請求處理為多個階段。所有處理都在記憶體內完成,並且於階段之間在網路中進行管線,以避免任何不必要的 I/O 負擔。新增更多工作節點可提供更多平行性,並加快處理速度。

為了使 Presto 可擴展到任何資料來源,該工具採用儲存抽象設計,使其輕鬆建置可插入的連接器。因此,Presto 具有許多連接器,包括指向非關聯性來源 (例如 Hadoop 分散式檔案系統 (HDFS)、Amazon S3、Cassandra、MongoDB 和 HBase) 與關聯性資料來源 (例如 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server, 和 Teradata) 的連接器。資料會在儲存位置查詢,而無需將其移至單獨的分析系統中。 

Presto 和 Hadoop 之間的差異為何?

Presto 是一個開放原始碼的分散式 SQL 查詢引擎,專為對 HDFS 和其他資料的快速互動式查詢而設計。與 Hadoop/HDFS 不同,它沒有自己的儲存系統。因此,Presto 是 Hadoop 的附送工具,組織採用兩者來解決更廣泛的業務挑戰。Presto 可以與任何 Hadoop 實作一起安裝,並且包裝在 Amazon EMR Hadoop 發行版中。

誰使用 Presto?

Presto 在許多知名組織中用於非常大規模的生產。您將會發現其中包括 FacebookAirbnbNetflixAtlassianNasdaq更多。Facebook 的 Presto 實作由超過一千名員工使用,他們每天執行超過 30,000 個查詢,並且處理一個 PB 的資料。平均而言,Netflix 每天在其 Presto 叢集上執行大約 3,500 個查詢。Airbnb 建立 Airpal 並開放其原始碼,這是一種以 Web 為基礎的查詢執行工具,可在 Presto 之上使用。在其論壇以及 Facebook 的 Presto 頁面上還有更大的 Presto 社群。

如何在雲端部署 Presto?

Presto 是雲端的理想工作負載,因為雲端提供效能、可擴展性、可靠性、可用性,以及巨大規模經濟。您只需幾分鐘就可以啟動 Presto 叢集。您不必擔心節點佈建、叢集設定、Presto 組態或叢集調校。

AWS 如何在雲端中建置您的 Presto 實作?

Amazon EMR 和 Amazon Athena 是在雲端部署 Presto 的最佳位置,因為它可執行整合,為您嚴格測試 Presto,並可取得 AWS 的可擴展性、簡單性和成本效益。您可以使用 Amazon EMR 在最短的時間內啟動 Presto 叢集,無須進行節點佈建、叢集設定、Presto 組態或叢集調校。EMR 可讓您在最短的時間內佈建一個、數百個或數千個運算執行個體。Amazon Athena 可讓您使用 AWS Serverless 平台部署 Presto,無需設定、管理或調整伺服器、虛擬機器或叢集。只需在 Amazon S3 指向您的資料,定義結構描述,然後使用內建查詢編輯器或使用現有的商業智慧 (BI) 工具開始查詢。Athena 會自動平行化您的查詢,並動態擴展資源,以便查詢快速執行。只需按您執行的查詢付費。

AWS 上的後續步驟

查看其他產品相關資源
檢視雲端中分析服務的免費優惠 
註冊免費帳戶

立即存取 AWS 免費方案。

註冊 
開始在主控台進行建置

開始在 AWS 管理主控台進行建置。

登入