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 -- 实时大数据分析软件相关推荐

  1. 数据连接池druid 和 大数据框架druid

    叫druid的有两个开源项目. 一个是: Druid是一个JDBC组件,它包括三部分:  DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系.  DruidD ...

  2. 可视化大数据分析软件要掌握的6个核心技术

    大数据技术和商业智能BI相辅相成.大数据技术可以帮助BI产品突破业务和技术的双重挑战.可视化大数据分析软件在市场环境的快速发展中,带来了越来越多的技术要求.这些核心技术已经成为大数据获取.存储.过程分 ...

  3. 目前常见的大数据分析软件有哪些?

    作为一名优秀的数据分析师,既需要不断了解和掌握数据分析方法,同时还需要学习和熟练使用数据分析软件,毕竟借助工具既可以确保数据分析结果的价值,同时也能提升效率,接下来小编带你了解下目前常见的大数据分析软 ...

  4. 房地产大数据分析软件_房地产大数据公司案例

    在庞大的房地产行业,有一个很明显的现象,数据分析正在发挥更大的作用.比如,房地产企业内部的数据非常的复杂繁多,是否有这样一款大数据分析软件可以把这些数据整合起来制造一个有效的大数据平台呢? 随着地产集 ...

  5. 多多情报通:拼多多可以看到什么软件?拼多多的大数据分析软件是什么?

    对于拼多多的企业来说,数据分析和运营商店是非常重要的,那么拼多多可以看到什么软件呢?拼多多的大数据分析软件是什么? 作为拼多多数据分析软件,多多情报通可以为卖家提供行业分析.竞争产品分析和商店监控.热 ...

  6. 实时大数据开发难、运维难、应用难?来,一站解决!

    2019独角兽企业重金招聘Python工程师标准>>> 最新发布 DataWorks Stream Studio重磅发布 2019年5月15日15时,阿里云DataWorks Str ...

  7. 【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务

    基于Blink为新商业调控打造实时大数据交互查询服务 案例与解决方案汇总页: 阿里云实时计算产品案例&解决方案汇总 从IT到DT.从电商到新商业,阿里巴巴的每个细胞都存在大数据的DNA,如何挖 ...

  8. 争分夺秒:阿里实时大数据技术全力助战双11

    摘要: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的<2017阿里巴巴双11技术十二讲>顺利结束,集中为大家分享了2017双11背后的黑科技.本文是<争分夺秒:阿里实时 ...

  9. 一个好的大数据分析软件包含哪些功能

    随着数字时代的到来,数据已经成为企业最重要的资源.现在企业面临的问题是如何在数据的海洋中获取有价值的信息.在这样的市场背景下,数据分析软件应运而生,许多企业习惯于使用数据分析软件来处理数据.这是因为使 ...

最新文章

  1. 在什么场景下该使用JMX,如何使用,会带来什么好处,这种场景下有哪些替代方案?...
  2. python抓包教程_Python爬虫入门技能:教你通过 Fiddler 进行手机抓包!
  3. 银行祖传系统重构实例:创立12年,只支持Python 2,跑着500多个应用程序
  4. 一篇文章带你详解 TCP/IP 协议(上)
  5. 全球及中国手机便携式移动电源行业营销模式及投资竞争力分析报告2021-2027年版
  6. 【MM 模块】 Optimized Purchasing 优化采购 3
  7. 从根本上了解异步编程体系
  8. Hibernate 配置详解(5)
  9. 经验分享 | 二本直博浙大?我只是写了篇论文而已
  10. 通达信众赢全部破解指标(完美无错源码副图)
  11. Ubuntu执行脚本报错-bash: ./send.py: /usr/bin/python: bad interpreter: Permission denied
  12. Wannafly挑战赛25 A.因子
  13. Linux 文件umask默认权限_012
  14. matlab filter函数_简单使用matlab滤波器
  15. Atitit index threod type 索引原理与类型 种类 目录 1.1. 每个文档在经过底层的存储引擎持久化后 1 2. MongoDB索引类型 2 2.1. 包括单字段索引、复合索引
  16. .NET Interop.SHDocVw和MSHTML引用如何操作
  17. java 大字符集_JAVA语言之java 乱码 字符集编码
  18. JAVA笔试题常见坑_java笔试常见的选择题(坑你没商量)
  19. 怎样获取计算机硬盘号,电脑硬盘序列号读取工具
  20. 指针(小破站-王道训练营P18的例题)

热门文章

  1. arduino无源蜂鸣器歌曲编码_Arduino与无源蜂鸣器
  2. vue人力管理_Vue管理后台框架选择推荐(收藏)
  3. 防止mysql拷贝_转载:mysql复制优化
  4. linux 日期 通配符,Linux常用基础命令下(grep,history,du,date,通配符,alias,rm,mv,cp)
  5. python新手如何度过小白期,不再当菜鸟程序员?
  6. Google的三篇大数据思想论文
  7. python打包的exe开机自动启动(windows)
  8. hadoop的关键进程
  9. 连接数据库时提示归档器失败 ORA-00257: archiver error
  10. jsp与jsp页面间的值传递与接收