Druid 是什么
Druid 单词来源于西方古罗马的神话人物,中文常常翻译成德鲁伊。
本问介绍的Druid 是一个分布式的支持实时分析的数据存储系统(Data Store)。美国广告技术公司MetaMarkets 于2011 年创建了Druid 项目,并且于2012 年晚期开源了Druid 项目。Druid 设计之初的想法就是为分析而生,它在处理数据的规模、数据处理的实时性方面,比传统的OLAP 系统有了显著的性能改进,而且拥抱主流的开源生态,包括Hadoop 等。多年以来,Druid 一直是非常活跃的开源项目。
Druid 的官方网站是http://druid.io。
另外,阿里巴巴也曾创建过一个开源项目叫作Druid(简称阿里Druid),它是一个数据库连接池的项目。阿里Druid 和本问讨论的Druid 没有任何关系,它们解决完全不同的问题。
大数据分析和Druid
大数据一直是近年的热点话题,随着数据量的急速增长,数据处理的规模也从GB 级别增长到TB 级别,很多图像应用领域已经开始处理PB 级别的数据分析。大数据的核心目标是提升业务的竞争力,找到一些可以采取行动的洞察(Actionable Insight),数据分析就是其中的核心技术,包括数据收集、处理、建模和分析,最后找到改进业务的方案。
最近一两年,随着大数据分析需求的爆炸性增长,很多公司都经历过将以关系型商用数据库为基础的数据平台,转移到一些开源生态的大数据平台,例如Hadoop 或Spark 平台,以可控的软硬件成本处理更大的数据量。Hadoop 设计之初就是为了批量处理大数据,但数据处理实时性经常是它的弱点。例如,很多时候一个MapReduce 脚本的执行,很难估计需要多长时间才能完成,无法满足很多数据分析师所期望的秒级返回查询结果的分析需求。
为了解决数据实时性的问题,大部分公司都有一个经历,将数据分析变成更加实时的可交互方案。其中,涉及新软件的引入、数据流的改进等。数据分析的几种常见方法如下图。
整个数据分析的基础架构通常分为以下几类。
(1)使用Hadoop/Spark 的MR 分析。
(2)将Hadoop/Spark 的结果注入RDBMS 中提供实时分析。
(3)将结果注入到容量更大的NoSQL 中,例如HBase 等。
(4)将数据源进行流式处理,对接流式计算框架,如Storm,结果落在RDBMS/NoSQL 中。
(5)将数据源进行流式处理,对接分析数据库,例如Druid、Vertica 等。
Druid 的三个设计原则
在设计之初,开发人员确定了三个设计原则(Design Principle)。
(1)快速查询(Fast Query):部分数据的聚合(Partial Aggregate)+内存化(In-emory)+索引(Index)。
(2)水平扩展能力(Horizontal Scalability):分布式数据(Distributed Data)+ 并行化查询(Parallelizable Query)。
(3)实时分析(Realtime Analytics):不可变的过去,只追加的未来(Immutable Past,Append-Only Future)。
1 快速查询(Fast Query)
对于数据分析场景,大部分情况下,我们只关心一定粒度聚合的数据,而非每一行原始数据的细节情况。因此,数据聚合粒度可以是1 分钟、5 分钟、1 小时或1 天等。部分数据聚合(Partial Aggregate)给Druid 争取了很大的性能优化空间。
数据内存化也是提高查询速度的杀手锏。内存和硬盘的访问速度相差近百倍,但内存的大小是非常有限的,因此在内存使用方面要精细设计,比如Druid 里面使用了Bitmap 和各种压缩技术。
另外,为了支持Drill-Down 某些维度,Druid 维护了一些倒排索引。这种方式可以加快AND 和OR 等计算操作。
2 水平扩展能力(Horizontal Scalability)
Druid 查询性能在很大程度上依赖于内存的优化使用。数据可以分布在多个节点的内存中,因此当数据增长的时候,可以通过简单增加机器的方式进行扩容。为了保持平衡,Druid按照时间范围把聚合数据进行分区处理。对于高基数的维度,只按照时间切分有时候是不够的(Druid 的每个Segment 不超过2000 万行),故Druid 还支持对Segment 进一步分区。
历史Segment 数据可以保存在深度存储系统中,存储系统可以是本地磁盘、HDFS 或远程的云服务。如果某些节点出现故障,则可借助Zookeeper 协调其他节点重新构造数据。
Druid 的查询模块能够感知和处理集群的状态变化,查询总是在有效的集群架构中进行。集群上的查询可以进行灵活的水平扩展。Druid 内置提供了一些容易并行化的聚合操作,例如Count、Mean、Variance 和其他查询统计。对于一些无法并行化的操作,例如Median,Druid暂时不提供支持。在支持直方图(Histogram)方面,Druid 也是通过一些近似计算的方法进行支持,以保证Druid 整体的查询性能,这些近似计算方法还包括HyperLoglog、DataSketches的一些基数计算。
3 实时分析(Realtime Analytics)
Druid 提供了包含基于时间维度数据的存储服务,并且任何一行数据都是历史真实发生的事件,因此在设计之初就约定事件一但进入系统,就不能再改变。
对于历史数据Druid 以Segment 数据文件的方式组织,并且将它们存储到深度存储系统中,例如文件系统或亚马逊的S3 等。当需要查询这些数据的时候,Druid 再从深度存储系统中将它们装载到内存供查询使用。
Druid 的技术特点
Druid 具有如下技术特点。
• 数据吞吐量大。
• 支持流式数据摄入和实时。
• 查询灵活且快。
• 社区支持力度大。
1 数据吞吐量大
很多公司选择Druid 作为分析平台,都是看中Druid 的数据吞吐能力。每天处理几十亿到几百亿的事件,对于Druid 来说是非常适合的场景,目前已被大量互联网公司实践。因此,很多公司选型Druid 是为了解决数据爆炸的问题。
2 支持流式数据摄入
很多数据分析软件在吞吐量和流式能力上做了很多平衡,比如Hadoop 更加青睐批量处理,而Storm 则是一个流式计算平台,真正在分析平台层面上直接对接各种流式数据源的系统并不多。
3 查询灵活且快
数据分析师的想法经常是天马行空,希望从不同的角度去分析数据,为了解决这个问题,OLAP 的Star Schema 实际上就定义了一个很好的空间,让数据分析师自由探索数据。数据量小的时候,一切安好,但是数据量变大后,不能秒级返回结果的分析系统都是被诟病的对象。因此,Druid 支持在任何维度组合上进行查询,访问速度极快,成为分析平台最重要的两个杀手锏。
4 社区支持力度大
Druid 开源后,受到不少互联网公司的青睐,包括雅虎、eBay、阿里巴巴等,其中雅虎的Committer 有5 个,谷歌有1 个,阿里巴巴有1 个。最近,MetaMarkets 之前几个Druid 发明人也成立了一家叫作Imply.io 的新公司,推动Druid 生态的发展,致力于Druid 的繁荣和应用。
Druid 的应用场景
从技术定位上看,Druid 是一个分布式的数据分析平台,在功能上也非常像传统的OLAP系统,但是在实现方式上做了很多聚焦和取舍,为了支持更大的数据量、更灵活的分布式部署、更实时的数据摄入,Druid 舍去了OLAP 查询中比较复杂的操作,例如JOIN 等。相比传统数据库,Druid 是一种时序数据库,按照一定的时间粒度对数据进行聚合,以加快分析查询。
在应用场景上,Druid 从广告数据分析平台起家,已经广泛应用在各个行业和很多互联网公司中,最新列表可以访问http://druid.io/druidpowered.html。
Druid 的生态系统正在不断扩大和成熟,Druid 也正在解决越来越多的业务场景。希望《Druid实时大数据分析原理与实践》一书能帮助技术人员做出更好的技术选型,深度了解Druid 的功能和原理,更好地解决大数据分析问题。
各大电商网站火热预售中!
本文选自《Druid实时大数据分析原理与实践》,点此链接可在博文视点官网查看此书。
相关推荐
Druid 是一个用于大数据实时查询和分析的高容错、高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分析。 Druid 具有以下主要特征: 为分析而设计——Druid 是为 OLAP 工作流的探索性分析...
为了满足这种大规模实时数据分析的需求,腾讯看点选择了基于Flink和ClickHouse的实时数据系统来解决实时分析、运营审核、推荐策略评估等业务场景中的痛点。 1. **实时计算引擎的选择**: - Flink:腾讯看点选择了...
3. **监控**:Druid提供了丰富的监控统计功能,包括连接池状态、SQL执行效率、参数信息等,这些信息可以帮助开发者实时了解数据库的运行情况,及时发现和解决问题。 4. **拦截器机制**:Druid支持自定义拦截器,...
在本压缩包"druid源码配置文件和jar包.rar"中,我们关注的是Druid的核心组件——`druid-1.0.9.jar`,以及可能包含的源码和配置文件。 首先,Druid连接池的核心功能是管理数据库连接,它通过复用已建立的连接来减少...
Apache Druid,作为一个高性能、列式存储的开源分布式数据存储系统,广泛应用于商业智能和OLAP(在线分析处理)场景,以处理大量实时和历史数据。然而,其内置的JavaScript引擎设计允许运行不受限制的代码,这在安全...
Apache Storm和Druid等工具可以用于实时数据分析。 8. **可视化与仪表盘**:实时数据的结果需要以直观的方式呈现,以便决策者能够快速理解并采取行动。例如,使用Tableau或Kibana创建实时数据仪表盘。 通过综合...
数据血缘是数据分析和数据治理中的重要概念,它描述了数据在系统中的生成、转换和流动过程,有助于理解和追踪数据的来源以及影响其变化的因素。阿里开源的Druid是一个强大的数据库连接池组件,除了基本的数据库连接...
相比其他连接池如C3P0和DBCP,DruidDataSource提供了更丰富的监控和统计功能,包括SQL执行性能分析、连接健康检查和配置参数实时修改等。这些特性对于大型系统的运维至关重要,能够帮助开发者快速定位和解决问题。 ...
通过这份笔记,学习者将能够全面理解实时大数据处理的概念、技术和实践,从而在大数据领域具备更全面的能力,应对不断增长的实时数据分析需求。无论是对大数据初学者还是经验丰富的专业人士,都是一份宝贵的参考资料...
3. **BI实时监控**:利用商业智能工具进行实时数据分析,帮助决策者快速获取业务洞察。 4. **把脉问题定位**:结合多种技术手段,实现故障的快速定位与修复。 ##### 1. Metric通路 滴滴采用了类似statsd的设计理念...
在本项目"Spring-Mybatis-Druid-Kafka示例集成Example"中,我们探讨了如何将四个关键组件——SpringMVC、Mybatis、Druid和Kafka——整合到一个应用中,以实现高效的数据处理和通信。让我们逐一深入解析这些技术及其...
本文将详细介绍三大常用的数据库连接池——C3P0、DBCP和Druid,以及它们的主要特点和使用方法。 1. C3P0 C3P0是一个开源的JDBC连接池,由Miquel Catalan开发。它提供了全面的JDBC API支持,包括JDBC3规范和JDBC2的...
《新一代DevOps——滴滴出行海量数据场景下的智能监控与故障定位实践》 本文主要探讨了滴滴出行在海量数据场景下如何运用DevOps理念,构建智能监控与故障定位系统,以应对复杂的微服务化和云化环境中的技术挑战。...
此外,文档中提到的Adhoc查询能力,即即席查询,强调了数据平台需要支持即时的、用户定义的数据分析需求,这要求查询引擎具备高度的灵活性和响应速度。在美团点评的案例中,他们利用像Apache Kylin这样的技术来实现...
- **2017年至今**:为了进一步降低开发难度和实时资产管理的复杂性,滴滴推出了自己的实时计算开发平台——Woater,它简化了开发流程,提供了更好的实时数据服务。 **技术方案** 滴滴实时数据开发平台的核心组件...
5. **实时数据分析** - **实时查询和OLAP**:在线分析处理(OLAP)在实时环境下的应用,如使用Druid或Pinot进行实时查询。 - **机器学习与预测**:如何在实时数据流中应用机器学习算法,进行实时预测和异常检测。 ...
Druid连接池的设计理念是高效、稳定和易用,它实现了连接池的智能化管理,例如通过监控机制可以实时了解数据库的运行状态。 Druid的架构主要分为以下几个部分: 1. **连接池核心模块**:负责数据库连接的创建、...
本压缩包"DruidTest[1].zip"似乎包含了一个与Druid相关的测试,这让我们有机会探讨Druid——一个优秀的数据库连接池组件,以及它如何在MySQL环境中进行配置和使用。 首先,让我们了解什么是Druid。Druid是由阿里...