Presto技術內幕

《Presto技術內幕》是一本專門介紹Presto技術的書籍,由JD-Presto研發團隊翻譯。

內容簡介,基本信息,目錄,

內容簡介

Presto是專門為大數據實時查詢計算而設計和開發的產品。由於Presto是基於Java語言開發的, 因此,對使用者和開發者而言, Presto極易學習、使用並針對特定的業務場景進行改造開發和性能 最佳化。無論是對多數據源支持,還是高性能、易用性、可擴展性等方面, Presto都是大數據實時查 詢計算產品中的佼佼者。 本書按照由淺入深的順序對Presto進行了全方位的細緻講解,具體內容包括Presto概述、 Presto安裝與部署、 Presto RESTful框架解析、提交查詢、生成查詢執行計畫、查詢調度、查詢執行、佇列、System Connector、 Hive Connector、 Kafka Connector、 Connector開發、 Functions開發、 JD-Presto功能改造、 Presto性能調優、 Presto套用場景。 本書對Java研發工程師,在大數據技術領域從業的研發工程師、運維工程師、架構師,對大數 據研究方向感興趣的大學老師和學生、以及大數據技術的入門學者,從事海量數據分析套用的開發 者、研究者都有很強的參考價值。

基本信息

叢書名 :“贏在京東”系列技術教程
作 譯 者:JD-Presto研發團隊
出版時間:2016-07 千 字 數:490
版 次:01-01 頁 數:312
開 本:16開
裝 幀:
I S B N :9787121285639

目錄

