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。