【大數據專欄】大數據框架-Apache Druid Overview

目錄

Architecture


Advantages and disadvantages

從架構以及設計可以得出結論,Durid不支持ACID事務,基于時間戳列和維度列去查詢,所以適合基于時間做分組和學列的查詢操作。

Advantages優勢:

  1. 實時數據攝取與查詢
    支持秒級數據攝取和近實時查詢,適合對數據時效性要求高的場景。

  2. 高性能查詢
    采用列式存儲、索引機制(如 bitmap、時間索引等)和多級緩存,查詢速度非常快,尤其適合聚合類查詢。

  3. 水平擴展性強
    架構支持分布式部署,節點可按需擴展,適合處理 PB 級數據。

  4. 靈活的數據分片與分區策略
    支持按時間、維度等進行分片,有助于提高查詢效率。

  5. 內置 Rollup 和預聚合機制
    可以在攝取階段進行數據壓縮和預聚合,減少存儲和加快查詢。

  6. 支持多種數據源
    如 Kafka、HDFS、S3、MySQL、PostgreSQL 等,方便集成。

InAdvantages劣勢:

  1. 不適合復雜事務處理
    Druid 是為分析而設計,不支持 ACID 事務,不適合 OLTP(在線事務處理)場景。

  2. 數據更新困難不支持實時更新:雖然支持流式插入,但不支持實時更新或刪除,適合追加型數據而非頻繁變更的數據。

  3. 擴展和運維復雜
    架構組件較多(如 MiddleManager、Historical、Broker 等),部署和運維復雜,需要手動調優,且依賴本地 SSD,存儲成本較高。

  4. 存儲成本可能較高
    盡管支持壓縮,但在高并發和高可用配置下,資源消耗仍然較大。

  5. 對 JOIN 支持有限
    Druid 原生不支持復雜的 JOIN 操作,適合以 denormalized(扁平化)數據為主。

  6. 查詢引擎性能瓶頸?基于 Java,缺乏 SIMD 優化,相比 ClickHouse、StarRocks 等新一代 OLAP 引擎性能略遜。

scenario

適合的場景

  • 實時用戶行為分析:如點擊流、A/B 測試、用戶活躍度分析。
  • 數字廣告分析:廣告曝光、點擊率、轉化率等實時指標。
  • 網絡流量監控:網絡流日志分析,檢測異常流量。
  • 應用性能監控:API 延遲、系統指標實時監控。
  • IoT 數據分析:設備指標、傳感器數據的實時聚合和可視化。
  • 交互式 BI 應用:需要高并發、低延遲的用戶自助分析場景。
    ?

不適合的場景

  • 需要復雜事務或 ACID 保證的場景:如金融核心系統。
  • 頻繁更新或刪除數據的場景:Druid 更適合追加型數據。
  • 需要復雜多表 JOIN 的分析:如高度關系型的數據模型。
  • 低實時性要求的批處理分析:如傳統離線數倉任務,Hive/Spark 更合適。
  • 對成本敏感且數據量極大:Druid 對 SSD 和集群資源要求高,運維成本較高。

Architecture

Druid 具有分布式架構,旨在云友好且易于作。您可以獨立配置和擴展服務,以獲得集群作的最大靈活性。此設計包括增強的容錯能力:一個組件的中斷不會立即影響其他組件。

下圖顯示了構成 Druid 架構的服務、它們在服務器之間的典型排列,以及查詢和數據如何流經此架構。

Durid Service

Druid has several types of services:

  • Coordinator?管理數據在集群中的可用性以及部分均勻.
  • Overlord?控制分配數據ingestion的workloads.
  • Broker?處理來自外部客戶端的查詢.
  • Router?路由請求致?Brokers, Coordinators, and Overlords.
  • Historical?存儲可查詢的數據.
  • Middle Manager?and?Peon?ingest data.
  • Indexer?作為 Middle Manager + Peon task 執行系統的可選項.

    可以在service中看到這些服務。

Durid Server

Master?Server?

A Master server manages data ingestion and availability. It is responsible for starting new ingestion jobs and coordinating availability of data on the?Data server.Master servers divide operations between Coordinator and Overlord services.

Query?Server

A Query server provides the endpoints that users and client applications interact with, routing queries to Data servers or other Query servers (and optionally proxied Master server requests).Query servers divide operations between Broker and Router services.

Data?Server

A Data server executes ingestion jobs and stores queryable data.
Data servers divide operations between Historical and Middle Manager services.

Index Service(optional)
?

索引服務是數據攝入創建和銷毀Segment的重要方式
Druid提供一組支持索引服務(Indexing Service)的組件,即Overlord和MiddleManager節點
索引服務采用的是主從架構,Overlord為主節點,MiddleManager是從節點
索引服務架構圖如下圖所示:

  • 索引服務由三部分組件組成:
    • Overlord組件
      • 分配任務給MiddleManager
    • MiddleManager組件
      • 用于管理Peon的
    • Peon(勞工)組件
      • 用于執行任務

