推荐序一
“Druid是一套非常棒的大数据软件,而本书是一本非常棒的Druid课本。”
阅读完欧阳辰等人写的原稿,我很快做出这样的判断,更感叹大数据技术已经彻底迈入一个全新的爆发时代。
作为曾经服务于大数据技术的先驱公司Google的从业者,我个人认为大数据技术有着明显的三个历史发展阶段:
1.探索时代
大家知道,“大数据”与“数据”的核心区别在于数据的完整性。在互联网行业还不成熟的时代,传统行业的数据主要来自于“采样”,数据集并不完备。对小企业来说,数据采集是高成本、高门槛的;即使是对于信息化程度已经很高的大公司,当时的技术也没法很快速地处理TB级别的数据量。
互联网业务特别是数字广告,从第一天开始就尝试解决数据采集的完备性(考虑到按点击收费,客户的微观广告数据必须精细采集),也创新性地研发出能够快速处理大数据的技术解决方案。SSTable、MapReduce和BigTable等非常成功的实践解决方案在这些探索中诞生。当然,还有很多探索性的研发都失败了。
这些成功的新技术慢慢在互联网技术圈传播,随着Apache Hadoop框架的成功,大数据技术开始在行业普及。
2.普及时代
随着社交通信、数字广告、电子商务、网络游戏等商业模式的发展,越来越多的互联网企业诞生。他们都享受了大数据基础技术的红利,从初始就具备比较强大的数据收集、分析和处理能力,并且可以用在业务优化上。
很显然,因为行业的多样性,业务场景变得越来越复杂,对数据处理的要求已经不仅是体量大和速度快,还要数据结构灵活、编程接口强大、系统可扩展、原子化操作、高效备份、读性能加速或者写性能加速等。在这个技术普及的时代,不仅互联网行业有越来越多的技术人员和数据人员开始参与到大数据工作中,而且很多传统软件从业者也慢慢受到吸引,双方互相借鉴,进一步扩大了大数据技术的能力和影响。可以看到,传统的数据库、操作系统、编程语言等技术思想被引入来解决各种复杂的需求。因此而诞生的包括NoSQL、SQL on Hadoop、ElasticSearch这样的新事物,逐渐把我们推进到一个全新的时代。
3.创新时代
本书所介绍的Druid,是大数据技术新时代的产物。现在的新技术,并不只是解决各种技术问题,而是更加贴近复杂的创新型业务的需求场景。我们看到,业内的新框架和新产品,都在探索如何让大数据能为各种不同类型的业务带来更多的优化,解决数据可用性、垂直性、实时性、灵活性、可视化等问题。
如本书所介绍的,Druid以及相关配套的工作,使我们可以非常灵活地实时分析数据,做复杂的维度切割和条件查询,而且可以非常方便地做可视化展示。无论是在互联网企业,还是传统企业,这个工具的使用场景都是非常丰富的,如监控报警、诊断排错、生成业务报表、对接机器学习及策略优化等。
在这个创新时代,还有很多新技术涌现出来,比如强调可编程与实时性的Spark、与Druid类似的Pinot,还有A/B测试(比如我们吆喝科技提供的解决方案)等。
可以看到,大数据相关技术的发展速度是逐渐加快的。原因自然是相关应用的普及(本书有很多详尽的相关案例介绍多家成功公司的应用场景),以及因此而带来的从业人员规模的增长(感谢互联网行业招募和培养了大批人才)。
从MapReduce论文2004年问世到Apache Hadoop框架被广泛使用,经过了5年以上的时间。而从Dremel论文问世到Druid被广泛认可,只用了3年时间。值得指出的是,在这几年时间内,还有很多公司借鉴了Lambda Calculus思想自己研发了闭源系统(Microsoft Dryad、阿里巴巴等)。不过经过几年的实践摸索,业内逐渐形成了以Apache的一系列项目为核心的统一解决方案。大家逐渐意识到,与其对同一问题采取不同的解决方案,不如一个问题一个解决方案,然后大家一起来探索解决更多不同场景的问题。这是现代互联网时代特有的网络效应和规模效应。
本书很大的贡献就是普及Druid(以及如Pinot这样的相似框架),让更多的技术人员、数据人员和互联网业务人员可以快速地熟悉和尝试这个成功的新技术,将它应用在更多场景中,然后能激发更多的创新,进一步推动Druid以及新技术的持续发展。
我在Google总部工作的时候,经常使用Dremel(和Druid类似的工具),也用过基于Dremel的可视化系统PowerDrill。当时的感觉是,一个像SQL一样好用的工具,却能快速查询海量的实时的数据,对业务帮助非常大。举个例子,当时某个广告新产品上线测试后数据不佳,Dremel从实时的数据里发现在某些浏览器里没有点击,于是进一步发现在这些浏览器里渲染有问题,马上改正。如果没有Dremel,这个问题的解决可能需要至少1周以上,而不是几个小时。相信开源的Druid也会像Dremel一样,在很多企业内成为业务数据分析的利器,大幅度提高大家的工作效率。
本书特别出色的地方在于,不仅对Druid的架构以及细节有深入的阐述,而且有非常详尽的代码例子(codelab),甚至有一章专门介绍怎么安装和配置,非常适合工程师一边学习,一边上机实践。在Druid项目文档还不是特别完善的情况下,这本书不仅适合作为大家的学习材料,还能当作日常工作中的手册,已备随时查询。
本书的作者欧阳辰是大数据领域的顶级专家,他现在服务的小米公司在大数据创新上非常积极,对于Druid的使用和贡献也处于业内领先的地位。所以,本书里有非常多的真实业务场景相关的解析,不仅对技术人员,而且对数据人员和业务人员也非常有借鉴价值。
如果你想拥抱大数据的新时代,Druid是你的必学,本书是你的必读。
王晔 AdHoc吆喝科技 创始人 CEO
推荐序二
向在大数据行业从事多年的架构师、正在如火如荼地开展大数据相关工作的工程师,以及正在准备步入大数据行业的新手推荐《Druid实时大数据分析原理与实践》这本书。
在从北京到苏州的高铁上花了5个小时读了这本书,虽然还没有读完,但是我已经可以非常确定地告诉大家这本书“非常引人入胜”。对我这样一个在软件行业做了30年的“码农”、15年以上互联网从业的老兵来说,也别开生面地学了很多新知识,又把脑中的和大数据有关的各种系统知识重新更新了一遍。
本书非常清晰、明确地介绍了Druid是什么、是为什么设计的、特点和特长是什么,以及怎么使用。
本书在介绍美国MetaMarkets公司为什么会设计Druid的同时介绍了业界流行的和大数据有关的大部分系统,以及这些系统诞生的原因及相互之间的比较和特长,比如经典的Hadoop、飞速发展的Spark、用于实时数据流的kafka,非常引人入胜。
本书在介绍为什么和如何使用Druid的同时介绍了Druid的源代码结构,对那些心里痒痒地想给Druid做点贡献的工程师开启了一条入门的道路。
本书最后一章“Druid生态与展望”很好地介绍了在先行使用Druid的用户中逐渐开发的配套设施,以及这些配套设施如何反过来帮助Druid的发展。想使用或者评估Druid的用户都能从这一章得到很多新的启示,并节省用来评估和寻找Druid相关配套设施的时间。
Sherman Tong 微软中国研发中心,高级研发总监