Druid是Metamarkets公司(一家為線上媒體或廣告公司提供資料分析服務的公司)推出的一個分布式記憶體即時分析系統,用於解決如何在大規模資料集下進行快速的、互動查詢和分析。

基本特點

Druid具有以下特點:

  • 亞秒級OLAP查詢,包括多維過濾、ad-hoc的屬性分組、快速彙總資料等等。
  • 即時的資料消費,真正做到資料攝入即時、查詢結果即時。
  • 高效的多租戶能力,最高可以做到幾千使用者同時線上查詢。
  • 擴充性強,支援PB級資料、千億級事件快速處理,支援每秒數千查詢並發。
  • 極高的高可用保障,支援滾動升級。

應用情境

即時資料分析是Druid最典型的使用情境。該情境涵蓋的面很廣,例如:

  • 即時指標監控
  • 推薦模型
  • 廣告平台
  • 搜尋模型

這些情境的特點都是擁有大量的資料,且對資料查詢的時延要求非常高。在即時指標監控中,系統問題需要在出現的一刻被檢測到並被及時給出警示。在推薦模型中,使用者行為資料需要即時採集,並及時反饋到推薦系統中。使用者幾次點擊之後系統就能夠識別其搜尋意圖,並在之後的搜尋中推薦更合理的結果。

Druid架構

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 基於開源 Druid 做了大量的改進,包括與E-MapReduce、阿里雲周邊生態的整合、方便的監控與營運支援、易用的產品介面等等,真正做到了即買即用和7*24免營運。

EMR Druid 目前支援的特性如下所示:

  • 支援以OSS作為deep storage
  • 支援將OSS檔案作為批量索引的資料來源
  • 支援將中繼資料存放區到 RDS
  • 整合了Superset工具
  • 方便地擴容、縮容(縮容針對 task 節點)
  • 豐富的監控指標和警示規則
  • 壞節點遷移
  • 支援高安全
  • 支援HA