Druid(Druid.io)介紹

Druid(Druid.io)簡介

一、簡介

Druid 的目標是提供一個能夠在大數據集上做實時數據攝入與查詢的平臺,然而對於大多數系統而言,提供數據的快速攝入與提供快速查詢是難以同時實現的兩個指標。而Druid卻可以完美的對兩者進行結合,本文將對Druid如何實現這種結合做一個簡單的介紹。

Druid.io是一個開源的,分佈式的,列式存儲的,適用於實時數據分析的OLAP系統。它能夠快速聚合、靈活過濾、毫秒級查詢、和低延遲數據導入。2011年,MetaMarkets公司爲了解決廣告交易中海量實時數據的分析問題,在嘗試各種SQL和NoSQL方案後,決定自行設計並創建Druid並於2013年開源。Druid被設計成支持PB級別數據量每天處理數十億流式事件。Druid之所以保持高效有以下幾個原因:

數據進行了有效的預聚合或預計算。

數據結果的優化,應用了Bitmap的壓縮算法。

可擴展的高可用架構,靈活的支持部署和擴展。

社區的力量,Druid開發和用戶社區保持活躍,不斷推動Druid完善和改進。

二、技術特

1 數據吞吐量大

  很多公司選擇Druid 作爲分析平臺,都是看中Druid 的數據吞吐能力。每天處理幾十億到幾百億的事件,對於Druid 來說是非常適合的場景,目前已被大量互聯網公司實踐。因此,很多公司選型Druid 是爲了解決數據爆炸的問題。

2 支持流式數據攝入

  很多數據分析軟件在吞吐量和流式能力上做了很多平衡,比如Hadoop 更加青睞批量處理,而Storm 則是一個流式計算平臺,真正在分析平臺層面上直接對接各種流式數據源的系統並不多。

3 查詢靈活且快

  數據分析師的想法經常是天馬行空,希望從不同的角度去分析數據,爲了解決這個問題,OLAP 的Star Schema 實際上就定義了一個很好的空間,讓數據分析師自由探索數據。數據量小的時候,一切安好,但是數據量變大後,不能秒級返回結果的分析系統都是被詬病的對象。因此,Druid 支持在任何維度組合上進行查詢,訪問速度極快,成爲分析平臺最重要的兩個殺手鐗。

4 數據不支持修改

Druid在設計上做爲時序庫設計,用來記錄過去時間發生的事件,歷史發生的是不可改變。也根據該特點, Druid在數據存儲上可以做更多的操作。同時Druid在對數據刪除上支持也比較弱,不支持對單條數據的刪除,只能單個分片的數據(即單個segment)進行刪除。

三、核心特徵

  1. 列式存儲格式:Druid採用列式存儲格式,因此它只會加載特定查詢所需要的特定列的數據。這就極大的加速了那些只需要個別列數據的查詢。另外,每一列還根據數據類型做了專門的優化,以便更好的支持列的快速掃描和聚合。
  2. 可擴展的分佈式系統:Druid通常被部署到幾十到幾百臺的服務器上,每秒可以支持導入數百萬條記錄,存儲規模可達數十億條。具有在這種超大規模的數據場景下提供亞秒級查詢響應的能力。
  3. 強大的並行處理能力:Druid可以在整個集羣中同時並行查詢,以降低一個查詢所需要的時間。
  4. 支持實時或批量數據導入:Druid可以支持實時數據導入(導入的數據可以被立即查詢到),也可以支持批量導入。
  5. 自動負載均衡:druid支持不停機擴縮容。對於運維來說,可以通過簡單的增加或刪除集羣中的機器來輕鬆地擴展或者收縮集羣規模,集羣將會自動在後臺進行重新負載均衡。當某一臺服務器出現問題時,集羣將自動下線該服務器直到該服務器恢復正常或者被替換。Druid支持7*24小時在線服務,即使在軟件升級或者配置變更的情況下,也不需要下線。
  6. 高度容錯的架構以確保不丟失數據:一旦druid接收了數據,數據副本將會被安全的存儲在深度存儲中(deep storage,通常是雲存儲,HDFS,或者一個共享的文件系統)。即使所有的druid服務器都出現問題,druid也有能力從深度存儲中自動恢復數據。除了深度存儲外,druid還支持多副本,當個別服務器出現問題時,druid的多副本保證查詢服務不受影響。
  7. 建立索引以支持快速過濾:Druid使用CONCISE和Roaring位圖壓縮算法來創建索引,這些算法保證在跨列過濾時能夠進行非常快速的查詢。
  8. 近似算法:Druid實現了快速支持count-distinct, ranking, 直方圖以及百分比等近似算法。這些近似算法可以在有限內存的情況下進行快速的計算。對於那些精度比速度更重要的場景,druid也提供了精確的count-distinct和ranking算法。
  9. 在導入數據時自動彙總:Druid可以在導入數據的使用對數據進行自動彙總。這種彙總操作可以對你的數據進行部分預聚合,因此可以極大降低存儲成本和提升查詢時的速度。

四、應用場景

Druid是可以在大數據集上面進行交叉分析的高性能OLAP系統。Druid通常作爲強大的分析交互系統的後端存儲組件,或者爲高併發API提供快速的聚合的能力。druid的典型應用場景如下:

點擊流分析(Clickstream analytics)

網絡流分析(Network flow analytics)

存儲服務器指標(Server metrics storage)

應用性能指標(Application performance metrics)

數字市場分析(Digital marketing analytics)

商業智能和OLAP

從技術定位上看,Druid 是一個分佈式的數據分析平臺,在功能上也非常像傳統的OLAP系統,但是在實現方式上做了很多聚焦和取捨,爲了支持更大的數據量、更靈活的分佈式部署、更實時的數據攝入,Druid 捨去了OLAP 查詢中比較複雜的操作,例如JOIN 等。相比傳統數據庫,Druid 是一種時序數據庫,按照一定的時間粒度對數據進行聚合,以加快分析查詢。主要應用方面有廣告數據分析、用戶行爲分析、統計數據分析、監測數據分析

小米:Druid用於小米統計的部分後臺數據收集和分析;另外,在廣告平臺的數據分析方面,Druid也提供了實時的內部分析功能,支持細粒度的多維度查詢

新浪微博:新浪微博的廣告團隊使用Druid構建數據洞察系統的實時分析部分,每天處理數十億的消息

滴滴打車:Druid是滴滴實時大數據處理的核心模塊,用於滴滴的實時監控系統,支持數百個關鍵業務指標。

騰訊:騰訊的騰訊企點採用了Druid,用於分析大量的用戶行爲,幫助提升客戶的價值

參考:

      《Druid實時大數據分析》

       Druid官網:http://druid.io/

發佈了78 篇原創文章 · 獲贊 53 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章