Apache Druid是一个分布式内存实时分析系统,用于解决如何在大规模数据集下快速的、交互式的查询和分析问题。

基本特点

Apache Druid具有如下特点:
  • 支持亚秒级的交互式查询。例如,多维过滤、Ad-hoc的属性分组和快速聚合数据。
  • 支持实时的数据消费。
  • 支持多租户同时在线查询。
  • 支持PB级数据、千亿级事件快速处理,支持每秒数千查询并发。
  • 支持高可用,并且滚动升级。

应用场景

实时数据分析是Apache Druid最典型的使用场景。该场景涵盖的面很广,例如:
  • 实时指标监控
  • 推荐模型
  • 广告平台
  • 搜索模型

Apache Druid架构

Apache Druid拥有优秀的架构设计,多个组件协同工作,共同完成数据从摄取到索引、存储和查询等一系列流程。

Druid工作层(数据索引以及查询)包含以下组件:
  • Realtime组件负责数据的实时摄入。
  • Broker组件负责查询任务的分发以及查询结果的汇总,并将结果返回给用户。
  • Historical组件负责索引后的历史数据的存储,数据存储在deep storage。Deep storage可以是本地,也可以是HDFS等分布式文件系统。
  • Indexing service包含以下两个组件:
    • Overlord组件负责索引任务的管理、分发。
    • MiddleManager负责索引任务的具体执行。
Druid segments(Druid索引文件)管理层涉及以下组件:
  • Zookeeper:负责存储集群的状态以及作为服务发现组件。例如集群的拓扑信息、overlord leader的选举、indexing task的管理等。
  • Coordinator:负责segments的管理。例如segments下载、删除以及如何在historical之间做均衡等。
  • Metadata storage:负责存储segments的元信息,以及管理集群各种各样的持久化或临时性数据。例如配置信息、审计信息等。

E-MapReduce增强型Druid

E-MapReduce Druid基于Apache Druid做了大量的改进,包括与E-MapReduce和阿里云周边生态的集成、方便的监控与运维支持、易用的产品接口等,实现即买即用和7*24免运维。

E-MapReduce Druid目前支持的特性如下所示:
  • 支持以OSS作为deep storage。
  • 支持将OSS文件作为批量索引的数据来源。
  • 支持从日志服务(Log Service)流式地索引数据(类似于Kafka),并提供高可靠保证和exactly-once语义。
  • 支持将元数据存储到RDS。
  • 集成了Superset工具。
  • 方便地扩容和缩容(缩容针对Task节点)。
  • 丰富的监控指标和告警规则。
  • 故障迁移。
  • 具有高安全性。
  • 支持HA。