天天看點

Druid的服務和程序程序類型:服務類型:托管的利弊

程序類型:

Druid有以下幾種程序類型:

  • Coordinator
  • Overlord
  • Broker
  • Historical
  • MiddleManager 和 Peons
  • Indexer (可選的)
  • Router (可選的)

服務類型:

Druid程序可以根據我們的喜好進行部署,但是為了部署更簡單,我們建議把它們分為三種服務類型:

  • Master
  • Query
  • Data
Druid的服務和程式程式類型:服務類型:托管的利弊

本節我們根據上面的架構圖來介紹Druid的程序和Master/Query/Data服務 

Master服務

Master服務管理資料的攝入和可用性:它負責開啟一個新的攝入JOB和協調即将講到的 Data服務的資料可用性

在master服務裡面,按功能劃分為兩個程序:Coordinator 和 Overlord.

Coordinator 程序

coordinator 程序監視 data 服務的historical程序。它們負責配置設定segment到特定的服務,并確定historical上面的segment的負載均衡。

Overlord 程序

overlord 程序監視 data服務的middlemanager程序,并控制druid的資料攝入。它們負責配置設定攝入任務給middlemanager并協調segment的釋出

Query server

query服務提供使用者和用戶端的互動,路由查詢請求到data服務或者其他的查詢服務(可選的代理master服務的請求)

在query服務裡面,按功能劃分為兩個程序:Broker 和 Router

Broker 程序

broker程序接收外部用戶端的查詢并把這些查詢轉發到data服務,當broker收到data服務查詢的結果以後,它們合并這些結果并将結果傳回給調用者。終端使用者都是通過連接配接到broker而不是直接查詢data服務的historical或者middlemanager程序。

Router 程序(可選的)

router程序是可選的程序,它在druid broker、overlord和coordinator前面提供統一的api網關,它們是可選的原因是我們可以簡單的直接連接配接到druid broker、overlord和coordinator。

router也運作Druid控制台,一個管理界面用來操作 DataSource,segment,任務,data程序(historical和middlemanager),coordinator的動态配置。使用者也可以在控制台上面運作SQL或者原生的druid查詢。

Data服務

data服務執行攝入JOB和存儲可查詢的資料

在Data服務裡面,按功能劃分為兩個程序:Historical 和 MiddleManager

historical程序

historical程序是用來處理存儲和查詢曆史資料(已經送出到系統一定時間的流資料)。historical程序從底層存儲加載segment并根據segment的資料相應查詢,它們不支援寫。

middle manager 程序

middlemanger程序用來處理新資料攝入到叢集。它們負責從外部讀取資料源并釋出新的druid segment。

Peon 程序

peon是一個由middlemanager拉起的任務執行引擎。每一個peon運作一個獨立的JVM并負責執行單一的任務。peon是和由拉起它的middlemanager運作在同一個機器上面。

Indexer process (可選)

indexer程序是middlemanager和peon程序的替代品。indexer是在單個JVM程序中使用單個線程運作任務,而不是為每個任務拉起單獨的JVM程序。

indexer被設計比middlemanager+peon更容易配置和部署,并且在任務之間能更好的分享資源。indexer是一個新特性,由于其記憶體管理系統仍在開發中,是以目前被指定為實驗性的。在将來将會成為druid的成熟特性。

同樣的,你隻需要部署middlemanager或者indexer,而不是兩個都部署。

托管的利弊

Druid程序可以像上面描述的基于master/data/query服務機制托管。這種機制通常會使大多數叢集更好地利用硬體資源。

但是,對于非常大規模的叢集,可以把Druid程序分開,使它們在單獨的伺服器上運作,以避免資源争用。

本節介紹與程序托管相關的指南和配置參數。

Coordinators 和 Overlords

coordinator程序的工作負載随着叢集中segment的數量增加而增加,overlord的工作負載也是基于叢集中segment的數量,隻是程度比coordinator少。

當叢集中segment數量非常多的時候,将coordinator程序和overlord進行分開以便為coordinator提供更多的資源來進行segment的負載均衡。

統一程序

coordinator和overlord程序可以以單個聯合程序進行運作,通過druid.coordinator.asOverlord.enabled配置項進行設定。詳情參考: Coordinator Configuration: Operation

historical和middlemanager

當攝入和查詢負載比較高的時候,把historical和middlemanager進行分開部署在不同的主機上,以避免CPU和記憶體的争用。

historical也需要空閑的記憶體來進行segment的記憶體映射,這也是另一一個把historical和middlemanager進行分開部署的理由。

繼續閱讀