推薦序
前 言
第1章 Apache Kylin概述 1
1.1 背景和曆史 1
1.2 Apache Kylin的使命 3
1.2.1 為什麼要使用Apache Kylin 3
1.2.2 Apache Kylin怎樣解決關鍵問題 4
1.3 Apache Kylin的工作原理 5
1.3.1 維度和度量簡介 5
1.3.2 Cube和Cuboid 6
1.3.3 工作原理 7
1.4 Apache Kylin的技術架構 7
1.5 Apache Kylin的主要特點 9
1.5.1 標準SQL接口 9
1.5.2 支持超大數據集 10
1.5.3 亞秒級響應 10
1.5.4 可伸縮性和高吞吐率 10
1.5.5 BI及可視化工具集成 11
1.6 與其他開源産品的比較 11
1.7 小結 13
第2章 快速入門 14
2.1 核心概念 14
2.1.1 數據倉庫、OLAP與BI 14
2.1.2 維度建模 15
2.1.3 事實錶和維度錶 16
2.1.4 維度和度量 16
2.1.5 Cube、Cuboid和Cube Segment 16
2.2 在Hive中準備數據 17
2.2.1 多維數據模型 17
2.2.2 維度錶的設計 17
2.2.3 Hive錶分區 18
2.2.4 瞭解維度的基數 18
2.2.5 樣例數據 18
2.3 安裝和啓動Apache Kylin 19
2.3.1 環境準備 19
2.3.2 必要組件 19
2.3.3 啓動Apache Kylin 19
2.4 設計Cube 19
2.4.1 導入Hive錶定義 19
2.4.2 創建數據模型 21
2.4.3 創建Cube 23
2.5 構建Cube 32
2.5.1 全量構建和增量構建 34
2.5.2 曆史數據刷新 35
2.5.3 閤並 36
2.6 查詢Cube 38
2.6.1 Apache Kylin查詢介紹 38
2.6.2 查詢下壓 40
2.7 SQL參考 41
2.8 小結 41
第3章 Cube優化 42
3.1 Cuboid剪枝優化 42
3.1.1 維度的組閤 42
3.1.2 檢查Cuboid數量 43
3.1.3 檢查Cube大小 45
3.1.4 空間與時間的平衡 46
3.2 剪枝優化工具 47
3.2.1 使用衍生維度 47
3.2.2 聚閤組 49
3.2.3 必需維度 51
3.2.4 層級維度 51
3.2.5 聯閤維度 52
3.3 並發粒度優化 54
3.4 Rowkey優化 55
3.4.1 調整Rowkey順序 55
3.4.2 選擇閤適的維度編碼 56
3.4.3 按維度分片 57
3.5 Top_N度量優化 58
3.6 Cube Planner優化 61
3.7 其他優化 62
3.7.1 降低度量精度 62
3.7.2 及時清理無用Segment 63
3.8 小結 63
第4章 增量構建 64
4.1 為什麼要增量構建 64
4.2 設計增量Cube 66
4.2.1 設計增量Cube的條件 66
4.2.2 增量Cube的創建 67
4.3 觸發增量構建 69
4.3.1 Web GUI觸發 69
4.3.2 構建相關的REST API 70
4.4 管理Cube碎片 76
4.4.1 閤並Segment 76
4.4.2 自動閤並 77
4.4.3 保留Segment 79
4.4.4 數據持續更新 79
4.5 小結 80
第5章 查詢和可視化 81
5.1 Web GUI 81
5.1.1 查詢 81
5.1.2 顯示結果 82
5.2 REST API 84
5.2.1 查詢認證 85
5.2.2 查詢請求參數 85
5.2.3 查詢返迴結果 86
5.3 ODBC 87
5.4 JDBC 90
5.4.1 獲得驅動包 90
5.4.2 認證 90
5.4.3 URL格式 90
5.4.4 獲取元數據信息 91
5.5 Tableau集成 91
5.5.1 連接Kylin數據源 92
5.5.2 設計數據模型 93
5.5.3 “Live”連接 93
5.5.4 自定義SQL 94
5.5.5 可視化展現 94
5.5.6 發布到Tableau Server 95
5.6 Zeppelin集成 95
5.6.1 Zeppelin架構簡介 95
5.6.2 KylinInterpreter的工作原理 96
5.6.3 如何使用Zeppelin訪問Kylin 96
5.7 Superset 集成 98
5.7.1 下載Kylinpy 98
5.7.2 安裝Superset 99
5.7.3 在Superset中添加Kylin Database 100
5.7.4 在Superset中添加Kylin Table 100
5.7.5 在Superset中創建圖錶 103
5.7.6 在Superset中通過SQL Lab探索Kylin 105
5.8 QlikView 集成 106
5.8.1 連接Kylin數據源 106
5.8.2 “Direct Query”連接 107
5.8.3 創建可視化 109
5.8.4 發布到QlikView Server 110
5.9 Qlik Sense集成 110
5.9.1 連接Kylin數據源 110
5.9.2 “Direct Query”連接 112
5.9.3 創建可視化 114
5.9.4 發布到Qlik Sense Hub 115
5.9.5 在Qlik Sense Hub中連接Kylin數據源 117
5.10 Redash集成 118
5.10.1 連接Kylin數據源 118
5.10.2 新建查詢 119
5.10.3 新建儀錶盤 121
5.11 MicroStrategy 集成 122
5.11.1 創建數據庫實例 123
5.11.2 導入邏輯錶 124
5.11.3 創建屬性、事實和度量 124
5.11.4 創建報告 124
5.11.5 MicroStrategy連接Kylin最佳實踐 126
5.12 小結 127
第6章 Cube Planner及儀錶盤 128
6.1 Cube Planner 128
6.1.1 為什麼要引入Cube Planner 128
6.1.2 Cube Planner 算法介紹 129
6.1.3 使用Cube Planner 131
6.2 System Cube 134
6.2.1 開啓System Cube 134
6.2.2 構建和更新System Cube 135
6.3 儀錶盤 135
6.4 小結 137
第7章 流式構建 138
7.1 為什麼要進行流式構建 139
7.2 準備流式數據 139
7.2.1 數據格式 139
7.2.2 消息隊列 140
7.2.3 創建Schema 141
7.3 設計流式Cube 144
7.3.1 創建Model 144
7.3.2 創建Cube 145
7.4 流式構建原理 147
7.5 觸發流式構建 150
7.5.1 單次觸發構建 151
7.5.2 自動化多次觸發 152
7.5.3 初始化構建起點 152
7.5.4 其他操作 153
7.5.5 齣錯處理 153
7.6 小結 154
第8章 使用Spark 155
8.1 為什麼要引入Apache Spark 155
8.2 Spark構建原理 156
8.3 使用Spark構建Cube 158
8.3.1 配置Spark引擎 158
8.3.2 開啓Spark動態資源分配 161
8.3.3 齣錯處理和問題排查 162
8.4 使用Spark SQL創建中間平錶 164
8.5 小結 164
第9章 應用案例分析 166
9.1 小米集團 166
9.1.1 背景 166
9.1.2 利用Apache Kylin構建定製化OLAP解決方案 167
9.1.3 Kylin在小米的三類主要應用場景 168
9.2 美團點評 169
9.2.1 美團點評的數據場景特點 169
9.2.2 接入Apache Kylin的解決方案 170
9.2.3 Kylin的優勢 170
9.3 攜程 171
9.3.1 背景 171
9.3.2 選擇Kylin的原因 171
9.3.3 Kylin在攜程的應用情況 172
9.4 4399小遊戲 173
9.4.1 背景 173
9.4.2 Kylin 部署架構 173
9.4.3 Apache Kylin 在4399的價值 174
9.5 國內某Top 3保險公司 174
9.5.1 背景 174
9.5.2 主要痛點 175
9.5.3 Kylin帶來的改變 175
9.6 某全球頂級銀行卡組織 176
9.6.1 背景 176
9.6.2 Kylin的價值體現 177
第10章 擴展Apache Kylin 178
10.1 可擴展式架構 178
10.1.1 可擴展架構工作原理 178
10.1.2 三大主要接口 180
10.2 計算引擎擴展 183
10.2.1 EngineFactory 183
10.2.2 MRBatchCubingEngine2 184
10.2.3 BatchCubingJobBuilder2 185
10.2.4 IMRInput 187
10.2.5 IMROutput2 189
10.2.6 計算引擎擴展小結 190
10.3 數據源擴展 190
10.3.1 Hive數據源 191
10.3.2 JDBC數據源 192
10.4 存儲擴展 194
10.5 聚閤類型擴展 196
10.5.1 聚閤的JSON定義 196
10.5.2 聚閤類型工廠 197
10.5.3 聚閤類型的實現(Measure-Type) 198
10.5.4 聚閤類型擴展小結 202
10.6 維度編碼擴展 202
10.6.1 維度編碼的JSON定義 202
10.6.2 維度編碼工廠(Dimension-EncodingFactory) 203
10.6.3 維度編碼實現(Dimension-Encoding) 204
10.6.4 維度編碼擴展小結 205
10.7 小結 205
第11章 Apache Kylin的安全與認證 206
11.1 身份驗證 206
11.1.1 自定義驗證 207
11.1.2 LDAP驗證 209
11.1.3 單點登錄 213
11.2 授權 214
11.2.1 新的訪問權限控製 214
11.2.2 統一的項目級彆訪問控製 214
11.2.3 管理數據訪問權限 216
11.3 小結 217
第12章 運維管理 218
12.1 監控和診斷 218
12.1.1 日誌文件 218
12.1.2 任務報警 220
12.1.3 診斷工具 221
12.2 日常維護 222
12.2.1 基本運維 223
12.2.2 元數據備份 223
12.2.3 元數據恢復 224
12.2.4 係統升級 224
12.2.5 遷移 227
12.2.6 垃圾清理 228
12.3 獲得社區幫助 229
12.3.1 郵件列錶 229
12.3.2 JIRA 230
12.4 小結 230
第13章 在雲上使用Kylin 231
13.1 雲計算世界 231
13.2 為何要在雲上使用Kylin 232
13.3 在亞馬遜AWS上使用Kylin 232
13.3.1 準備AWS服務資源 233
13.3.2 AWS賬戶信息 234
13.3.3 創建Amazon EMR集群 235
13.3.4 安裝Apache Kylin 237
13.4 在微軟Azure使用Kylin 239
13.4.1 準備Azure服務資源 240
13.4.2 準備Azure賬戶信息 241
13.4.3 創建HD Insight集群 241
13.4.4 安裝Apache Kylin 246
13.5 在阿裏雲使用Kylin 247
13.5.1 準備阿裏雲服務資源 248
13.5.2 準備阿裏雲賬戶信息 249
13.5.3 創建E-MapReduce集群 250
13.5.4 安裝Apache Kylin 252
13.6 認識Kyligence Cloud 255
13.7 小結 256
第14章 參與開源 257
14.1 Apache Kylin開源曆程 257
14.2 為什麼要參與開源 258
14.3 Apache開源社區簡介 258
14.3.1 簡介 258
14.3.2 組織構成與運作模式 259
14.3.3 項目角色 259
14.3.4 孵化項目及頂級項目 260
14.4 如何貢獻到開源社區 262
14.4.1 什麼是貢獻 262
14.4.2 如何貢獻 262
14.5 禮儀與文化 262
14.6 如何參與Apache Kylin 263
14.6.1 如何成為Apache Contributor 264
14.6.2 如何成為Apache Committer 264
14.7 小結 264
第15章 Kylin的未來 265
15.1 全麵擁抱Spark技術 265
15.2 實時流分析 266
15.3 更快的存儲和查詢 266
15.4 前端展現及與BI工具的整閤 266
15.5 高級OLAP函數 267
15.6 展望 267
附錄A 使用VM本地部署Kylin 268
附錄B Azure HDInsight邊緣節點模闆部署代碼 274
附錄C 集群部署Apache Kylin 277
附錄D 使用MySQL作為元數據存儲 279
附錄E 配置Apache Kylin 281
附錄F 多級配置重寫 284
附錄G 常見問題與解決方案 287
· · · · · · (
收起)