Win10環境借助DockerDesktop部署大數據時序數據庫Apache Druid

Win10環境借助DockerDesktop部署最新版大數據時序數據庫Apache Druid32.0.0

前言

大數據分析中,有一種常見的場景,那就是時序數據,簡言之,數據一旦產生絕對不會修改,隨著時間流逝,每個時間點都會有個新的狀態值。這種時序數據的量級往往異常夸張,例如傳感器的原始監控數據:

https://lizhiyong.blog.csdn.net/article/details/114898620

一個簡單的加速度傳感器一年的數據量就是31e!!!制造業傳感器數據如果不經底層PLC等下位機預處理,直接打到邊緣計算網關,即使mqtt也會有巨大的負載!!!

類似的,還有服務器的原始監控數據,例如常見的PrometheusZabbix,當集群很多時,監控項同樣很多,再算上虛擬化后的容器和虛擬機內都可能部署了監控,此時的數據量級就灰常可觀!!!一小時幾百億條數據都是常見的事情!!!

但是很多原始的監控數據如果全部存下來,存儲成本高的可怕,同時信息密度極低,更多時候我們可能只關注近期的全部熱數據來做在線的模型訓練,人工查看每秒鐘幾千條數據也是不切合實際的,事實上,做一個簡單的秒級/分鐘級統計就能滿足大多數的分析場景,超過1天的冷數據其實已經沒什么時效性。

對于此類場景,可以高吞吐、預聚合的數據庫,在壓測后,從Apache DruidClickhouseKylin中,選擇了前者。。。專業的事情要交給專業的組件去做!!!

對于非內核和二開的業務開發人員,更多場景應該關注的是API、特性及用法,不應該在部署這種事情上花費太多精力!!!筆者之前已部署了Docker Desktop:

https://lizhiyong.blog.csdn.net/article/details/145580868

今天在Win10環境再搭建個Apache Druid最新版玩玩。

版本選擇

官網:

https://druid.apache.org/

注意不是阿里數據庫連接池的那個Druid!!!

在這里插入圖片描述

截至2025-02-13Apache Druid最新版本是32.0.0

資源準備

參考官網:

https://druid.apache.org/docs/latest/tutorials/docker

官方給出了使用docker-compose.yml編排容器的教程,作為一個實時組件,大內存是必須的!!!但是啟動8個容器【Zookeeper+PostgreSQL+6個Druid】每個最多7GB內存也不是什么大事!!!

https://raw.githubusercontent.com/apache/druid/32.0.0/distribution/docker/docker-compose.yml

獲取到這個資源文件:

version: "2.2"volumes:metadata_data: {}middle_var: {}historical_var: {}broker_var: {}coordinator_var: {}router_var: {}druid_shared: {}services:postgres:container_name: postgresimage: postgres:latestports:- "5432:5432"volumes:- metadata_data:/var/lib/postgresql/dataenvironment:- POSTGRES_PASSWORD=FoolishPassword- POSTGRES_USER=druid- POSTGRES_DB=druid# Need 3.5 or later for container nodeszookeeper:container_name: zookeeperimage: zookeeper:3.5.10ports:- "2181:2181"environment:- ZOO_MY_ID=1coordinator:image: apache/druid:32.0.0container_name: coordinatorvolumes:- druid_shared:/opt/shared- coordinator_var:/opt/druid/vardepends_on:- zookeeper- postgresports:- "8081:8081"command:- coordinatorenv_file:- environmentbroker:image: apache/druid:32.0.0container_name: brokervolumes:- broker_var:/opt/druid/vardepends_on:- zookeeper- postgres- coordinatorports:- "8082:8082"command:- brokerenv_file:- environmenthistorical:image: apache/druid:32.0.0container_name: historicalvolumes:- druid_shared:/opt/shared- historical_var:/opt/druid/vardepends_on: - zookeeper- postgres- coordinatorports:- "8083:8083"command:- historicalenv_file:- environmentmiddlemanager:image: apache/druid:32.0.0container_name: middlemanagervolumes:- druid_shared:/opt/shared- middle_var:/opt/druid/vardepends_on: - zookeeper- postgres- coordinatorports:- "8091:8091"- "8100-8105:8100-8105"command:- middleManagerenv_file:- environmentrouter:image: apache/druid:32.0.0container_name: routervolumes:- router_var:/opt/druid/vardepends_on:- zookeeper- postgres- coordinatorports:- "3012:8888" #這里筆者改為3012防止霸占有用的端口command:- routerenv_file:- environment

