實時統計分析系統 Apache Druid

2021-10-06 17:11:52 字數 2661 閱讀 6562

前言

druid.io(以下簡稱druid)是2023年底開源出來的, 主要解決的是對實時資料以及較近時間的歷史資料的多維查詢提供高併發(多使用者),低延時,高可靠性的問題。

正文druid是乙個為在大資料集之上做實時統計分析而設計的開源資料儲存。這個系統集合了乙個面向列儲存的層,乙個分布式、shared-nothing的架構,和乙個高階的索引結構,來達成在秒級以內對十億行級別的表進行任意的探索分析。網際網路技術的快速增長催生了各類大體量的資料,hadoop很大的貢獻在於幫助企業將他們那些低價值的事件流資料轉化為**值的聚合資料,這適用於各種應用。

但hadoop擅長的是儲存和獲取大規模資料,但是它並不提供任何效能上的保證它能多快獲取到資料。此外,雖然hadoop是乙個高可用的系統,但是在高併發負載下效能會下降。hadoop是乙個很好的後端、批量處理和資料倉儲系統。在乙個需要高併發並且保證查詢效能和資料可用性的並需要提供產品級別的保證的需求,hadoop並不能滿足,因此建立了druid,乙個開源的、分布式、列儲存、實時分析的資料儲存。在許多方面,druid和其他olap系統有很多相似之處,互動式查詢系統,記憶體資料庫(mmdb),眾所周知的分布式資料儲存。其中的分布式和查詢模型都參考了當前的一些搜尋引擎的基礎架構。

druid是乙個開源的,分布式的,列儲存的,適用於實時資料分析的系統,文件詳細,易於上手,druid的一些特性總結如下:

2、druid能接受的資料的格式相對簡單,比如不能處理巢狀結構的資料

負責響應外部的查詢請求,通過查詢zookeeper將請求劃分成segments分別**給historical和real-time nodes,最終合併並返回查詢結果給外部;

2、historial nodes

負責』historical』 segments的儲存和查詢。其會從deep storage中load segments,並響應broder nodes的請求。historical nodes通常會在本機同步deep storage上的部分segments,所以即使deep storage不可訪問了,historical nodes還是能serve其同步的segments的查詢;

3、real-time nodes

用於儲存和查詢熱資料,會定期地將資料build成segments移到historical nodes。一般會使用外部依賴kafka來提高realtime data ingestion的可用性。如果不需要實時ingest資料到cluter中,可以捨棄real-time nodes,只定時地batch ingestion資料到deep storage;

4、coordinator nodes

可以認為是druid中的master,其通過zookeeper管理historical和real-time nodes,且通過mysql中的metadata管理segments

5、indexing services

用於資料匯入,batch data和streaming data都可以通過給indexing services發請求來匯入資料。

druid中的資料儲存在被稱為datasource的檔案中,類似關係型資料庫中的table

每個datasource按照時間劃分。每個時間範圍稱為乙個chunk(一般都是以天分割槽,則乙個chunk為一天)!!! //也可以按其他屬性劃分

在chunk中資料被分為乙個或多個segment,每個segment都是乙個單獨的檔案,通常包含幾百萬行資料

:這些segment是按照時間組織成的chunk,所以在按照時間查詢資料時,效率非常高。

durid資料分割槽

任何分布式儲存/計算系統,都需要對資料進行合理的分割槽,從而實現儲存和計算的均衡,以及資料並行化。

而druid本身處理的是事件資料,每條資料都會帶有乙個時間戳,所以很自然的就可以使用時間進行分割槽。

實時節點(中間管理者)會週期性的將同一時間段生成的資料合併成乙個segment資料檔案,並上傳到deepstorage中。

segment資料檔案的相關元資料資訊儲存到metastore中(如mysql,derby等)。

節點定時(預設1分鐘)從metasotre中獲取到segment資料檔案的相關元資訊後,將按配置的規則分配到符合條件的歷史節點中。

協調節點會通知乙個歷史節點去讀

歷史節點收到協調節點的通知後,會從deepstorage中拉取該segment資料檔案到本地磁碟,並通過zookeeper向集群宣告可以提供查詢了。

實時節點會丟棄該segment資料檔案,並通過zookeeper向集群宣告不在提供該sgment的查詢服務。(其實第四步已經可以提供查詢服務了)

而對於全域性資料來說,查詢節點(broker node)會同時從實時節點與歷史節點分別查詢,對結果整合後返回使用者。

成績統計分析系統規劃

學科表 學科id,名稱,序號,總分,優秀線,及格線,低分線,是否綜合學科,子學科列表 學生表 學生id,學校,年級,班級,學號,姓名 考試表 考試id,學年,學期,考試名稱 考生表 考生id,考試id,學校,年級,班級,學生id,姓名 考試學科 考試學科id,考試id,學科id,序號,總分,優秀線,...

統計分析的體會

客戶給了一張基本的資料表,然後讓我做大量的計算,並且動態 靜態的做統計分析報表,經過了長達兩個月的苦戰,終於作完了。體會如下 1 一張存放中間統計結果的表是必要的,如果能夠將客戶的統計分析需要經過計算才能顯示的字段囊括在內是最好不過了,畢竟在查詢的過程中作計算是一件很討厭的事,雖然有資料冗餘,但是簡...

資料的統計分析

資料預處理之後,我們要做一些統計分析,來觀察我們的資料,這其中包括 描述性分析 統計推斷。描述性分析 主要是統計指標 圖表。1 集中趨勢分析 除了分位數,我們還可以結合 中位數 眾數 平均數三者的關係。具體地 眾數在中位數左側,平均數在中位數右側,則此時資料呈正偏態分布,又叫右偏,存在極大異常值。是...