Durid 數據存儲
?

Historical節點負責管理歷史Segment
Historical節點通過Zookeeper監聽指定的路徑來發現是否有新的Segment需要加載
Historical節點收到有新的Segment時候,就會檢測本地cache和磁盤,查看是否有該Segment信息。如果沒有Historical節點會從Zookeeper中拉取該Segment相關的信息,然后進行下載,Historical節點收到有新的Segment時候,就會檢測本地cache和磁盤,查看是否有該Segment信息。 如果沒有Historical節點會從Zookeeper中拉取該Segment相關的信息,然后進行下載。

  • Druid中的數據存儲在被稱為DataSource中,DataSource類似RDMS中的table
  • 每個DataSource按照時間劃分,每個時間范圍稱為一個chunk((比如按天分區,則一個chunk為一天))
  • 在chunk中數據由被分為一個或多個segment
  • segment是數據實際存儲結構,Datasource、Chunk只是一個邏輯概念
  • 每個segment都是一個單獨的文件,通常包含幾百萬行數據
  • segment是按照時間組織成的chunk,所以在按照時間查詢數據時,效率非常高

Data Partition

Druid處理的是事件數據,每條數據都會帶有一個時間戳,可以使用時間進行分區
上圖指定了分區粒度為為天,那么每天的數據都會被單獨存儲和查詢

Segment
  • Segment是數據存儲、復制、均衡和計算的基本單元
  • Segment具備不可變性,一個Segment一旦創建完成后(MiddleManager節點發布后)就無法被修改
  • 只能通過生成一個新的Segment來代替舊版本的Segment

Segment內部存儲結構

時間戳列和指標列
Druid采用LZ4壓縮每列的整數或浮點數
收到查詢請求后,會拉出所需的行數據(對于不需要的列不會拉出來),并且對其進行解壓縮
維度列
維度列需要支持filter和group by
Druid使用了字典編碼(Dictionary Encoding)和位圖索引(Bitmap Index)來存儲每個維度列
每個維度列需要三個數據結構
需要一個字典數據結構,將維度值映射成一個整數ID
使用上面的字典編碼,將該列所有維度值放在一個列表中
對于列中不同的值,使用bitmap數據結構標識哪些行包含這些值。
Druid針對維度列之所以使用這三個數據結構,是因為:
使用字典將字符串映射成整數ID,可以緊湊的表示維度數據
使用Bitmap位圖索引可以執行快速過濾操作
找到符合條件的行號,以減少讀取的數據量
Bitmap可以快速執行AND和OR操作
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96115.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96115.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96115.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云平臺面試內容(一)

1. 云計算的優點、服務模型區別及云部署模式 云計算優點: 云計算具有顯著的優勢,包括無需自建機房和硬件投入,資源即開即用并支持彈性伸縮,按需付費使成本透明可控。企業可以在數分鐘內完成全球范圍的部署,縮短上線周期。同時云平臺提供高可用性和安全性,多副本容災保證數…

嵌入式 - 硬件:51單片機(2)

本節重點:1. GPIO輸入模式、輸出模式2. 按鍵工作原理(GPIO輸入)3. 中斷概念4. 中斷源概念、中斷源個數、哪幾個中斷源5. 外部中斷、定時器中斷概念6. 中斷處理流程:7. 51單片機中定時器的個數?類型8. 16位定時器和8位…

C語言中奇技淫巧07-使用GCC棧保護選項檢測程序棧溢出

