Presto是一個開源的分佈式SQL查詢引擎,支持從GB到PB數據量上的交互式分析查詢。數據庫
Presto的設計和編寫徹底是爲了解決像Facebook這樣規模的商業數據倉庫的交互式分析和處理速度的問題。架構
Presto支持在線數據查詢,包括Hive, Cassandra, 關係數據庫以及專有數據存儲。 一條Presto查詢能夠將多個數據源的數據進行合併,能夠跨越整個組織進行分析。分佈式
Presto以分析師的需求做爲目標,他們指望響應時間小於1秒到幾分鐘。 Presto終結了數據分析的兩難選擇,要麼使用速度快的昂貴的商業方案,要麼使用消耗大量硬件的慢速的「免費」方案。spa
Facebook使用Presto進行交互式查詢,用於多個內部數據存儲,包括300PB的數據倉庫。 天天有1000多名Facebook員工使用Presto,執行查詢次數超過30000次,掃描數據總量超過1PB。設計
Presto被設計用來主要處理數據倉儲與分析:數據縫隙,聚合大量的數據而且生產報告。rest
這樣的工做一般被歸類爲Online Analytical Processing(OLAP)。數據分析
Presto查詢引擎是一個Master-Slave的架構,由一個Coordinator節點(Discovery Server),多個Worker節點組成,Discovery Server一般內嵌於Coordinator節點中。ast
Coordinator負責解析SQL語句,生成執行計劃,分發執行任務給Worker節點執行。Worker節點負責實際執行查詢任務。配置
Worker節點啓動後向Discovery Server服務註冊,Coordinator從Discovery Server得到能夠正常工做的Worker節點。硬件
若是配置了Hive Connector,須要配置一個Hive MetaStore服務爲Presto提供Hive元信息,Worker節點與HDFS交互讀取數據。
Presto中訪問多個數據源時,增長了一層catalog來映射不一樣數據源,經過配置不一樣的connector來鏈接多種類型的數據源,或者同種類型的多個數據源。
Presto並不存儲任何實際數據與元數據,只是提供了計算引擎。模型定義以及實際數據仍存儲在各數據源中,Presto只是提供了一個通用的數據源鏈接。