Druid(Druid.io)简介
一、简介
Druid 的目标是提供一个能够在大数据集上做实时数据摄入与查询的平台,然而对于大多数系统而言,提供数据的快速摄入与提供快速查询是难以同时实现的两个指标。而Druid却可以完美的对两者进行结合,本文将对Druid如何实现这种结合做一个简单的介绍。
Druid.io是一个开源的,分布式的,列式存储的,适用于实时数据分析的OLAP系统。它能够快速聚合、灵活过滤、毫秒级查询、和低延迟数据导入。2011年,MetaMarkets公司为了解决广告交易中海量实时数据的分析问题,在尝试各种SQL和NoSQL方案后,决定自行设计并创建Druid并于2013年开源。Druid被设计成支持PB级别数据量每天处理数十亿流式事件。Druid之所以保持高效有以下几个原因:
数据进行了有效的预聚合或预计算。
数据结果的优化,应用了Bitmap的压缩算法。
可扩展的高可用架构,灵活的支持部署和扩展。
社区的力量,Druid开发和用户社区保持活跃,不断推动Druid完善和改进。
二、技术特
1 数据吞吐量大
很多公司选择Druid 作为分析平台,都是看中Druid 的数据吞吐能力。每天处理几十亿到几百亿的事件,对于Druid 来说是非常适合的场景,目前已被大量互联网公司实践。因此,很多公司选型Druid 是为了解决数据爆炸的问题。
2 支持流式数据摄入
很多数据分析软件在吞吐量和流式能力上做了很多平衡,比如Hadoop 更加青睐批量处理,而Storm 则是一个流式计算平台,真正在分析平台层面上直接对接各种流式数据源的系统并不多。
3 查询灵活且快
数据分析师的想法经常是天马行空,希望从不同的角度去分析数据,为了解决这个问题,OLAP 的Star Schema 实际上就定义了一个很好的空间,让数据分析师自由探索数据。数据量小的时候,一切安好,但是数据量变大后,不能秒级返回结果的分析系统都是被诟病的对象。因此,Druid 支持在任何维度组合上进行查询,访问速度极快,成为分析平台最重要的两个杀手锏。
4 数据不支持修改
Druid在设计上做为时序库设计,用来记录过去时间发生的事件,历史发生的是不可改变。也根据该特点, Druid在数据存储上可以做更多的操作。同时Druid在对数据删除上支持也比较弱,不支持对单条数据的删除,只能单个分片的数据(即单个segment)进行删除。
三、核心特征
四、应用场景
Druid是可以在大数据集上面进行交叉分析的高性能OLAP系统。Druid通常作为强大的分析交互系统的后端存储组件,或者为高并发API提供快速的聚合的能力。druid的典型应用场景如下:
点击流分析(Clickstream analytics)
网络流分析(Network flow analytics)
存储服务器指标(Server metrics storage)
应用性能指标(Application performance metrics)
数字市场分析(Digital marketing analytics)
商业智能和OLAP
从技术定位上看,Druid 是一个分布式的数据分析平台,在功能上也非常像传统的OLAP系统,但是在实现方式上做了很多聚焦和取舍,为了支持更大的数据量、更灵活的分布式部署、更实时的数据摄入,Druid 舍去了OLAP 查询中比较复杂的操作,例如JOIN 等。相比传统数据库,Druid 是一种时序数据库,按照一定的时间粒度对数据进行聚合,以加快分析查询。主要应用方面有广告数据分析、用户行为分析、统计数据分析、监测数据分析
小米:Druid用于小米统计的部分后台数据收集和分析;另外,在广告平台的数据分析方面,Druid也提供了实时的内部分析功能,支持细粒度的多维度查询
新浪微博:新浪微博的广告团队使用Druid构建数据洞察系统的实时分析部分,每天处理数十亿的消息
滴滴打车:Druid是滴滴实时大数据处理的核心模块,用于滴滴的实时监控系统,支持数百个关键业务指标。
腾讯:腾讯的腾讯企点采用了Druid,用于分析大量的用户行为,帮助提升客户的价值
参考:
《Druid实时大数据分析》
Druid官网:http://druid.io/