Apache Druid 概述
Apache Druid 是一个高性能的实时数据存储系统,最新版本 25.0 带来了多项改进和增强。其主要功能包括:用于基于 SQL 的数据摄入的多阶段查询(MSQ)任务引擎现已生产就绪;支持使用 Kubernetes 启动和管理任务,无需中间管理器;简化部署;以及为 Hadoop 3.x 用户提供了新的专用二进制文件。
设计理念与架构
为了在各种应用场景中实现实时分析并缩短洞察时间,Druid 的设计结合了数据仓库、时间序列数据库和搜索系统的概念。其微服务分布式架构专为云环境设计,包括以下服务类型:
- 协调服务(Coordinator Service):管理集群中的数据可用性。
- 主控服务(Overlord Service):控制数据摄入工作负载的分配。
- 代理服务(Broker Service):处理来自外部客户端的查询。
- 中间管理器服务(MiddleManager Services):负责数据摄入。
数据摄入与存储
在数据摄入阶段,Druid 从源系统读取数据并将其存储在称为段(segments)的数据文件中。每个段文件通常包含数百万行数据,按时间分区并以列式结构存储,以减少查询延迟,仅扫描查询所需的列。
Druid 支持流式和批处理摄入,可连接到原始数据源,如消息总线(如 Apache Kafka)或分布式文件系统(如 HDFS 或云存储如 Amazon S3 和 Azure Blob Storage),并通过“索引”过程将原始数据转换为更优化的读取格式(段)。Druid 支持摄入 JSON、CSV、Parquet、Avro 和其他自定义格式的非规范化数据。
查询与界面
用户可以通过 Druid SQL 查询数据,Druid 将 SQL 查询转换为本地查询语言。Druid 还提供了一个 Web 控制台,用于加载数据、管理数据源和任务,以及控制服务器状态和段信息,用户还可以在控制台中执行 SQL 和本地 Druid 查询。
应用场景
Apache Druid 在需要实时摄入、快速查询性能和高正常运行时间的场景中广泛应用。它通常作为高并发 API 的后端,用于快速聚合或为分析应用的 GUI 提供支持,尤其适合处理事件导向的数据。典型的应用领域包括:
- 点击流分析(Web 和移动分析)
- 风险/欺诈分析
- 网络遥测分析(网络性能监控)
- 应用性能指标
- 商业智能/OLAP
用户与社区
Druid 被许多大型公司使用,如 Airbnb、英国电信、思科、eBay、Expedia、Netflix 和 PayPal,并在 GitHub 上拥有超过 12k 的 star。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。