天天看點

Druid:一個用于大資料實時處理的開源分布式系統

快速的互動式查詢——Druid的低延遲資料攝取架構允許事件在它們建立後毫秒内可被查詢到;

高可用性——Druid的資料在系統更新時依然可用,規模的擴大和縮小都不會造成資料丢失;

可擴充——Druid已實作每天能夠處理數十億事件和TB級資料。

需要互動式聚合和快速探究大量資料時;

需要實時查詢分析時;

具有大量資料時,如每天數億事件的新增、每天數10T資料的增加;

對資料尤其是大資料進行實時分析時;

需要一個高可用、高容錯、高性能資料庫時。

查詢操作中資料流和各個節點的關系如下圖所示:

Druid:一個用于大資料實時處理的開源分布式系統
Druid:一個用于大資料實時處理的開源分布式系統

一、Druid簡介

二、Druid架構組成及相關依賴

三、Druid叢集配置

四、Druid叢集啟動

五、Druid查詢

六、後記

Druid是一個為大型冷資料集上實時探索查詢而設計的開源資料分析和存儲系統,提供極具成本效益并且永遠線上的實時資料攝取和任意資料處理。

主要特性:

為分析而設計——Druid是為OLAP工作流的探索性分析而建構。它支援各種filter、aggregator和查詢類型,并為添加新功能提供了一個架構。使用者已經利用Druid的基礎設施開發了進階K查詢和直方圖功能。

互動式查詢——Druid的低延遲資料攝取架構允許事件在它們建立後毫秒内查詢,因為Druid的查詢延時通過隻讀取和掃描有必要的元素被優化。Aggregate和 filter沒有坐等結果。

高可用性——Druid是用來支援需要一直線上的SaaS的實作。你的資料在系統更新時依然可用、可查詢。規模的擴大和縮小不會造成資料丢失。

可伸縮——現有的Druid部署每天處理數十億事件和TB級資料。Druid被設計成PB級别。

就系統而言,Druid功能位于PowerDrill和Dremel之間。它實作幾乎所有Dremel提供的工具(Dremel處理任意嵌套資料結構,而Druid隻允許一個基于數組的嵌套級别)并且從PowerDrill吸收一些有趣的資料格式和壓縮方法。

Druid對于需要實時單一、海量資料流攝取産品非常适合。特别是如果你面向無停機操作時,如果你對查詢查詢的靈活性和原始資料通路要求,高于對速度和無停機操作,Druid可能不是正确的解決方案。在談到查詢速度時候,很有必要澄清“快速”的意思是:Druid是完全有可能在6TB的資料集上實作秒級查詢。

Druid:一個用于大資料實時處理的開源分布式系統

Overlord會形成一個加載批處理和實時資料到系統中的叢集,同時會對存儲在系統中的資料變更(也稱為索引服務)做出響應。另外,還包含了Middle Manager和Peons,一個Peon負責執行單個task,而Middle Manager負責管理這些Peons。

監控Historical節點組,以確定資料可用、可複制,并且在一般的“最佳”配置。它們通過從MySQL讀取資料段的中繼資料資訊,來決定哪些資料段應該在叢集中被加載,使用Zookeeper來确定哪個Historical節點存在,并且建立Zookeeper條目告訴Historical節點加載和删除新資料段。

是對“historical”資料(非實時)進行處理存儲和查詢的地方。Historical節點響應從Broker節點發來的查詢,并将結果傳回給broker節點。它們在Zookeeper的管理下提供服務,并使用Zookeeper監視信号加載或删除新資料段。

接收來自外部用戶端的查詢,并将這些查詢轉發到Realtime和Historical節點。當Broker節點收到結果,它們将合并這些結果并将它們傳回給調用者。由于了解拓撲,Broker節點使用Zookeeper來确定哪些Realtime和Historical節點的存在。

實時攝取資料,它們負責監聽輸入資料流并讓其在内部的Druid系統立即擷取,Realtime節點同樣隻響應broker節點的查詢請求,傳回查詢結果到broker節點。舊資料會被從Realtime節點轉存至Historical節點。

為叢集服務發現和維持目前的資料拓撲而服務;

用來維持系統服務所需的資料段的中繼資料;

儲存“冷資料”,可以使用HDFS。

Druid:一個用于大資料實時處理的開源分布式系統

我這裡有兩台機器,node1有32G記憶體,上面部署了Histotical Node和Coordinator Node;node2有72G記憶體,上面部署了其他四個服務。

Druid:一個用于大資料實時處理的開源分布式系統

##建立MySQL資料庫

CREATE DATABASE `druid` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all on druid.* to druid@’%’ identified by ‘druid1234′ WITH GRANT OPTION;

flush privileges;

##配置檔案

cd $DRUID_HOME/config/_common

vi common.runtime.properties(所有節點)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<code>##使用Mysql存儲中繼資料</code>

<code>druid.extensions.coordinates=[</code><code>"io.druid.extensions:druid-examples"</code><code>,</code><code>"io.druid.extensions:druid-kafka-eight"</code><code>,</code><code>"io.druid.extensions:mysql-metadata-storage"</code><code>]</code>

<code>##zookeeper</code>

本文轉自茄子_2008部落格園部落格,原文連結:http://www.cnblogs.com/xd502djj/p/6408979.html,如需轉載請自行聯系原作者。

繼續閱讀