第1 章初識Druid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Druid 是什麼1
1.2 大數據分析和Druid 1
1.3 Druid 的産生3
1.3.1 MetaMarkets 簡介3
1.3.2 失敗總結4
1.4 Druid 的三個設計原則4
1.4.1 快速查詢(Fast Query) 5
1.4.2 水平擴展能力(Horizontal Scalability) 5
1.4.3 實時分析(Realtime Analytics) 6
1.5 Druid 的技術特點6
1.5.1 數據吞吐量大6
1.5.2 支持流式數據攝入6
1.5.3 查詢靈活且快6
1.5.4 社區支持力度大7
1.6 Druid 的Hello World 7
1.6.1 Druid 的部署環境7
1.6.2 Druid 的基本概念7
1.7 係統的擴展性9
1.8 性能指標10
1.9 Druid 的應用場景10
1.9.1 國內公司11
1.9.2 國外公司12
1.10 小結13
參考資料13
第2 章數據分析及相關軟件. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 數據分析及相關概念15
2.2 數據分析軟件的發展16
2.3 數據分析軟件的分類17
2.3.1 商業軟件17
2.3.2 時序數據庫22
2.3.3 開源分布式計算平颱23
2.3.4 開源分析數據庫25
2.3.5 SQL on Hadoop/Spark 31
2.3.6 數據分析雲服務33
2.4 小結34
參考資料34
第3 章架構詳解. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1 Druid 架構概覽35
3.2 Druid 架構設計思想36
3.2.1 索引對樹結構的選擇37
3.2.2 Druid 總體架構41
3.2.3 基於DataSource 與Segment 的數據結構43
3.3 擴展係統45
3.3.1 主要的擴展45
3.3.2 下載與加載擴展46
3.4 實時節點47
3.4.1 Segment 數據文件的製造與傳播47
3.4.2 高可用性與可擴展性48
3.5 曆史節點49
3.5.1 內存為王的查詢之道49
3.5.2 層的分組功能50
3.5.3 高可用性與可擴展性51
3.6 查詢節點51
3.6.1 查詢中樞點51
3.6.2 緩存的使用52
3.6.3 高可用性52
3.7 協調節點53
3.7.1 集群數據負載均衡的主宰53
3.7.2 利用規則管理數據生命周期53
3.7.3 副本實現Segment 的高可用性54
3.7.4 高可用性54
3.8 索引服務54
3.8.1 主從結構的架構54
3.8.2 統治節點55
3.8.3 中間管理者與苦工56
3.8.4 任務56
3.9 小結57
第4 章安裝與配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.1 安裝準備58
4.1.1 安裝包簡介58
4.1.2 安裝環境59
4.1.3 Druid 外部依賴60
4.2 簡單示例61
4.2.1 服務運行61
4.2.2 數據導入與查詢62
4.3 規劃與部署65
4.4 基本配置68
4.4.1 基礎依賴配置68
4.4.2 數據節點配置調優69
4.4.3 查詢節點配置調優69
4.5 集群節點配置示例70
4.5.1 節點規劃70
4.5.2 Master 機器配置72
4.5.3 Data 機器配置76
4.6 小結79
第5 章數據攝入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.1 數據攝入的兩種方式80
5.1.1 流式數據源80
5.1.2 靜態數據源81
5.2 流式數據攝取81
5.2.1 以Pull 方式攝取82
5.2.2 用戶行為數據攝取案例86
5.2.3 以Push 方式攝取89
5.2.4 索引服務任務相關管理接口91
5.3 靜態數據批量攝取94
5.3.1 以索引服務方式攝取94
5.3.2 以Hadoop 方式攝取96
5.4 流式與批量數據攝取的結閤99
5.4.1 Lambda 架構99
5.4.2 解決時間窗口問題100
5.5 數據攝取的其他重要知識101
5.5.1 數據分片101
5.5.2 數據復製106
5.5.3 索引服務之Tranquility 107
5.5.4 高基數維度優化111
5.6 小結116
第6 章數據查詢. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.1 查詢過程117
6.2 組件118
6.2.1 Filter 118
6.2.2 Aggregator 121
6.2.3 Post-Aggregator 125
6.2.4 Search Query 129
6.2.5 Interval 129
6.2.6 Context 130
6.3 案例介紹131
6.4 Timeseries 134
6.5 TopN 138
6.6 GroupBy 144
6.7 Select 149
6.8 Search 151
6.9 元數據查詢153
6.10 小結156
第7 章高級功能和特性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
7.1 近似直方圖(Approximate Histogram) 158
7.1.1 分位數和直方圖158
7.1.2 實現原理158
7.1.3 如何使用161
7.1.4 近似直方圖小結163
7.2 數據Sketch 163
7.2.1 DataSketch Aggregator 163
7.2.2 DataSketch Post-Aggregator 167
7.3 地理查詢(Geographic Query) 170
7.3.1 基本原理170
7.3.2 空間索引(Spatial Indexing) 171
7.3.3 空間過濾(Spatial Filter) 171
7.3.4 邊界條件(Boundary Condition) 172
7.3.5 地理查詢小結172
7.4 Router 172
7.4.1 Router 概覽172
7.4.2 路由規則174
7.4.3 配置175
7.4.4 路由策略175
7.5 Kaa 索引服務177
7.5.1 設計背景177
7.5.2 實現178
7.5.3 如何使用182
7.6 Supervisor API 186
7.6.1 創建Supervisor 186
7.6.2 關閉Supervisor 186
7.6.3 獲取當前執行的Supervisor 186
7.6.4 獲取Supervisor 規範186
7.6.5 獲取Supervisor 的狀態報告186
7.6.6 獲取所有Supervisor 的曆史187
7.6.7 獲取Supervisor 的曆史187
7.7 最佳實踐187
7.7.1 容量規劃187
7.7.2 Supervisor 的持久化187
7.7.3 Schema 的配置與變更188
7.8 小結188
第8 章核心源代碼探析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.1 如何編譯Druid 代碼189
8.2 Druid 項目介紹190
8.3 索引結構模塊和層次關係192
8.4 Column 結構192
8.5 Segment 195
8.6 Query 模塊203
8.6.1 基礎組件203
8.6.2 內存池管理206
8.6.3 查詢流程概覽207
8.6.4 查詢引擎225
8.7 Coordinator 模塊229
8.8 小結237
第9 章監控和安全. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
9.1 Druid 監控238
9.1.1 Druid 監控指標238
9.1.2 常用的監控方法245
9.2 Druid 告警250
9.2.1 Druid 告警信息250
9.2.2 Druid 與告警係統的集成250
9.3 Druid 安全251
9.3.1 Druid 與利用Kerberos 加強安全認證的係統集成251
9.3.2 集成外部權限模塊完成用戶授權255
9.4 小結256
第10 章實踐和應用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
10.1 小米257
10.1.1 場景一:小米統計服務258
10.1.2 場景二:廣告平颱實時數據分析260
10.2 優酷土豆262
10.2.1 需求分析262
10.2.2 技術選型及工程實踐263
10.2.3 優化策略266
10.3 騰訊267
10.3.1 工程實踐267
10.3.2 業務實踐270
10.4 藍海訊通279
10.5 小結284
第11 章Druid 生態與展望. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
11.1 Druid 生態係統285
11.2 Druid 生態係統資源288
11.2.1 IAP 288
11.2.2 Plywood 289
11.2.3 PlyQL 294
11.2.4 Pivot 297
11.2.5 Druid-Metrics-Kaa 300
11.2.6 Caravel(Airbnb) 301
11.3 Druid 的社區討論組302
11.4 Druid 展望302
參考資料303
附錄A 常見問題(FAQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
附錄B 常用參數錶. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
· · · · · · (
收起)