快速了解Druid 實時大資料分析軟體

2022-04-06 18:41:18 字數 3409 閱讀 5535

druid 單詞**於西方古羅馬的神話人物,中文常常翻譯成德魯伊。 

本問介紹的druid 是乙個分布式的支援實時分析的資料儲存系統(data store)。美國廣告技術公司metamarkets 於2011 年建立了druid 專案,並且於2012 年晚期開源了druid 專案。druid 設計之初的想法就是為分析而生,它在處理資料的規模、資料處理的實時性方面,比傳統的olap 系統有了顯著的效能改進,而且擁抱主流的開源生態,包括hadoop 等。多年以來,druid 一直是非常活躍的開源專案。 

druid 的官方**是 

另外,阿里巴巴也曾建立過乙個開源專案叫作druid(簡稱阿里druid),它是乙個資料庫連線池的專案。阿里druid 和本問討論的druid 沒有任何關係,它們解決完全不同的問題。

大資料一直是近年的熱點話題,隨著資料量的急速增長,資料處理的規模也從gb 級別增長到tb 級別,很多影象應用領域已經開始處理pb 級別的資料分析。大資料的核心目標是提公升業務的競爭力,找到一些可以採取行動的洞察(actionable insight),資料分析就是其中的核心技術,包括資料收集、處理、建模和分析,最後找到改進業務的方案。 

最近一兩年,隨著大資料分析需求的**性增長,很多公司都經歷過將以關係型商用資料庫為基礎的資料平台,轉移到一些開源生態的大資料平台,例如hadoop 或spark 平台,以可控的軟硬體成本處理更大的資料量。hadoop 設計之初就是為了批量處理大資料,但資料處理實時性經常是它的弱點。例如,很多時候乙個mapreduce 指令碼的執行,很難估計需要多長時間才能完成,無法滿足很多資料分析師所期望的秒級返回查詢結果的分析需求。 

為了解決資料實時性的問題,大部分公司都有乙個經歷,將資料分析變成更加實時的可互動方案。其中,涉及新軟體的引入、資料流的改進等。資料分析的幾種常見方法如下圖。 

整個資料分析的基礎架構通常分為以下幾類。 

(1)使用hadoop/spark 的mr 分析。 

(2)將hadoop/spark 的結果注入rdbms 中提供實時分析。 

(3)將結果注入到容量更大的nosql 中,例如hbase 等。 

(4)將資料來源進行流式處理,對接流式計算框架,如storm,結果落在rdbms/nosql 中。 

(5)將資料來源進行流式處理,對接分析資料庫,例如druid、vertica 等。

對於資料分析場景,大部分情況下,我們只關心一定粒度聚合的資料,而非每一行原始資料的細節情況。因此,資料聚合粒度可以是1 分鐘、5 分鐘、1 小時或1 天等。部分資料聚合(partial aggregate)給druid 爭取了很大的效能優化空間。 

資料記憶體化也是提高查詢速度的殺手鐗。記憶體和硬碟的訪問速度相差近百倍,但記憶體的大小是非常有限的,因此在記憶體使用方面要精細設計,比如druid 裡面使用了bitmap 和各種壓縮技術。 

另外,為了支援drill-down 某些維度,druid 維護了一些倒排索引。這種方式可以加快and 和or 等計算操作。

druid 查詢效能在很大程度上依賴於記憶體的優化使用。資料可以分布在多個節點的記憶體中,因此當資料增長的時候,可以通過簡單增加機器的方式進行擴容。為了保持平衡,druid按照時間範圍把聚合資料進行分割槽處理。對於高基數的維度,只按照時間切分有時候是不夠的(druid 的每個segment 不超過2000 萬行),故druid 還支援對segment 進一步分割槽。 

歷史segment 資料可以儲存在深度儲存系統中,儲存系統可以是本地磁碟、hdfs 或遠端的雲服務。如果某些節點出現故障,則可借助zookeeper 協調其他節點重新構造資料。 

