Druid实时大数据分析原理与实践
  • 推荐1
  • 收藏5
  • 浏览6.2K

Druid实时大数据分析原理与实践

欧阳辰 , 刘麒贇 , 张海雷 , 高振源 , 许哲 (作者) 

  • 书  号:978-7-121-30623-5
  • 出版日期:2017-02-14
  • 页  数:348
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:符隆美
Druid 作为一款开源的实时大数据分析软件,最近几年快速风靡全球互联网公司,特别是对于海量数据和实时性要求高的场景,包括广告数据分析、用户行为分析、数据统计分析、运维监控分析等,在腾讯、阿里、优酷、小米等公司都有大量成功应用的案例。本书的目的就是帮助技术人员更好地深入理解Druid 技术、大数据分析技术选型、Druid 的安装和使用、高级特性的使用,也包括一些源代码的解析,以及一些常见问题的快速回答。
Druid 的生态系统正在不断扩大和成熟,Druid 也正在解决越来越多的业务场景。希望本书能帮助技术人员做出更好的技术选型,深度了解Druid 的功能和原理,更好地解决大数据分析问题。本书适合大数据分析的从业人员、IT 人员、互联网从业者阅读。
腾讯、小米、优酷、云测等互联网公司的一线实践经验,为你解读海量实时OLAP平台!
欧阳辰,小米商业产品部研发总监,负责广告架构和数据分析平台,擅长数据挖掘,大数据分析和广告搜索架构。之前,在微软工作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企业产品部,负责腾讯企点的后台和数据平台开发工作。
前言
大数据的繁荣已经来到,Druid 是数据分析的一把利剑,以开源之道,高效解决了大数
据实时分析的众多场景!希望此书成为Druid 宝剑秘籍,帮助读者利用Druid 解决业务问题。
大数据,相比传统数据,具有四个典型特征,即形式多、体量大、速度快及价值高,最终
以产生商业和社会价值为目的。Druid 在解决大数据问题时,能够比较好地处理其中两个方
面,一是大数据量;二是实时处理速度。Druid 在设计上支持PB 级别的数据处理能力,在实
践中,不少公司都有几百TB 数据量的成功应用。实时性是Druid 的一个内置特性,能够轻
松应对每秒数万的流式实时事件,并且支持水平扩展。Druid 的大多数据查询的响应时间也
在亚秒级。在数据多样性方面,Druid 还是有些局限性的,它只支持强类型的数据结构,原
因是为了保证数据索引的高效性和查询性能。
2005 年以前,数据分析主要是以关系型数据库为基础,包括多维数据库(OLAP),支持
中小规模数据的复杂维度的分析查询。2005 年以后,很多分析场景的数据量大大增加,对实
时性要求高,对计算总成本敏感,主流关系型数据库开始有些力不从心。同时,数据行业涌
现出一批基于新硬件架构设计的数据存储系统,常常统称为NoSQL,很多系统都高效地解决
了Key-Value 的存储和访问问题。
2010 年后,基于大数据的分析场景越来多、越来越重要。大数据驱动的业务模式开始深
入人心,没有数据指标,就无法进行优化。很多数据软件系统都无法支持TB 到PB 级别数据
量的实时分析,Druid 就是在这种背景下脱颖而出的开源软件,帮助大家解决业务中的实时
数据分析问题。
2011 年,MetaMarkets 公司为了解决广告交易中海量实时数据的分析问题,在尝试了各
种SQL 和NoSQL 方案后,最后决定自行设计且创建了Druid,该项目于2013 年开源。Druid
是一个支持在大型数据集上进行实时查询而设计的开源数据分析和存储系统,提供了低成
本、高性能、高可靠性的解决方案,整个系统支持水平扩展,管理方便。实际上,Druid 的
很多设计思想来源于Google 的秘密分析武器PowerDrill,在功能上,和Apache 开源的Drill
也有几分相似。Druid 被设计成支持PB 级别的数据量,现实中有数百TB 级别的数据应用实
例,每天处理数十亿流式事件。Druid 之所以保持高效,有这样几个原因:一是数据进行了
有效的聚合或预计算;二是数据结构的优化,应用了Bitmap 的压缩算法;三是可扩展的高
可用架构,灵活支持部署的扩展;四是社区的力量,Druid 开发和用户社区保持活跃,不断
推动Druid 的完善和改进。
Druid 成功应用于众多互联网和非互联网公司中,特别是用户行为分析、个性化推荐的
数据分析、物联网的实时数据分析、互联网广告交易分析等领域。国内的主流广告技术公司,
都曾尝试或开始采用Druid 支持实时数据分析。传统技术公司如Cisco, SK Telecom,也都在
使用Druid 进行用户行为分析等项目。Druid 帮助这些业务场景实现了高效数据存储和流式
数据分析。
另外,Druid 项目中也有不少中国元素,其创始人之一为中国工程师杨仿今,其他核心
开发工程师也包括阿里的宾莉金、谷歌的郭秉坤等。杨仿今曾多次来到中国进行Druid 的技
术交流。Druid 项目初期,不少中国广告技术公司参与了Druid 的技术评估。目前该技术也
广泛应用于中国互联网公司中,例如腾讯、阿里、小米、优酷土豆、蓝海讯通等。
本书的目的就是介绍Druid,让读者能够深入了解Druid 的架构设计、使用管理,也介
绍了一些高级特性和核心源码的导读。本书采用由浅入深、循序渐进的方式介绍Druid,内
容组织如下:
第1 章,介绍Druid 的初级概念;第2 章,对行业中不同的数据分析软件进行介绍和对
比,包括一些时序数据库;第3 章,Druid 的设计理念和架构介绍;第4 章,Druid 的安装和
配置;第5 章,Druid 的数据摄入;第6 章,查询详解;第7 章,介绍Druid 的一些高级特
性,包括正在积极完善的一些功能;第8 章,核心代码的导读和分析;第9 章,集群管理中
的安全和监控;第10 章,介绍几个公司的Druid 最佳实践;第11 章,Druid 的生态介绍和展
望。附录A 简要回答了一些常见的问题;附录B 列出了各个服务模块的参数含义和建议值,
方便系统管理。
Druid 本身也在不断升级中,大约每3~6 个月都有一次升级,每年都有一个大变化,支
持更多的业务场景,不断支持各种主流开源生态,同时围绕着Druid 的开源生态也在慢慢崛
起,包括灵活数据摄入、数据可视化、标准SQL 查询等。目前Druid 在中国发展非常迅速,
几乎都是口口相传的推广,很多基于Druid 的项目都是线上产品的一部分。正因如此,我们
有理由相信Druid 必将会在开源世界里拥有一个更为繁荣和光彩的明天!
本书创作组