-fstack-protector 是 GCC 和 Clang 編譯器提供的一種棧保護(Stack Smashing Protection, SSP) 機制,用于檢測和防御常見的緩沖區溢出攻擊(特別是棧溢出)。它通過在函數的棧幀中插入特殊的“金絲雀值”(can…

.NET 8.0 Web API JWT 身份驗證和基于角色的授權

在當今的數字環境中,保護 Web 應用程序的安全至關重要。隨著 .NET 8.0 的不斷發展,它提供了強大的工具來確保您的 API 既安全又高效。 示例代碼:https://download.csdn.net/download/hefeng_aspnet/91490262 如果您喜歡此文章&#xff0c…

ZYNQ SDK軟件在線調試

1、然后右鍵項目->debug as->launch on hardware2、從左到右分別是:運行程序到設置的斷點暫停運行終止斷開連接步進(進入函數內部)跳過(不進入函數內部)跳出函數3、雙擊添加斷點,然后點擊運行可以讓程…

四大金剛之計算機操作系統

1. 進程和線程的區別?創建線程的代價比創建進程小嗎?進程是資源分配和調度的基本單位;線程是 CPU 調度的基本單位。進程有獨立的地址空間,線程共享進程地址空間。創建/銷毀進程開銷大,線程開銷小。是的,因為…

redis--redis.conf的相關配置問題

關于redis.conf內的相關重要的配置介紹 1. bind 配置 僅僅設置bind,還需要搭配下面的rotected-mode 配置才能外部ip進行連接 功能:設置 Redis 監聽的 IP 地址,決定哪些設備可以連接到 Redis 服務器。 bind 127.0.0.1:只允許本機&a…

unsloth 筆記:從最近的檢查點繼續微調

檢查點(checkpointing)可以把微調進度保存下來,這樣可以中途暫停,隨后繼續訓練。首先需要在 Trainer 的參數里添加 save_strategy 和 save_steps。trainer SFTTrainer(....args TrainingArguments(....output_dir "output…

DevOps平臺選型指南:破解研發效率瓶頸,適配金融/政務/國產化場景的5大關鍵指標

在數字化轉型的浪潮中,軟件研發效能已成為企業的核心競爭力。然而,許多團隊在追求敏捷與高速交付的過程中,常常會遇到工具鏈割裂、流程冗長、環境混亂等效率瓶頸。選擇一個合適的、一體化的DevOps平臺,是破解這些瓶頸、實現研發運…

【面試向】元宇宙介紹

屬于基礎知識介紹,主要目的是對這一概念有技術層面的理解,有前瞻性的觀點,幫助大家在面試中給出得體的表述。 1. 什么是元宇宙? 元宇宙本質上是一個融合了數字與現實、由技術構建的 “沉浸式虛擬空間”,是一個 “超越…

FreeMarker快速入門指南

FreeMarker快速入門指南 FreeMarker是一個基于模板和數據模型生成文本輸出的Java庫。它廣泛應用于Web開發、代碼生成、郵件模板等場景。本文將帶你快速上手FreeMarker的核心概念和基本用法。 什么是FreeMarker FreeMarker是一個模板引擎,它將模板文件(.f…

Nginx主配置文件

一,Nginx基本介紹1,nginx概念Nginx 是一款輕量級、高性能的服務器軟件,核心能力是 “處理網絡請求”,被廣泛用于網站、App 的后端架構中。Nginx 就像一個 “高效的網絡交通指揮官”,核心價值是用最少的資源&#xff0c…

基于ResNet50的智能垃圾分類系統

基于ResNet50的智能垃圾分類系統:從理論到實踐的完整指南 源碼獲取https://mbd.pub/o/bread/YZWXlZ1yZg 引言:智能垃圾分類的時代背景與意義 隨著城市化進程的加速和人口數量的增長,垃圾處理問題日益成為全球性的環境挑戰。傳統的垃圾分類…

災難性遺忘:神經網絡持續學習的核心挑戰與解決方案

本文由「大千AI助手」原創發布,專注用真話講AI,回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我,一起撕掉過度包裝,學習真實的AI技術! 1. 災難性遺忘的定義與核心問題 災難性遺忘(Catastrophic…

OPENPPP2 —— IP標準校驗和算法深度剖析:從原理到SSE2優化實現

🔍 OPENPPP2 —— IP標準校驗和算法深度剖析:從原理到SSE2優化實現 引用: IP校驗和算法:從網絡協議到SIMD深度優化IP校驗和算法:從標量到SIMD的高級優化(SSE4.1) GDB online Debugger C17 Co…

4.4 機器學習 - 集成學習

集成學習通過 “組合多個基礎模型” 提升泛化能力,核心分為并行集成(Bagging)、串行集成(Boosting) 和多層集成(Stacking) 三大范式,分別對應 “降方差”“降偏差”“兼顧偏差與方差…

機器學習 - 使用 ID3 算法從原理到實際舉例理解決策樹

一、什么是決策樹1.基本概念決策樹是一種樹形結構,由結點(node) 和有向邊(directed edge) 組成。其中結點分為兩類:內部結點(internal node):表示一個屬性(特…

【期末復習】嵌入式——S5PV210開發板

本文為嵌入式課程期末復習,僅供參考,所用課本:嵌入式Linux操作系統(李建祥著)。第一章1.1 簡述嵌入式微處理器數據存儲格式的大,小端模式。大端模式是指數據的高字節保存在內存的低地址中,而數據…

word文檔結尾批量插入圖片 docx批量插入圖片 指定幾張

如果你有一些word文檔。比如工作總結。你想每一個文檔里面都插入幾張圖片。插入到每個文檔的結尾,那么你可以使用這個工具。首先準備好你的文檔。然后把它們拖進右邊的方框中。拖動的時候,拖動第一個,然后準備好你的圖片。把你的圖片全部拖動…

CodeBuddy國際版又更新了體驗感1

CodeBuddy國際版又更新了 更好的使用體驗更少的資源消耗合理的消耗剩余資源使用起來也是很不錯的,這次更新自動模式想不到的少,可以用于其他的例如翻譯與寫測試用例或者其他的說明文檔等或者是閱讀一下項目更好了解項目總的上來說 使用體驗響應速度還是不…