參照官網另一篇:

https://druid.apache.org/docs/latest/configuration/

自己玩玩可以先不改這些運行時配置,容器啟動的,后續要重新部署也非常容易!!!

還需要:

https://raw.githubusercontent.com/apache/druid/32.0.0/distribution/docker/environment

做另一個配置文件:

# Java tuning
#DRUID_XMX=1g
#DRUID_XMS=1g
#DRUID_MAXNEWSIZE=250m
#DRUID_NEWSIZE=250m
#DRUID_MAXDIRECTMEMORYSIZE=6172m
DRUID_SINGLE_NODE_CONF=micro-quickstartdruid_emitter_logging_logLevel=debugdruid_extensions_loadList=["druid-histogram", "druid-datasketches", "druid-lookups-cached-global", "postgresql-metadata-storage", "druid-multi-stage-query"]druid_zk_service_host=zookeeperdruid_metadata_storage_host=
druid_metadata_storage_type=postgresql
druid_metadata_storage_connector_connectURI=jdbc:postgresql://postgres:5432/druid
druid_metadata_storage_connector_user=druid
druid_metadata_storage_connector_password=FoolishPassworddruid_indexer_runner_javaOptsArray=["-server", "-Xmx1g", "-Xms1g", "-XX:MaxDirectMemorySize=3g", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"]
druid_indexer_fork_property_druid_processing_buffer_sizeBytes=256MiBdruid_storage_type=local
druid_storage_storageDirectory=/opt/shared/segments
druid_indexer_logs_type=file
druid_indexer_logs_directory=/opt/shared/indexing-logsdruid_processing_numThreads=2
druid_processing_numMergeBuffers=2DRUID_LOG4J=<?xml version="1.0" encoding="UTF-8" ?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root><Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG"><AppenderRef ref="Console"/></Logger></Loggers></Configuration>

部署文件看起來麻雀雖小五臟俱全!!!

部署

PS C:\Users\zhiyong> cd E:\dockerData\volume\druid1
PS E:\dockerData\volume\druid1> ls目錄: E:\dockerData\volume\druid1Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2025-02-13     23:26           2980 docker-compose.yml
-a----        2025-02-13     23:33           1576 environment
PS E:\dockerData\volume\druid1> docker compose up -d
time="2025-02-13T23:34:39+08:00" level=warning msg="E:\\dockerData\\volume\\druid1\\docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
[+] Running 72/15? router Pulled                                          230.7s ? coordinator Pulled                                     230.7s ? postgres Pulled                                        181.0s ? historical Pulled                                      230.7s ? broker Pulled                                          230.7s ? middlemanager Pulled                                   230.7s ? zookeeper Pulled                                        85.7s [+] Running 15/15? Network druid1_default           Created                 0.1s ? Volume "druid1_druid_shared"     Created                 0.0s ? Volume "druid1_historical_var"   Created                 0.0s ? Volume "druid1_middle_var"       Created                 0.0s ? Volume "druid1_router_var"       Created                 0.0s ? Volume "druid1_metadata_data"    Created                 0.0s ? Volume "druid1_coordinator_var"  Created                 0.0s ? Volume "druid1_broker_var"       Created                 0.0s ? Container postgres               Started                 2.4s ? Container zookeeper              Started                 2.4s ? Container coordinator            Started                 1.6s ? Container router                 Started                 2.5s ? Container broker                 Started                 2.3s ? Container historical             Started                 2.5s ? Container middlemanager          Started                 2.8s 
PS E:\dockerData\volume\druid1>

拉取鏡像成功后很快就能拉起容器:

在這里插入圖片描述

好家伙。。。還順便把其它組件的端口也給暴露出來了。。。

在這里插入圖片描述
在這里插入圖片描述

于是還**白piao**到一個PG和Zookeeper!!!

驗證

http://localhost:3012/unified-console.html#

在這里插入圖片描述

灰常好,現在已經擁有了一個最新Apache Druid32.0.0!!!

轉載請注明出處:https://lizhiyong.blog.csdn.net/article/details/145622903

在這里插入圖片描述

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

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

相關文章

【第13章:自監督學習與少樣本學習—13.1 自監督學習最新進展與實現方法】

凌晨三點的實驗室,博士生小王盯著屏幕里正在"自娛自樂"的神經網絡——這個沒有吃過一張標注圖片的模型,正在通過旋轉、拼圖、填色等游戲任務,悄悄掌握著理解世界的秘訣。這種魔法般的修煉方式,正是當今AI領域最炙手可熱的技術:自監督學習。 一、打破數據枷鎖:自…

數據庫報錯1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解決方式

MySQL 報錯 1045 表示用戶root從localhost連接時被拒絕訪問&#xff0c;通常是因為密碼錯誤、權限問題或配置問題。以下是解決該問題的常見方法&#xff1a; 方法一&#xff1a;檢查用戶名和密碼 ? 確認用戶名和密碼是否正確&#xff1a; 確保輸入的用戶名和密碼完全正確&am…

八大排序——簡單選擇排序

目錄 1.1基本操作&#xff1a; 1.2動態圖&#xff1a; 1.3代碼&#xff1a; 代碼解釋 1. main 方法 2. selectSort 方法 示例運行過程 初始數組 每輪排序后的數組 最終排序結果 代碼總結 1.1基本操作&#xff1a; 選擇排序&#xff08;select sorting&#xff09;也…

與傳統光伏相比 城電科技的光伏太陽花有什么優勢?

相比于傳統光伏&#xff0c;城電科技的光伏太陽花有以下優勢&#xff1a; 一、發電效率方面 智能追蹤技術&#xff1a;光伏太陽花通過內置的智能追蹤系統&#xff0c;采用全球定位跟蹤算法&#xff0c;能夠實時調整花瓣&#xff08;即光伏板&#xff09;的角度&#xff0c;確…

FPGA的星辰大海

編者按 時下風頭正盛的DeepSeek,正值喜好宏大敘事的米國大統領二次上崗就業,OpenAI、軟銀、甲骨文等宣布投資高達5000億美元“星際之門”之際,對比尤為強烈。 某種程度上,,是低成本創新理念的直接落地。 包括來自開源社區的諸多贊譽是,并非體現技術有多“超越”,而是…

Elasticsearch:15 年來致力于索引一切,找到重要內容

作者&#xff1a;來自 Elastic Shay Banon 及 Philipp Krenn Elasticsearch 剛剛 15 歲了&#xff01;回顧過去 15 年的索引和搜索&#xff0c;并展望未來 15 年的相關內容。 Elasticsearch 剛剛成立 15 周年。一切始于 2010 年 2 月的一篇公告博客文章&#xff08;帶有標志性的…

嵌入式軟件、系統、RTOS(高軟23)

系列文章目錄 4.2嵌入式軟件、系統、RTOS 文章目錄 系列文章目錄前言一、嵌入式軟件二、嵌入式系統三、嵌入式系統分類四、真題總結 前言 本節講明嵌入式相關知識&#xff0c;包括軟件、系統。 一、嵌入式軟件 二、嵌入式系統 三、嵌入式系統分類 四、真題 總結 就是高軟筆記…

數據結構 day02

3. 線性表 3.1. 順序表 3.1.3. 順序表編程實現 操作&#xff1a;增刪改查 .h 文件 #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #define N 10 typedef struct seqlist {int data[N];int last; //代表數組中最后一個有效元素的下標 } seqlist_t;//1.創建一個空的順序表 seq…

數據恢復-01-機械硬盤的物理與邏輯結構

磁盤存儲原理 磁盤存儲數據的原理&#xff1a; 磁盤存儲數據的原理是利用磁性材料在磁場作用下的磁化性質&#xff0c;通過在磁盤表面上劃分成許多小區域&#xff0c;根據不同的磁化方向來表示0和1的二進制數據&#xff0c;通過讀寫磁頭在磁盤上的移動&#xff0c;可以實現數據…

wordpress get_footer();與wp_footer();的區別的關系

在WordPress中&#xff0c;get_footer() 和 wp_footer() 是兩個不同的函數&#xff0c;它們在主題開發中扮演著不同的角色&#xff0c;但都與頁面的“頁腳”部分有關。以下是它們的區別和關系&#xff1a; 1. get_footer() get_footer() 是一個用于加載頁腳模板的函數。它的主…

DeepSeek 通過 API 對接第三方客戶端 告別“服務器繁忙”

本文首發于只抄博客&#xff0c;歡迎點擊原文鏈接了解更多內容。 前言 上一期分享了如何在本地部署 DeepSeek R1 模型&#xff0c;但通過命令行運行的本地模型&#xff0c;問答的交互也要使用命令行&#xff0c;體驗并不是很好。這期分享幾個第三方客戶端&#xff0c;涵蓋了桌…

跟著李沐老師學習深度學習(十一)

經典的卷積神經網絡 在本次筆記中主要介紹一些經典的卷積神經網絡模型&#xff0c;主要包含以下&#xff1a; LeNet&#xff1a;最早發布的卷積神經網絡之一&#xff0c;目的是識別圖像中的手寫數字&#xff1b;AlexNet&#xff1a; 是第一個在大規模視覺競賽中擊敗傳統計算機…

使用JavaScript實現深淺拷貝

1. 拷貝的基本概念和必要性 在 JavaScript 中&#xff0c;數據類型分為基本數據類型&#xff08;如 Number、String、Boolean、Null、Undefined、Symbol&#xff09;和引用數據類型&#xff08;如 Object、Array&#xff09;。基本數據類型存儲的是值本身&#xff0c;而引用數…

解析瀏覽器中JavaScript與Native交互原理:以WebGPU為例

引言 隨著Web應用復雜度的提升&#xff0c;開發者對瀏覽器訪問本地硬件能力的需求日益增長。然而&#xff0c;瀏覽器必須在開放性與安全性之間找到平衡——既不能放任JavaScript&#xff08;JS&#xff09;隨意操作系統資源&#xff0c;又要為高性能計算、圖形渲染等場景提供支…

T-Sql 打印所有用戶表的建表腳本

-- 聲明一個變量用于存儲表名 DECLARE TableName NVARCHAR(128); -- 聲明一個游標&#xff0c;用于遍歷所有用戶表 DECLARE TableCursor CURSOR FOR SELECT name FROM sys.tables WHERE type U; -- 打開游標 OPEN TableCursor; -- 從游標中獲取第一行數據 FETCH NEXT FROM Ta…

25/2/16 <算法筆記> MiDas原理

MiDaS&#xff08;Monocular Depth Sensing&#xff09;是一種基于單目深度估計的技術&#xff0c;它通過深度學習方法使用單張RGB圖像&#xff08;普通2D圖像&#xff09;來估算場景的深度圖&#xff08;Depth Map&#xff09;。相比于傳統的依賴專用深度傳感器&#xff08;如…

python+halcon 解讀labelme標注生成marksimage

這一段代碼封裝了一個類&#xff0c;需要傳統一個圖片和標注后json文件所在的地址&#xff0c;標注的選項是polygon&#xff0c;主要是用于unet深度學習網絡 在初始化時需要輸入文件&#xff08;imagejeson&#xff09;路徑&#xff0c;多分類任務的label_list。會在項目目錄下…

從技術債務到架構升級,滴滴國際化外賣的變革

背 景 商家營銷簡述 在外賣平臺的運營中&#xff0c;我們致力于通過靈活的補貼策略激勵商家&#xff0c;與商家共同打造良好的合作關系&#xff0c;也會提供多樣化的營銷活動&#xff0c;幫助商家吸引更多用戶下單。通過這些活動&#xff0c;不僅能夠提高商家的銷量&#xff0c…

英語—四級CET4考試—技巧篇—選詞填空—實操教學—2014 年 6 月大學英語四級考試真題(第 2 套)

&#x1f3e0;個人主頁&#xff1a;fo安方的博客? &#x1f482;個人簡歷&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;目前中南大學MBA在讀&#xff0c;也考取過HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等證書。&#x1f433; &…

線性代數中的正交和標準正交向量

在線性代數中&#xff0c;理解正交向量和正交向量至關重要&#xff0c;尤其是對于機器學習中的應用。這篇博文將簡化這些概念&#xff0c;而不會太深入地深入研究復雜的數學。 正交向量 如果兩個向量的點積等于零&#xff0c;則認為這兩個向量是正交的。但點積到底是什么呢&am…