目录

第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 Kaa 索引服务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-Kaa 300
11.2.6 Caravel(Airbnb) 301
11.3 Druid 的社区讨论组302
11.4 Druid 展望302
参考资料303
附录A 常见问题(FAQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
附录B 常用参数表. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

读者评论

  • really looking forward to reading the book

    王东勋发表于 2017/3/8 11:28:04

电子书版本

  • Epub
  • Mobi

相关博文

  • 快速了解Druid——实时大数据分析软件

    快速了解Druid——实时大数据分析软件

    管理员账号 2017-02-21

    小编说:Druid 作为一款开源的实时大数据分析软件,最近几年快速风靡全球互联网公司,特别是对于海量数据和实时性要求高的场景。如果你对Druid还很陌生,那赶紧跟着本文快速了解一下吧。相关图书《Druid实时大数据分析原理与实践》。 D...

    管理员账号 2017-02-21
    5334 0 0 0
  • #小编推书#为你解读海量实时OLAP平台!

    管理员账号 2017-03-06

    小编说 Druid 作为一款开源的实时大数据分析软件,最近几年快速风靡全球互联网公司,特别是对于海量数据和实时性要求高的场景,包括广告数据分析、用户行为分析、数据统计分析、运维监控分析等,在腾讯、阿里、优酷、小米等公司都有大量成功应...

    管理员账号 2017-03-06
    614 0 0 0
  • Druid 在小米公司部分技术实践

    Druid 在小米公司部分技术实践

    管理员账号 2017-03-10

    小编说:Druid 作为一款开源的实时大数据分析软件,自诞生以来,凭借自己优秀的特质,不仅逐渐在技术圈收获了越来越多的知名度与口碑,并且陆续成为了很多技术团队解决方案中的关键一环,从而真正在很多公司的技术栈中赢得了一席之地。 本文通过对...

    管理员账号 2017-03-10
    1071 0 0 0

推荐用户

相关图书

Unreal Engine 4可视化设计:交互可视化、动画与渲染开发绝艺

Tom Shannon (作者) 龚震宇 (译者)

Shannon回答了有关UE4可视化问题的常见问题,解决了从数据导入和处理到照明、高级材料和渲染等问题。他揭示了UE4与传统渲染系统重要的不同之处,即使它们使用...

 

虫术——Python绝技

梁睿坤 (作者)

本书以大数据应用方面常用的语言Python为基础,从网络爬虫的实现原理入手,逐步引领读者进入网络爬虫的世界。在各类爬虫框架中,将Scrapy作为轴心,从多个维度...

¥99.00

Scala高性能编程

Vincent Theron (作者) 杨云 (译者)

Scala是一种表达能力非常强的语言,能够用非常简洁的代码表达丰富的业务含义。为了在生产上充分发挥Scala的能力,除了掌握其简洁的语法外,理解Scala在性能...

¥69.00

网络爬虫全解析——技术、原理与实践

罗刚 (作者)

本书介绍了如何开发网络爬虫。内容主要包括开发网络爬虫所需要的Java语法基础和网络爬虫的工作原理,如何使用开源组件HttpClient和爬虫框架Crawler4...

¥49.00

全栈数据之门

任柳江 (作者)

本书以数据分析领域最热的Python语言为主要线索,介绍了数据分析库numpy、Pandas与机器学习库scikit-learn,使用了可视化环境Orange ...

¥49.00

大数据时代的算法:机器学习、人工智能及其典型实例

刘凡平 张启玉 刘刚 (作者)

本书介绍在互联网行业中经常涉及的算法,包括排序算法、查找算法、资源分配算法、路径分析算法、相似度分析算法,以及与机器学习相关的算法,包括数据分类算法、聚类算法、...

¥49.00