第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
· · · · · · (
收起)