首頁  >  文章  >  運維  >  一文詳解apache druid

一文詳解apache druid

王林
王林轉載
2021-02-18 10:20:405439瀏覽

一文詳解apache druid

前言:

什麼是apache druid?

它是一個集時間序列資料庫、資料倉儲和全文檢索系統特點於一體的分析性資料平台。

本文會為大家簡單了解一下druid的特性、使用場景、技術特點和架構等,這將有助於我們選擇資料儲存方案,深入了解druid儲存和時間序列儲存等。

概覽

一個現代化的雲端原生,流原生,分析型資料庫

Druid是為快速查詢和快速攝取資料的工作流程而設計的。 Druid強在有強大的UI,運行時可操作查詢,和高效能並發處理。 Druid可以被視為一個滿足多樣化使用者場景的資料倉儲的開源替代品。

輕鬆與現有的資料管道整合

Druid可以從訊息匯流排串流獲取資料(如Kafka,Amazon Kinesis),或從資料湖批次載入檔案(如HDFS,Amazon S3和其他同類資料來源)。

比傳統方案快100倍的效能

Druid對資料攝取和資料查詢的基準效能測試大大超過了傳統解決方案。

Druid的架構融合了資料倉庫,時間序列資料庫和檢索系統最好的特性。

解鎖新的工作流程

Druid為Clickstream,APM(應用效能管理系統),supply chain(供應鏈),網路遙測,數位行銷和其他事件驅動形式的場景解鎖了新的查詢方式和工作流程。 Druid專為即時和歷史資料的快速臨時查詢而建置。

部署在AWS/GCP/Azure,混合雲,k8s和租用伺服器上

Druid可以部署在任何*NIX環境中。無論是內部環境還是雲端環境。部署Druid是非常easy的:透過新增或刪減服務來擴容縮容。

使用場景

Apache Druid適用於對即時資料擷取,高效能查詢和高可用要求較高的場景。因此,Druid通常被作為一個具有豐富GUI的分析系統,或作為一個需要快速聚合的高並發API的後台。 Druid更適合面向事件資料。

比較常見的使用場景:

點擊流分析(web和mobile分析)

風控分析

網路遙測分析(網路效能監控)

伺服器指標儲存

供應鏈分析(製造業指標)

應用效能指標

商業智慧/即時線上分析系統OLAP

以下將詳細分析這些使用情境:

使用者活動和行為

Druid經常用在點擊流,存取流,和活動流資料上。具體場景包括:衡量用戶參與度,為產品發布追蹤A/B測試數據,並了解用戶使用方式。 Druid可以做到精確和近似計算使用者指標,例如不重複計數指標。這意味著,如日活用戶指標可以在一秒鐘計算出近似值(平均精度98%),以查看總體趨勢,或精確計算以展示給利害關係人。 Druid可以用來做“漏斗分析”,去測量有多少用戶做了某種操作,而沒有做另一個操作。這對產品追蹤用戶註冊十分有用。

網路流

Druid常用來收集和分析網路流資料。 Druid被用來管理以任意屬性切分組合的流資料。 Druid能夠提取大量網路串流記錄,並且能夠在查詢時快速對數十個屬性組合和排序,這有助於網路流程分析。這些屬性包括一些核心屬性,如IP和連接埠號,也包括一些額外添加的強化屬性,如地理位置,服務,應用,設備和ASN。 Druid能夠處理非固定模式,這意味著你可以添加任何你想要的屬性。

數位行銷

Druid常常用來儲存和查詢線上廣告資料。這些數據通常來自廣告服務商,它對衡量和理解廣告活動效果,點擊穿透率,轉換率(消耗率)等指標至關重要。

Druid最初就是被設計成一個以廣告資料為導向的強大的使用者導向的分析型應用程式。在儲存廣告資料方面,Druid已經有大量生產實踐,全世界有大量用戶在上千台伺服器上儲存了PB級資料。

應用程式效能管理

Druid常用於追蹤應用程式產生的可運作資料。和用戶活動使用場景類似,這些數據可以是關於用戶怎樣和應用程式互動的,它可以是應用程式本身上報的指標數據。 Druid可用於下鑽發現應用程式不同組件的性能如何,定位瓶頸,和發現問題。

不像許多傳統解決方案,Druid具有更小儲存容量,更小複雜度,更大資料吞吐的特性。它可以快速分析數以千計屬性的應用事件,併計算複雜的加載,性能,利用率指標。例如,基於百分之95查詢延遲的API終端。我們可以以任何臨時屬性組織和切分數據,如以天為時間切分數據,如以使用者畫像統計,如按資料中心位置統計。

物聯網與裝置指標

Driud可以作為時間序列資料庫解決方案,來儲存處理伺服器和裝置的指標資料。收集機器產生的即時數據,執行快速臨時的分析,去估量性能,優化硬體資源,和定位問題。

和許多傳統時間序列資料庫不同,Druid本質上是一個分析引擎。 Druid融合了時間序列資料庫,列式分析資料庫,和檢索系統的概念。它在單一系統中支援了基於時間分區,列式存儲,和搜尋索引。這意味著基於時間的查詢,數位聚合,和檢索過濾查詢都會特別快。

