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 必将会在开源世界里拥有一个更为繁荣和光彩的明天!
本书创作组
really looking forward to reading the book