19年初 Presto 創始團隊出走 facebook 導致 Presto 項目一分為二,facebook 的 PrestoDB 和 創始團隊的 PrestoSQL,各自獨立運營發展,而今天 PrestoSQL 突然宣布將改名為 Trino ,GitHub 的頁面的項目名已經更改,而代碼還未來得及更新。
1.Presto 架構
Presto 是一個運行在多台服務器上的分布式系統。完整安裝包括一個 Coordinator 和多 個 Worker。由客戶端提交查詢,從 Presto 命令行 CLI 提交到 Coordinator。Coordinator 進行 解析,分析並執行查詢計划,然后分發處理隊列到 Worker。
1)Coordinator
Coordinator 服務器是用來解析語句,執行計划分析和管理 Presto 的 Worker 結點。Presto 安裝必須有一個 Coordinator 和多個 Worker。如果用於開發環境和測試,則一個 Presto 實例 可以同時擔任這兩個角色。 Coordinator 跟蹤每個 Work 的活動情況並協調查詢語句的執行。Coordinator 為每個查詢 建立模型,模型包含多個 Stage,每個 Stage 再轉為 Task 分發到不同的 Worker 上執行。 Coordinator 與 Worker、Client 通信是通過 REST API。
2)Worker
Worker 是負責執行任務和處理數據。Worker 從 Connector 獲取數據。Worker 之間會交 換中間數據。Coordinator 是負責從 Worker 獲取結果並返回最終結果給 Client。 當 Worker 啟動時,會廣播自己去發現 Coordinator,並告知 Coordinator 它是可用,隨 時可以接受 Task。 Worker 與 Coordinator、Worker 通信是通過 REST API。
3)數據源
貫穿全文,你會看到一些術語:Connector、Catelog、Schema 和 Table。這些是 Presto 特定的數據源
(1)Connector
Connector 是適配器,用於 Presto 和數據源(如 Hive、RDBMS)的連接。你可以認為 類似 JDBC 那樣,但卻是 Presto 的 SPI 的實現,使用標准的 API 來與不同的數據源交互。 Presto 有幾個內建 Connector:JMX 的 Connector、System Connector(用於訪問內建的 System table)、Hive Connector、TPCH(用於 TPC-H 基准數據)。還有很多第三方的 Connector,所以 Presto 可以訪問不同數據源的數據。 每個 Catalog 都有一個特定的 Connector。如果你使用 catelog 配置文件,你會發現每個 文件都必須包含 connector.name 屬性,用於指定 catelog 管理器(創建特定的 Connector 使用)。 一個或多個 catelog 用同樣的 connector 是訪問同樣的數據庫。例如,你有兩個 Hive 集群。 你可以在一個 Presto 集群上配置兩個 catelog,兩個 catelog 都是用 Hive Connector,從而達 到可以查詢兩個 Hive 集群。
(2)Catelog
一個Catelog包含Schema和Connector。例如,你配置JMX的catelog,通過JXM Connector訪問 JXM 信息。當你執行一條 SQL 語句時,可以同時運行在多個 catelog。Presto 處理 table 時,是通過表的完全限定(fully-qualified)名來找catelog。例如, 一個表的權限定名是 hive.test_data.test,則 test 是表名,test_data 是 schema,hive 是 catelog。 Catelog 的定義文件是在 Presto 的配置目錄中。
(3)Schema
Schema是用於組織table。把catelog好schema結合在一起來包含一組的表。當通過Presto 訪問 hive 或 Mysq 時,一個 schema 會同時轉為 hive 和 mysql 的同等概念。
(4)Table
Table 跟關系型的表定義一樣,但數據和表的映射是交給 Connector。
2.presto優缺點
1.優點
1)Presto 與 Hive 對比,都能夠處理 PB 級別的海量數據分析,但 Presto 是基於內存運 算,減少沒必要的硬盤 IO,所以更快。
2)能夠連接多個數據源,跨數據源連表查,如從 Hive 查詢大量網站訪問記錄,然后從 Mysql 中匹配出設備信息。
3)部署也比 Hive 簡單,因為 Hive 是基於 HDFS 的,需要先部署 HDFS
2.缺點
1)雖然能夠處理 PB 級別的海量數據分析,但不是代表 Presto 把 PB 級別都放在內存中 計算的。而是根據場景,如 count,avg 等聚合運算,是邊讀數據邊計算,再清內存,再讀 數據再計算,這種耗的內存並不高。但是連表查,就可能產生大量的臨時數據,因此速度會 變慢,反而 Hive 此時會更擅長。
2)為了達到實時查詢,可能會想到用它直連 MySql 來操作查詢,這效率並不會提升, 瓶頸依然在 MySql,此時還引入網絡瓶頸,所以會比原本直接操作數據庫要慢。
3.presto安裝
https://www.cnblogs.com/shengyang17/p/12173967.html