你可以在你的指標中包含百萬唯一維度值,並隨意按任何維度組合group和filter(Druid 中的 dimension維度類似於時間序列資料庫中的tag)。你可以基於tag group和rank,併計算大量複雜的指標。而且你在tag上檢索和過濾會比傳統時間序列資料庫更快。

OLAP和商業智慧

Druid常用於商業智慧場景。公司部署Druid去加速查詢和增強應用程式。和基於Hadoop的SQL引擎(如Presto或Hive)不同,Druid為高並發和亞秒級查詢而設計,透過UI強化互動式資料查詢。這使得Druid更適合做真實的視覺化互動分析。

技術

Apache Druid 是一個開源的分散式資料儲存引擎。 Druid的核心設計融合了OLAP/analytic databases,timeseries database,和search systems的概念,以創造一個適用廣泛用例的統一系統。 Druid將這三種系統的主要特性融合進Druid的ingestion layer(資料攝取層),storage format(儲存格式化層),querying layer(查詢層),和core architecture(核心架構)。

一文詳解apache druid

Druid的主要功能包括:

列式儲存

Druid單獨儲存並壓縮每一列資料。且查詢時只查詢特定需要查詢的數據,支援快速scan,ranking和groupBy。

原生檢索索引

Druid為string值建立反向索引以達到資料的快速搜尋和篩選。

串流與批次資料攝取

開箱即用的Apache kafka,HDFS,AWS S3連接器connectors,串流處理器。

靈活的資料模式

Druid優雅地適應不斷變化的資料模式和巢狀資料類型。

基於時間的最佳化分區

Druid基於時間對資料進行智慧分區。因此,Druid基於時間的查詢將明顯快於傳統資料庫。

支援SQL語句

除了原生的基於JSON的查詢外,Druid還支援基於HTTP和JDBC的SQL。

水平擴展能力

百萬/秒的資料攝取速率,海量資料存儲,亞秒級查詢。

易於運維

可以透過新增或移除Server來擴充和縮容。 Druid支援自動重平衡,失效轉移。

資料攝取

Druid同時支援流式和大量資料攝取。 Druid通常透過像Kafka這樣的訊息匯流排(載入串流資料)或透過像HDFS這樣的分散式檔案系統(載入批次資料)來連接原始資料來源。

Druid透過Indexing處理將原始資料以segment的方式儲存在資料節點,segment是一種查詢最佳化的資料結構。

一文詳解apache druid

資料儲存

就像大多數分析型資料庫一樣,Druid採用列式儲存。根據不同列的資料類型(string,number等),Druid對其使用不同的壓縮和編碼方式。 Druid也會針對不同的欄位類型建立不同類型的索引。

類似於檢索系統,Druid為string列建立反向索引,以達到更快速的搜尋和篩選。類似於時間序列資料庫,Druid基於時間對資料進行智慧分區,以達到更快的基於時間的查詢。

不像大多數傳統系統,Druid可以在資料攝取前對資料進行預先聚合。這種預聚合操作稱為rollup,這樣就可以顯著的節省儲存成本。

一文詳解apache druid

查詢

Druid支援JSON-over-HTTP和SQL兩種查詢方式。除了標準的SQL操作外,Druid還支援大量的唯一性操作,利用Druid提供的演算法套件可以快速的進行計數,排名和分位數計算。

一文詳解apache druid

架構

Druid是微服務架構,可以理解為一個拆解成多個服務的資料庫。 Druid的每一個核心服務(ingestion(攝入服務),querying(查詢服務),和coordination(協調服務))都可以單獨部署或聯合部署在商業硬體上。

Druid清晰的命名每一個服務,以確保維運人員可以根據使用情況和負載情況很好地調整對應服務的參數。例如,當負載需要時,維運人員可以給資料攝取服務更多的資源而減少資料查詢服務的資源。

Druid可以獨立失敗而不影響其他服務的運作。

一文詳解apache druid

維運

Drui被設計成一個健壯的系統,它需要7*24小時運作。 Druid擁有以下特性,以確保長期運行,並保證資料不會遺失。

資料副本

Druid根據配置的副本數建立多個資料副本,所以單機失效不會影響Druid的查詢。

獨立服務

Druid清晰的命名每一個主服務,每一個服務都可以根據使用情況做相應的調整。服務可以獨立失敗而不影響其他服務的正常運作。例如,如果資料攝取服務失效了,將沒有新的資料載入系統,但是已經存在的資料仍然可以被查詢。

自動資料備份

Druid自動備份所有已經indexed的資料到一個檔案系統,它可以是分散式檔案系統,例如HDFS。你可以丟失所有Druid集群的數據,並快速從備份數據中重新加載。

滾動更新

透過滾動更新,你可以在不停機的情況下更新Druid集群,這樣對用戶就是無感知的。所有Druid版本都是向後相容。

想了解時間序列資料庫與對比,可移步另一篇文章:

時間序列資料庫(TSDB)初識與選擇

#相關推薦:apache伺服器

#

以上是一文詳解apache druid的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.im。如有侵權,請聯絡admin@php.cn刪除