|NO.Z.00001|——————————|BigDataEnd|——|Hadoop&OLAP_Druid.V01|——|Druid.v01|简介架构概述|
一、Druid概述
### --- 什么是Druid
~~~ # 数据分析的基础架构可以分为以下几类:
~~~ 使用Hadoop/Spark进行分析
~~~ 将Hadoop/Spark的结果导入 RDBMS 中提供数据分析
~~~ 将结果保存到容量更大的 NoSQL 数据库中,解决数据分析的存储瓶颈,例如:HBase
~~~ 将数据源进行流式处理对接流式计算框架(如Storm、Spark、Flink)结果保存到 RDBMS或NoSQL中
~~~ 将数据源进行流式处理,对接分析数据库,例如:Druid
二、Druid架构

### --- Druid架构
~~~ 互联网技术的快速增长催生了各类大体量的数据,
~~~ Hadoop很大的贡献在于帮助企业将他们那些低价值的事件流数据转化为高价值的聚合数据;
~~~ Hadoop擅长的是存储和获取大规模数据,它并不提供任何性能上的保证它能多快获取到数据。
~~~ 虽然Hadoop是一个高可用的系统,但在高并发负载下性能会下降;
~~~ Hadoop是一个很好的后端、批量处理和数据仓库系统。
~~~ 在一个需要高并发并且保证查询性能和数据可用性的并需要提供产品级别的保证的需求,
~~~ Hadoop并不能满足。
~~~ Druid 是 Metamarkets 公司(一家为在线媒体或广告公司提供数据分析服务的公司)
~~~ 推出的一个分布式内存实时分析系统,
~~~ 用于解决如何在大规模数据集下进行快速的、交互式的查询和分析。
~~~ Druid 是一个开源的数据分析引擎工具,为实时和历史数据的次秒级(多于一秒)查询设计。
~~~ 主要应用于对数据的OLAP查询,
~~~ Druid 提供低延迟(实时)的数据摄取、灵活的数据探索、快速的数据聚合。
~~~ 现有的 Druid 部署已支持扩展到数万亿时间和 PB 级数据。
三、Druid与其他OLAP技术对比
### --- Druid与其他OLAP技术对比
~~~ 与其他OLAP技术对比
Druid | Kylin | ES | SparkSQL | |
数据规模 | 超大 | 超大 | 中等 | 超大 |
查询效率 | 高 | 高 | 中等 | 低 |
并发度 | 高 | 高 | 高 | 低 |
灵活性 | 中 | 低 | 高 | 高 |
SQL支持 | 中 | 高 | 中 | 高 |
### --- Druid与其他OLAP技术对比说明
~~~ # SparkSQL / Impala / ClickHouse
~~~ 支持海量数据,灵活性强,但对响应时间是没有保证的。
~~~ 当数据量和计算复杂度增加后,响应时间会变慢,从秒级到分钟级,甚至小时级都有可能。
~~~ 搜索引擎架构的系统(Elasticsearch等),在入库时将数据转换为倒排索引。
~~~ 牺牲了灵活性换取很好的性能,在搜索类查询上能做到亚秒级响应,
~~~ 但是对于扫描聚合为主的查询,随着处理数据量的增加,响应时间也会退化到分钟级。
~~~ # Druid / Kylin
~~~ 则在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,
~~~ 以实现对超大数据集的秒级响应。
~~~ Kylin 利用 Hadoop/HBase 做计算和存储,
~~~ 使用 SQL 查询,提供 JDBC/ODBC 驱动与常见 BI 工具集成
~~~ Druid 有自己独立的分布式集群,能够实时摄入数据,
~~~ 有自己的查询接口(与BI兼容性较弱),通常多用于实时要求高的场景
~~~ 目前没有一个OLAP分析引擎能在数据量、灵活程度、性能(吞吐&并发)做到完美,
~~~ 需要基于自己的业务场景进行取舍和选型。
四、技术特点
### --- 技术特点
~~~ Apache Druid是一个开源的、分布式、实时OLAP分析工具。
~~~ Druid的核心设计结合了数据仓库、时间序列数据库和搜索系统的思想,
~~~ 适用于多种场景的高性能数据实时分析。
~~~ Druid将这三个系统中的每个系统的关键特征合并到其接收层、存储格式、查询层和核心体系结构中。
~~~ 时间序列数据库主要用于指处理,带时间标签(按照时间的顺序变化)的数据,
~~~ 带时间标签的数据也称为时间序列数据。
~~~ 时间序列数据主要由电力行业、化工行业等各类型实时监测、检查与分析设备所采集、产生的数据,

