Apache Druid是一個分布式記憶體即時分析系統,用於解決如何在大規模資料集下快速的、互動查詢和分析問題。
基本特點
Apache Druid具有如下特點:
支援亞秒級的互動式查詢。例如,多維過濾、Ad-hoc的屬性分組和快速彙總資料。
支援即時的資料消費。
支援多租戶同時線上查詢。
支援PB級資料、千億級事件快速處理,支援每秒數千查詢並發。
支援高可用,並且滾動升級。
應用情境
即時資料分析是Apache Druid最典型的使用情境。該情境涵蓋的面很廣,例如:
即時指標監控
推薦模型
廣告平台
搜尋模型
Apache Druid架構
Apache Druid擁有優秀的架構設計,多個組件協同工作,共同完成資料從攝取到索引、儲存和查詢等一系列流程。
Druid工作層(資料索引以及查詢)包含以下組件:
Realtime組件負責資料的即時攝入。
Broker組件負責查詢任務的分發以及查詢結果的匯總,並將結果返回給使用者。
Historical組件負責索引後的歷史資料的儲存,資料存放區在deep storage。Deep storage可以是本地,也可以是HDFS等Distributed File System。
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(Log Service)流式地索引資料(類似於Kafka),並提供高可靠保證和exactly-once語義。
支援將中繼資料存放區到RDS。
整合了Superset工具。
方便地擴容和縮容(縮容針對Task節點)。
豐富的監控指標和警示規則。
故障遷移。
具有高安全性。
支援HA。