Druid(Druid.io)介绍

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)进行删除。

三、核心特征

  1. 列式存储格式:Druid采用列式存储格式,因此它只会加载特定查询所需要的特定列的数据。这就极大的加速了那些只需要个别列数据的查询。另外,每一列还根据数据类型做了专门的优化,以便更好的支持列的快速扫描和聚合。
  2. 可扩展的分布式系统:Druid通常被部署到几十到几百台的服务器上,每秒可以支持导入数百万条记录,存储规模可达数十亿条。具有在这种超大规模的数据场景下提供亚秒级查询响应的能力。
  3. 强大的并行处理能力:Druid可以在整个集群中同时并行查询,以降低一个查询所需要的时间。
  4. 支持实时或批量数据导入:Druid可以支持实时数据导入(导入的数据可以被立即查询到),也可以支持批量导入。
  5. 自动负载均衡:druid支持不停机扩缩容。对于运维来说,可以通过简单的增加或删除集群中的机器来轻松地扩展或者收缩集群规模,集群将会自动在后台进行重新负载均衡。当某一台服务器出现问题时,集群将自动下线该服务器直到该服务器恢复正常或者被替换。Druid支持7*24小时在线服务,即使在软件升级或者配置变更的情况下,也不需要下线。
  6. 高度容错的架构以确保不丢失数据:一旦druid接收了数据,数据副本将会被安全的存储在深度存储中(deep storage,通常是云存储,HDFS,或者一个共享的文件系统)。即使所有的druid服务器都出现问题,druid也有能力从深度存储中自动恢复数据。除了深度存储外,druid还支持多副本,当个别服务器出现问题时,druid的多副本保证查询服务不受影响。
  7. 建立索引以支持快速过滤:Druid使用CONCISE和Roaring位图压缩算法来创建索引,这些算法保证在跨列过滤时能够进行非常快速的查询。
  8. 近似算法:Druid实现了快速支持count-distinct, ranking, 直方图以及百分比等近似算法。这些近似算法可以在有限内存的情况下进行快速的计算。对于那些精度比速度更重要的场景,druid也提供了精确的count-distinct和ranking算法。
  9. 在导入数据时自动汇总:Druid可以在导入数据的使用对数据进行自动汇总。这种汇总操作可以对你的数据进行部分预聚合,因此可以极大降低存储成本和提升查询时的速度。

四、应用场景

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/

发布了78 篇原创文章 · 获赞 53 · 访问量 37万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章