第一部分 基礎篇
第 1 章 概述2
1.1 Presto 背景及發展2
1.2 Presto 特點2
1.3 基本概念3
1.3.1 Presto 服務進程3
1.3.2 Presto 模型4
1.3.3 Presto 查詢執行模型 5
1.4 Presto 整體架構9
1.4.1 硬體架構9
1.4.2 軟體架構9
1.5 小結11
第 2 章 Presto 安裝與部署12
2.1 環境說明 12
2.2 準備工作13
2.2.1 建立 SSH 信任關係13
2.2.2 安裝 Java 17
2.2.3 安裝 Maven 17
2.2.4 安裝 Hive 18
2.3 源碼編譯21
2.3.1 下載源碼 21
2.3.2 源碼結構說明 22
2.3.3 編譯 26
2.4 部署 30
2.4.1 服務部署 30
2.4.2 客戶端部署 38
2.4.3 JDBC 使用 40
2.5 小結 42
第二部分 核心設計篇
第 3 章 Presto RESTful 框架解析 44
3.1 Statement 服務接口 44
3.2 Query 服務接口 47
3.3 Stage 服務接口48
3.4 Task 服務接口49
3.5 小結 52
第 4 章 提交查詢 53
4.1 提交查詢的步驟 53
4.2 源碼解析 53
4.3 提交查詢的流程 60
4.4 小結 61
第 5 章 生成查詢執行計畫 62
5.1 基本概念 63
5.1.1 Node 63
5.1.2 Metadata API 67
5.2 詞法與語法分析 68
5.2.1 語法規則 69
5.2.2 詞法分析 69
5.2.3 語法分析 71
5.3 獲取 QueryExecution 72
5.3.1 獲取 QueryExecutionFactory 72
5.3.2 創建 QueryExecution 73
5.3.3 啟動 QueryExecution 74
5.4 語義分析 77
5.4.1 Statement 分析 77
5.4.2 Relation 分析84
5.4.3 表達式分析 91
5.5 執行計畫生成91
5.5.1 執行計畫節點 91
5.5.2 SQL 執行計畫93
5.5.3 Relation 執行計畫95
5.5.4 Query 執行計畫 99
5.6 執行計畫最佳化102
5.6.1 ImplementSampleAsFilter 102
5.6.2 CanonicalizeExpressions 102
5.6.3 SimplifyExpressions 102
5.6.4 UnaliasSymbolReferences 103
5.6.5 PruneRedundantProjections 103
5.6.6 SetFlatteningOptimizer 103
5.6.7 LimitPushDown 104
5.6.8 PredicatePushDown 104
5.6.9 MergeProjections 104
5.6.10 ProjectionPushDown 104
5.6.11 IndexJoinOptimizer105
5.6.12 CountConstantOptimizer 105
5.6.13 WindowFilterPushDown 105
5.6.14 HashGenerationOptimizer 105
5.6.15 PruneUnreferencedOutputs 106
5.6.16 MetadataQueryOptimizer 106
5.6.17 SingleDistinctOptimizer 106
5.6.18 BeginTableWrite 106
5.6.19 AddExchanges 107
5.6.20 PickLayout 107
5.7 執行計畫分段107
5.7.1 Source 107
5.7.2 Fixed 107
5.7.3 Single 107
5.7.4 Coordinator_only 107
5.8 示例108
5.8.1 Count 執行計畫108
5.8.2 Join 執行計畫108
5.9 小結110
第 6 章 查詢調度 111
6.1 生成調度執行器 111
6.2 查詢調度過程 113
6.2.1 NodeManager 114
6.2.2 NodeSelector 115
6.3 小結 118
第 7 章 查詢執行 119
7.1 查詢執行邏輯 120
7.2 Task 調度120
7.2.1 Source Task 調度120
7.2.2 Fixed Task 調度126
7.2.3 Single Task 調度 128
7.2.4 Coordinator_Only Task 調度 128
7.3 Task 執行129
7.3.1 創建 Task 129
7.3.2 更新 Task 135
7.3.3 運行 Task 140
7.4 小結 147
第 8 章 佇列 148
8.1 配置說明 148
8.1.1 queues 佇列定義149
8.1.2 rules 規則定義 149
8.2 佇列載入 150
8.3 佇列匹配 151
8.4 小結 154
第 9 章 System Connector 155
9.1 System Connector 使用155
9.1.1 Information_schema 155
9.1.2 Metadata 157
9.1.3 Runtime 157
9.2 System Connector 實現159
9.2.1 Information_schema 實現160
9.2.2 System Connector 實現163
9.3 小結 168
第 10 章 Hive Connector169
10.1 與 Hive 的結合170
10.2 Split 分片管理 175
10.3 數據讀取179
10.4 Create Table As Select 的實現 182
10.5 小結186
第 11 章 Kafka Connector 187
11.1 認識 Kafka Connector 187
11.1.1 配置187
11.1.2 配置屬性187
11.1.3 內置欄位189
11.1.4 表定義檔案190
11.1.5 Kafka 中的 key 和 message 191
11.1.6 行解碼192
11.1.7 日期和時間解碼器194
11.1.8 文本解碼器194
11.1.9 數值解碼器194
11.2 Kafka 連線器使用教程194
11.2.1 安裝 Apache Kafka195
11.2.2 下載數據195
11.2.3 在 Presto 中配置 Kafka topics 197
11.2.4 基本數據查詢197
11.2.5 添加表定義檔案199
11.2.6 將 message 中所有值映射到不同列200
11.2.7 使用實時數據202
11.3 Kafka Connector 獲取數據 207
11.3.1 Split 分片管理207
11.3.2 數據讀取209
11.4 小結210
第 12 章 Connector 開發211
12.1 創建 Maven 工程 211
12.2 註冊 Plugin 213
12.3 Connector 213
12.4 Metadata 215
12.5 SplitManager 217
12.6 RecordSetProvider 218
12.7 小結 219
第 13 章 Functions 開發220
13.1 Function 註冊 220
13.2 視窗函式 225
13.3 聚合函式 229
13.4 小結 232
第三部分 高級篇
第 14 章 JD-Presto 功能改造234
14.1 PDBO 功能開發234
14.1.1 JDBC Split 剖析235
14.1.2 JdbcRecordCursor 剖析 238
14.1.3 分批次讀取實現原理 240
14.1.4 動態步長實現原理 243
14.1.5 條件下發 245
14.1.6 PDBO 配置定義 247
14.2 DDL 及 DML 支持 250
14.2.1 Hive 連線器 Insert 功能 250
14.2.2 Hive 連線器 CTAS 動態分區表功能 252
14.3 動態增加、修改、刪除 Catalog 254
14.3.1 目的 254
14.3.2 現狀 254
14.3.3 實現 255
14.3.4 效果 258
14.4 小結 258
第 15 章 Presto 性能調優259
15.1 合理設計分區 259
15.2 Group By 字句最佳化 259
15.3 使用模糊聚合函式 259
15.4 合併多條 Like 子句為一條 regexp_like 子句260
15.5 大表放在 Join 子句左邊260
15.6 關閉 distributed hash join 261
15.7 使用 ORC 存儲 261
15.8 小結 262
第 16 章 Presto 套用場景 263
16.1 ETL 263
16.2 實時數據計算264
16.3 Ad-Hoc 查詢266
16.4 實時數據流分析266
16.5 小結268
附錄 A 常見問題及解決辦法269
A.1 同時訪問兩個 Hadoop 集群269
A.2 Kafka 集群重啟後無法獲取數據272
A.3 Task exceeded max memory size 277
A.4 SQL 中 In 子句太長導致棧溢出錯誤278
A.5 高並發導致大量查詢出錯279
附錄 B Presto 配置參數說明 282
附錄 C Presto 執行信息說明289

相關詞條

熱門詞條

聯絡我們