简介
大数据分析平台架构分类
- 数据分析的基础架构可以分为以下几类:
- 使用Hadoop/Spark进行分析
- 将Hadoop/Spark的结果导入 RDBMS 中提供数据分析
- 将结果注入到容量更大的 NoSQL中,解决数据分析的存储瓶颈,例如:HBase
- 将数据源进行流式处理,对接流式计算框架,例如:Flink、Spark Streaming,结果保存到 RDBMS、NoSQL中
- 将数据源进行流式处理,对接分析数据库,例如:Druid
为什么会有Druid
- 基于 Hadoop 的大数据平台,有如下一些问题:
- 无法保障查询性能
- 对于Hadoop使用的MapReduce批处理框架,数据何时能够查询没有性能保证
- 随机IO问题
- HDFS以集群硬盘作为存储资源池的分布式文件系统
- 在海量数据的处理过程中,会引起大量的读写操作,随机IO是高并发场景下的性能瓶颈
- 数据可视化问题
- HDFS对于数据分析以及数据的即席查询,HDFS并不是最优的选择
- 传统的Hadoop大数据处理架构更倾向于一种“后台批处理的数据仓库系统”,其作为海量历史数据保存、冷数据分析,确实是一个优秀的通用解决方案,但
- 无法保证高并发环境下海量数据的查询分析性能
- 无法实现海量实时数据的查询分析与可视化
Druid的诞生
- Druid是由一个名为 MetaMarket 的公司开发的
- 2011年,MetaMarket 开始研发自己的"轮子"Druid,将Druid定义为“开源、分布式、面向列式存储的实时分析数据存储系统”
- 要解决的"痛点"是
- 在高并发环境下,保证海量数据查询分析性能
- 同时提供海量实时数据的查询、分析与可视化功能
Druid是什么
- Druid是面向海量数据的、用于实时查询与分析的OLAP存储系统。Druid的四大关键特性如下:
- 亚秒级的OLAP查询分析
- 采用了列式存储、倒排索引、位图索引等关键技术
- 在亚秒级别内完成海量数据的过滤、聚合以及多维分析等操作
- 实时流数据分析
- 传统分析型数据库采用的批量导入数据,进行分析的方式
- Druid提供了实时流数据分析,以及高效实时写入
- 实时数据在亚秒级内的可视化
- 丰富的数据分析功能
- Druid提供了友好的可视化界面
- SQL查询语言
- REST查询接口
- 高可用性与高可拓展性
- Druid工作节点功能单一,不相互依赖
- Druid集群在管理、容错、灾备、扩容都很容易
- 阿里巴巴也曾创建过一个开源项目叫 Druid (简称阿里 Druid),它是一个数据库连接池项目。阿里 Druid 和 我们要讨论的 Druid 没有任何关系,它们解决完全不同的问题
Druid的典型应用架构
国内哪些公司在使用Druid
- 腾讯
- 腾讯企点采用Druid用于分析大量的用户行为,帮助提升客户价值
- 阿里巴巴
- 阿里搜索组使用Druid的实时分析功能用于获取用户交互行为
- 新浪微博
- 新浪广告团队使用Druid构建数据洞察系统的实时分析部分,每天处理数十亿的消息
- 小米
- Druid用于小米统计的后台数据收集和分析
- 也用于广告平台的数据分析
- 滴滴打车
- Druid是滴滴实时大数据处理的核心模块,用于滴滴实时监控系统,支持数百个关键业务指标
- 通过Druid,滴滴能够快速得到各种实时的数据洞察
- 优酷土豆
- Druid用于其广告的数据处理和分析
Druid 对比其他OLAP
Druid vs. Elasticsearch
- Druid在导入过程会对原始数据进行Rollup,而ES会保存原始数据
- Druid专注于OLAP,针对数据导入以及快速聚合操作做了优化
- Druid不支持全文检索
Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB)
- Druid采用列式存储,使用倒排和bitmap索引,可以做到快速扫描相应的列
Druid vs. Spark
- Spark SQL的响应还不做到亚秒
- Druid可以做到超低的响应时间,例如亚秒,而且高并发面向用户的应用。
Druid vs SQL-on-Hadoop (Impala/Drill/Spark SQL/Presto)
- Driud查询速度更快
- 数据导入,Druid支持实时导入,SQL-on-Hadoop一般将数据存储在Hdfs上,Hdfs的写入速度有可能成为瓶颈
- SQL支持,Druid也支持SQL,但Druid不支持Join操作
Druid vs. Kylin
- Kylin不支持实时查询,Druid支持,但是Kylin3.0已经支持实时查询
- Kylin支持表连接(Join),Druid不支持
- Druid可以进行数据的存储,Kylin只能进行数据的OLAP分析安装imply