书籍详情
Druid实时大数据分析原理与实践
作者:欧阳辰 等 著
出版社:电子工业出版社
出版时间:2017-03-01
ISBN:9787121306235
定价:¥79.00
购买这本书可以去
内容简介
Druid 作为一款开源的实时大数据分析软件,最近几年快速风靡全球互联网公司,特别是对于海量数据和实时性要求高的场景,包括广告数据分析、用户行为分析、数据统计分析、运维监控分析等,在腾讯、阿里、优酷、小米等公司都有大量成功应用的案例。《Druid实时大数据分析原理与实践》的目的就是帮助技术人员更好地深入理解Druid 技术、大数据分析技术选型、Druid 的安装和使用、高级特性的使用,也包括一些源代码的解析,以及一些常见问题的快速回答。Druid 的生态系统正在不断扩大和成熟,Druid 也正在解决越来越多的业务场景。希望本书能帮助技术人员做出更好的技术选型,深度了解Druid 的功能和原理,更好地解决大数据分析问题。《Druid实时大数据分析原理与实践》适合大数据分析的从业人员、IT 人员、互联网从业者阅读。
作者简介
欧阳辰,小米商业产品部研发总监,负责广告架构和数据分析平台,擅长数据挖掘,大数据分析和广告搜索架构。之前,在微软工作10年,任微软公司高级开发经理,负责Contextual Ads产品研发,开发Bing Index Serve的核心模块。持有多项关于互联网广告及搜索的美国专利。创办“互联居”公众号,致力于互联网广告技术的繁荣。毕业于北京大学计算机系,获硕士学历。刘麒赟,现任Testin云测公司技术总监,全面负责领导团队完成数据分析产品的研发。作为资深数据技术专家,曾为多个著名开源项目(Hadoop/Sqoop/Oozie/Druid)贡献源代码,在互联网大数据分析、机器学习和统计学应用等方面拥有丰富的实战经验和相关专利。在企业级产品研发和客户支持方面也有着丰富的经验,并曾为中国多地(包括香港和台湾地区)的龙头企业成功进行实地支持,为美国与新加坡等地客户进行远程支持。之前,曾任OneAPM公司大数据架构师,以及在IBM公司工作七年并任IBM全球大数据平台产品BigInsights的Advisory Software Engineer。张海雷,资深工程师。目前在优酷土豆广告技术团队负责Druid集群的维护。活跃在Druid中国用户组,Druid、Redis和Storm的开源项目代码贡献者。高振源,热爱技术,爱智求真的后台开发和数据工程师。先后负责过广告DSP产品、QQ公众号精准投放平台、数据分析产品等研发工作。目前在腾讯SNG企业产品部,负责企点产品的数据平台工作。许哲,腾讯后台开发高级工程师,先后参与了公司企业产品消息服务后台、QQ公众号后台、QQ公众号精准投放平台等研发,目前在腾讯SNG企业产品部,负责腾讯企点的后台和数据平台开发工作。
目录
第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
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
猜您喜欢