數(shù)據(jù)工程師和分析師對(duì)大量數(shù)據(jù)運(yùn)行交互式臨時(shí)分析的需求繼續(xù)呈爆炸性增長。數(shù)據(jù)平臺(tái)團(tuán)隊(duì)越來越多地使用聯(lián)合SQL 查詢引擎 PrestoDB 為各種用例運(yùn)行此類分析,跨越廣泛的數(shù)據(jù)湖和數(shù)據(jù)庫就地,而無需移動(dòng)數(shù)據(jù)。PrestoDB 由 Linux 基金會(huì)的Presto 基金會(huì)托管,是在 Facebook、Uber 和 Twitter 上大規(guī)模運(yùn)行的同一個(gè)項(xiàng)目。
讓我們來看看 Presto 的一些重要特征,這些特征解釋了它的日益普及。
更輕松地與生態(tài)系統(tǒng)集成
Presto 旨在與現(xiàn)有數(shù)據(jù)生態(tài)系統(tǒng)無縫集成,無需對(duì)正在進(jìn)行的系統(tǒng)進(jìn)行任何修改。這就像使用額外的更快的數(shù)據(jù)訪問接口為您現(xiàn)有的堆棧增壓。
Presto 提供額外的計(jì)算層以加快分析速度。它不存儲(chǔ)數(shù)據(jù),這使它具有能夠根據(jù)需求向上和向下擴(kuò)展查詢資源的巨大優(yōu)勢。
這種計(jì)算和存儲(chǔ)分離使 Presto 查詢引擎非常適合云環(huán)境。大多數(shù)云部署利用對(duì)象存儲(chǔ),它已經(jīng)從計(jì)算層中分離出來,并自動(dòng)擴(kuò)展以優(yōu)化資源成本。
統(tǒng)一的 SQL 接口
SQL 是迄今為止最古老、使用最廣泛的數(shù)據(jù)分析語言。分析師、數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家使用 SQL 來探索數(shù)據(jù)、構(gòu)建儀表板并通過 Jupyter 和 Zeppelin 等筆記本或 Tableau、PowerBI 和 Looker 等 BI 工具來測試假設(shè)。
Presto 是一個(gè)聯(lián)合查詢引擎,它不僅能夠從分布式文件系統(tǒng)中查詢數(shù)據(jù),還能夠從其他來源查詢數(shù)據(jù),例如 Cassandra、Elasticsearch 和 RDBMS 等 NoSQL 存儲(chǔ),甚至是 Kafka 等消息隊(duì)列。
表現(xiàn)
Facebook 團(tuán)隊(duì)開發(fā) Presto 是因?yàn)?Apache Hive 不適合交互式查詢。Hive 的下劃線架構(gòu)通過執(zhí)行多個(gè) MapReduce 和 Tez 作業(yè)來執(zhí)行查詢,非常適合大型復(fù)雜作業(yè),但不適用于低延遲查詢。Hive 項(xiàng)目最近使用 Hive LLAP 引入了內(nèi)存緩存;然而,它適用于某些類型的查詢,但它也使 Hive 更加資源密集。
同樣,Apache Spark 非常適合使用內(nèi)存計(jì)算的大型復(fù)雜作業(yè)。但是,它不如 Presto 交互式 BI 查詢有效。
Presto 專為高性能而打造,具有多項(xiàng)關(guān)鍵功能和優(yōu)化,例如代碼生成、內(nèi)存中處理和流水線執(zhí)行。Presto 查詢?cè)诠ぷ鞴?jié)點(diǎn)上共享一個(gè)長期存在的 Java 虛擬機(jī) (JVM) 進(jìn)程,從而避免了產(chǎn)生新 JVM 容器的開銷。
查詢聯(lián)合
Presto 提供了一個(gè)統(tǒng)一的 SQL 方言,可以抽象出所有支持的數(shù)據(jù)源。這是一項(xiàng)強(qiáng)大的功能,用戶無需了解底層系統(tǒng)的連接和 SQL 方言。
適合云的設(shè)計(jì)
Presto 將存儲(chǔ)和計(jì)算分開運(yùn)行的基本設(shè)計(jì)使其在云環(huán)境中操作極其方便。由于 Presto 集群不存儲(chǔ)任何數(shù)據(jù),因此可以根據(jù)負(fù)載自動(dòng)擴(kuò)展,而不會(huì)造成任何數(shù)據(jù)丟失。
如您所見,Presto 為交互式即席查詢提供了許多優(yōu)勢。難怪?jǐn)?shù)據(jù)平臺(tái)團(tuán)隊(duì)越來越多地使用 Presto 作為事實(shí)上的 SQL 查詢引擎,在不需要移動(dòng)數(shù)據(jù)的情況下跨數(shù)據(jù)源運(yùn)行分析。