druid 的查詢模組能夠感知和處理集群的狀態變化,查詢總是在有效的集群架構中進行。集群上的查詢可以進行靈活的水平擴充套件。druid 內建提供了一些容易並行化的聚合操作,例如count、mean、variance 和其他查詢統計。對於一些無法並行化的操作,例如median,druid暫時不提供支援。在支援直方圖(histogram)方面,druid 也是通過一些近似計算的方法進行支援,以保證druid 整體的查詢效能,這些近似計算方法還包括hyperloglog、datasketches的一些基數計算。

druid 提供了包含基於時間維度資料的儲存服務,並且任何一行資料都是歷史真實發生的事件,因此在設計之初就約定事件一但進入系統,就不能再改變。 

對於歷史資料druid 以segment 資料檔案的方式組織,並且將它們儲存到深度儲存系統中,例如檔案系統或亞馬遜的s3 等。當需要查詢這些資料的時候,druid 再從深度儲存系統中將它們裝載到記憶體供查詢使用。

druid 具有如下技術特點。 

• 資料吞吐量大。 

• 支援流式資料攝入和實時。 

• 查詢靈活且快。 

• 社群支援力度大。

很多公司選擇druid 作為分析平台,都是看中druid 的資料吞吐能力。每天處理幾十億到幾百億的事件,對於druid 來說是非常適合的場景,目前已被大量網際網路公司實踐。因此,很多公司選型druid 是為了解決資料**的問題。

很多資料分析軟體在吞吐量和流式能力上做了很多平衡,比如hadoop 更加青睞批量處理,而storm 則是乙個流式計算平台,真正在分析平台層面上直接對接各種流式資料來源的系統並不多。

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

druid 開源後,受到不少網際網路公司的青睞,包括雅虎、ebay、阿里巴巴等,其中雅虎的committer 有5 個,谷歌有1 個,阿里巴巴有1 個。最近,metamarkets 之前幾個druid 發明人也成立了一家叫作imply.io 的新公司,推動druid 生態的發展,致力於druid 的繁榮和應用。

從技術定位上看,druid 是乙個分布式的資料分析平台,在功能上也非常像傳統的olap系統,但是在實現方式上做了很多聚焦和取捨,為了支援更大的資料量、更靈活的分布式部署、更實時的資料攝入,druid 捨去了olap 查詢中比較複雜的操作,例如join 等。相比傳統資料庫,druid 是一種時序資料庫,按照一定的時間粒度對資料進行聚合,以加快分析查詢。 

在應用場景上,druid 從廣告資料分析平台起家,已經廣泛應用在各個行業和很多網際網路公司中,最新列表可以訪問

druid 的生態系統正在不斷擴大和成熟,druid 也正在解決越來越多的業務場景。希望《druid實時大資料分析原理與實踐》一書能幫助技術人員做出更好的技術選型,深度了解druid 的功能和原理,更好地解決大資料分析問題。 

各大電商**火熱預售中! 

本文選自《druid實時大資料分析原理與實踐》,點此鏈結可在博文視點官網檢視此書。

快速了解Druid 實時大資料分析軟體

druid 單詞 於西方古羅馬的神話人物,中文常常翻譯成德魯伊。本問介紹的druid 是乙個分布式的支援實時分析的資料儲存系統 data store 美國廣告技術公司metamarkets 於2011 年建立了druid 專案,並且於2012 年晚期開源了druid 專案。druid 設計之初的想法...

快速了解Druid 實時大資料分析軟體

引言 druid作為一款開源的實時大資料分析軟體,最近幾年快速風靡全球網際網路公司,特別是對於海量資料和實時性要求高的場景。如果你對druid還很陌生,那趕緊跟著本文快速了解一下吧。相關圖書 druid實時大資料分析原理與實踐 druid 單詞 於西方古羅馬的神話人物,中文常常翻譯成德魯伊。本問介紹...

Druid 乙個用於大資料實時處理的開源分布式系統

druid是乙個用於大資料實時查詢和分析的高容錯 高效能開源分布式系統,旨在快速處理大規模的資料,並能夠實現快速查詢和分析。尤其是當發生 部署 機器故障以及其他產品系統遇到宕機等情況時,druid仍能夠保持100 正常執行。建立druid的最初意圖主要是為了解決查詢延遲問題,當時試圖使用hadoop...