京東開源的分布式SQL查詢引擎:Presto
Presto是什么?
Presto是一個開源的分布式SQL查詢引擎,適用于交互式分析查詢,數據量支持GB到PB字節。
Presto的設計和編寫完全是為了解決像非死book這樣規模的商業數據倉庫的交互式分析和處理速度的問題。
它可以做什么?
Presto支持在線數據查詢,包括Hive, Cassandra, 關系數據庫以及專有數據存儲。 一條Presto查詢可以將多個數據源的數據進行合并,可以跨越整個組織進行分析。
Presto以分析師的需求作為目標,他們期望響應時間小于1秒到幾分鐘。 Presto終結了數據分析的兩難選擇,要么使用速度快的昂貴的商業方案,要么使用消耗大量硬件的慢速的“免費”方案。
誰在使用它?
非死book使用Presto進行交互式查詢,用于多個內部數據存儲,包括300PB的數據倉庫。 每天有1000多名非死book員工使用Presto,執行查詢次數超過30000次,掃描數據總量超過1PB。
領先的互聯網公司包括Airbnb和Dropbox都在使用Presto。
Presto令人吃驚。 首席工程師Andy Kramolisch剛在生產環境使用了幾天。 在大多數情況下它比Hive快幾個數量級。 與Redshift不同,它直接從HDFS讀取數據,在使用前不需要大量的ETL操作,就可以工作。
Christopher Gutierrez, 在線分析經理, Airbnb
我們對Presto感到非常興奮。 我們打算用它快速獲取用戶使用Dropbox的不同方式,以及診斷他們遇到的問題。 在我們目前的測試中,它應用于某些最重要的特別用例,它表現穩定并且非常快。
Presto是一個運行在多臺服務器上的分布式系統。 完整安裝包括一個coordinator和多個worker。 由客戶端提交查詢,從Presto命令行CLI提交到coordinator。 coordinator進行解析,分析并執行查詢計劃,然后分發處理隊列到worker。

需求
Presto的基本需求
- Linux or Mac OS X
- Java 8, 64-bit
- Python 2.4+
連接器
Presto支持插接式連接器提供的數據。 各連接器的設計需求會有所不同。
Hadoop / Hive
Presto支持從以下版本的Hadoop中讀取Hive數據:
- Apache Hadoop 1.x
- Apache Hadoop 2.x
- Cloudera CDH 4
- Cloudera CDH 5
支持以下文件類型:Text, SequenceFile, RCFile, ORC
此外,需要有遠程的Hive元數據。 不支持本地或嵌入模式。 Presto不使用MapReduce,只需要HDFS。
Cassandra
必須有Cassandra 2.x。 這種連接器完全不依賴Hive連接器,只需要一個安裝好的Cassandra。
TPC-H
TPC-H連接器動態生成數據,可以用于實驗與測試Presto。 此連接器沒有額外要求。
部署
詳細的部署方法見 Presto部署 說明。
執行查詢
完成Presto部署后,你可以使用 命令行接口 執行查詢。