~~~ # 这些工业数据的典型特点是:
~~~ 产生频率快(每一个监测点一秒钟内可产生多条数据)、
~~~ 严重依赖于采集时间(每一条数据均要求对应唯一的时间)、
~~~ 测点多信息量大(常规的实时监测系统均有成千上万的监测点,
~~~ 监测点每秒钟都产生数据,每天产生几十GB的数据量)。
### --- 主要特点
~~~ # 列式存储
~~~ Druid 独立的存储和压缩每一列,只需要读取特定查询所需的内容,
~~~ 这可以支持快速扫描、排名和聚合流式和批量摄取(Ingestion)
~~~ 支持 Apache Kafka、HDFS、AWS S3、stream processors 等现成连接器
~~~ # 本地的搜索索引
~~~ Druid 为字符串创建倒排索引,以支持快速搜索和排序
~~~ # 灵活的 schema
~~~ Druid 可以处理变化的 schema 和嵌套数据
~~~ # 基于时间优化 partition
~~~ Druid 基于时间智能的对数据进行分区,基于时间的查询比传统数据库要快得多
~~~ # 支持 SQL
~~~ Druid 支持本机的 JSON 语言,还支持基于 HTTP 或者 JDBC 的 SQL
~~~ # 水平扩展性
~~~ Druid 已经用户生产环境中,每秒接收数百万个事件,保存多年的数据并提供次秒级查询
~~~ # 操作简单
~~~ 只需要增加或删除服务器即可扩展或缩小规模,Druid 会自动平衡,容错架构通过服务器的故障进行路由
五、集成
### --- 集成
~~~ Druid是开源大数据技术的补充,包括Apache Kafka,Apache Hadoop,Apache Flink等,
~~~ 通常位于存储或处理层与最终应用之间,充当查询层或数据分析服务。
六、Ingestion
### --- Ingestion(摄取)
~~~ Druid支持流式传输和批量摄取。Druid连接到数据源,
~~~ 包括:Kafka(用于流数据加载),或分布式文件系统,如HDFS(用于批处理数据加载)。
~~~ Druid在 “索引” 过程中将数据源中的原始数据转换为支持高效读取的优化格式(Segment,段)。

七、存储
### --- 存储
~~~ # Druid的数据存储采用列式存储格式。
~~~ 根据列的类型(字符串,数字等),应用不同的压缩和编码方法,根据列类型构建不同类型的索引。
~~~ Druid为字符串列构建倒排索引,以进行快速搜索和过滤。
~~~ Druid可按时间对数据进行智能分区,以实现面向时间的快速查询。
~~~ Druid在摄取数据时对数据进行预聚合,节省大量存储空间。

八、查询方式
### --- 查询方式
~~~ Druid支持JSON、SQL两种方式查询数据。

九、应用场景
### --- Druid擅长的部分
~~~ 对于大部分查询场景可以亚秒级响应
~~~ 事件流实时写入与批量数据导入兼备
~~~ 数据写入前预聚合节省存储空间,提升查询效率
~~~ 水平扩容能力强
~~~ 社区活跃
### --- 是否需要使用Druid
~~~ 处理时间序列事件
~~~ 快速的聚合以及探索式分析
~~~ 近实时分析亚秒级响应
~~~ 存储大量(TB级、PB级)可以预先定义若干维度的事件
~~~ 无单点问题的数据存储
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv024-druid
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」