Storm學習之使用官方Docker鏡像快速搭建Storm運行環境

文章目錄

  • 0.前言
    • 搭建完的效果
  • 1.教程
    • 1.1.docker 安裝 zookeeper
    • 1.2. 安裝 storm nimbus
    • 1.3.docker 安裝 supervisor
    • 1.4.docker 安裝 storm-ui
    • 1.5.查看已經啟動的容器
    • 1.6.提交topology到 storm集群
  • 2.總結
  • 3.參考文檔

0.前言

Apache Storm 官方也出了Docker 鏡像 https://hub.docker.com/_/storm/
本文我們就基于官方鏡像搭建一個 Apache Storm 2.4 版本的運行環境,供大家后續學習。
有問題可以參考issue 解決,我的安裝過程一路都很順暢。所以基本上沒有看下面是我的詳細操作和截圖
可以說網上的亂七八糟的教程不如官方文檔來的實在。
如果想用虛擬機搭建,請參考我的上一篇文章《Centos7搭建Apache Storm 集群運行環境》

搭建完的效果

Storm UI雖然是Storm 的非必須組件,但是是非常有用,基本上離不開的組件,它可以展示很多信息,對我們平時排查問題很有幫助,
在這里插入圖片描述

  1. 拓撲列表:顯示當前在Storm集群中運行的所有拓撲的列表。每個拓撲通常會顯示其名稱、ID、狀態和所屬的用戶。

  2. 拓撲摘要:提供了關于選定拓撲的詳細信息,包括拓撲的名稱、ID、狀態、拓撲圖和組件列表。還可能包括拓撲的啟動時間、運行時長和錯誤信息。

  3. 組件視圖:顯示了拓撲中的各個組件及其實例的信息。對于每個組件,它通常會顯示組件的ID、類型、輸入輸出流以及處理該組件的工作進程和任務數量。

  4. 工作進程視圖:提供有關工作進程的詳細信息,包括工作進程的ID、主機名、端口號、啟動時間、堆內存使用情況、線程數等。

  5. 任務視圖:顯示有關任務的信息,包括任務的ID、工作進程、組件、執行狀態、錯誤信息等。可以查看每個任務的日志和統計數據。

  6. 錯誤視圖:列出了拓撲中發生的任何錯誤或異常。這包括組件的失敗、任務的錯誤、工作進程的故障等。通常會顯示錯誤的時間戳、類型和詳細描述。

  7. 日志視圖:顯示了拓撲中各個組件和任務的日志輸出。可以查看實時日志或按時間范圍過濾日志。

  8. 統計視圖:提供了關于拓撲的性能統計數據。這可能包括拓撲的吞吐量、處理延遲、執行時間、錯誤計數等指標的圖表或表格。

  9. 配置視圖:顯示了拓撲的配置參數和屬性。可以查看拓撲使用的配置文件以及運行時配置的值。

  10. 集群概述:提供了有關整個Storm集群的概覽信息,包括集群狀態、拓撲數量、工作進程數量、任務數量等。

請注意,具體的Storm UI頁面內容可能會根據不同的版本和配置有所變化,上述內容僅為一般情況下的解釋。

1.教程

1.1.docker 安裝 zookeeper

我們選擇最新版本的zookeeper

$ docker run -itd --restart always --name ice-zookeeper zookeeper

在這里插入圖片描述

1.2. 安裝 storm nimbus

創建一個名為ice-nimbus的容器,并在其中運行Storm的Nimbus組件。該容器將與一個名為ice-zookeeper的Zookeeper容器相鏈接,以便Storm Nimbus可以與Zookeeper進行通信。
這一步耗時稍微較長,需要下載鏡像。

$ docker run -itd --restart always --name ice-nimbus --link ice-zookeeper:zookeeper storm storm nimbus

在這里插入圖片描述

1.3.docker 安裝 supervisor

創建一個名為ice-supervisor的容器,并在其中運行Storm的Supervisor組件。該容器將與一個名為ice-zookeeper的Zookeeper容器和一個名為ice-nimbus的Nimbus容器相鏈接,以便Storm Supervisor可以與Zookeeper和Nimbus進行通信。通過--restart always選項,當容器退出時,Docker將自動重新啟動該容器,確保Supervisor組件一直處于運行狀態。

$ docker run -d --restart always --name ice-supervisor --link ice-zookeeper:zookeeper --link ice-nimbus:nimbus storm storm supervisor

在這里插入圖片描述

1.4.docker 安裝 storm-ui

$ docker run -d -p 8980:8080 --restart always --name ui --link ice-nimbus:nimbus storm storm ui

在這里插入圖片描述

1.5.查看已經啟動的容器

docker ps -a

在這里插入圖片描述

1.6.提交topology到 storm集群

$ docker run --link ice-nimbus:nimbus -it --rm -v $(pwd)/topology.jar:/topology.jar storm storm jar /topology.jar org.apache.storm.starter.WordCountTopology topology

在這里插入圖片描述

在這里插入圖片描述
我們可以在StormUI的最后面看到 Nimbus配置參數:

  • worker.profiler.enabled: 是否啟用工作進程的性能分析器。在給定的配置中,該值為false,表示禁用性能分析器。

  • worker.profiler.command: 用于啟動性能分析器的命令。在給定的配置中,命令為"flight.bash"。

  • worker.profiler.childopts: 傳遞給性能分析器的JVM參數。在給定的配置中,參數為"-XX:+UnlockCommercialFeatures -XX:+FlightRecorder",用于解鎖商業特性并啟用Flight Recorder。

  • worker.metrics: 工作進程的度量指標配置。提供了一組度量指標的名稱和相應的類。在給定的配置中,包括CGroup內存使用、CGroup內存限制、CGroup CPU使用、CGroup CPU保證等度量指標。

  • worker.max.timeout.secs: 工作進程的最大超時時間,以秒為單位。在給定的配置中,超時時間為600秒。

  • worker.log.level.reset.poll.secs: 重新設置工作進程日志級別的輪詢間隔,以秒為單位。在給定的配置中,輪詢間隔為30秒。

  • worker.heartbeat.frequency.secs: 工作進程發送心跳的頻率,以秒為單位。在給定的配置中,心跳頻率為1秒。

  • worker.heap.memory.mb: 工作進程的堆內存大小,以MB為單位。在給定的配置中,堆內存大小為768MB。

  • worker.gc.childopts: 傳遞給垃圾收集器的JVM參數。在給定的配置中,參數為空字符串,表示沒有額外的垃圾收集器參數。

  • worker.childopts: 工作進程的啟動選項,包括JVM參數。在給定的配置中,包括一些JVM參數,例如堆內存大小、GC日志的輸出路徑和格式、堆外內存溢出時的堆轉儲等。

  • ui.port: Storm UI的端口號。在給定的配置中,端口號為8080。

  • ui.childopts: Storm UI的啟動選項,包括JVM參數。在給定的配置中,只指定了最大堆內存大小為768MB。

  • topology.workers: 拓撲的工作進程數。在給定的配置中,工作進程數為1,表示拓撲將在一個工作進程中執行。

  • topology.worker.shared.thread.pool.size: 拓撲工作進程共享線程池的大小。在給定的配置中,線程池大小為4。

  • topology.worker.receiver.thread.count: 拓撲工作進程接收器線程的數量。在給定的配置中,接收器線程數為1。

  • topology.worker.max.heap.size.mb: 拓撲工作進程的最大堆內存大小,以MB為單位。在給定的配置中,最大堆內存大小為768MB。

  • topology.worker.logwriter.childopts: 拓撲工作進程日志寫入器的啟動選項,包括JVM參數。在給定的配置中,只指定了最大堆內存大小為64MB。

  • topology.tuple.serializer: 拓撲元組的序列化器。在給定的配置中,序列化器為"org.apache.storm.serialization.types.ListDelegateSerializer"。

  • topology.trident.batch.emit.interval.millis: Trident拓撲批量發射間隔的時間間隔,以毫秒為單位。在給定的配置中,間隔為500毫秒。

  • topology.transfer.buffer.size: 拓撲傳輸緩沖區的大小。在給定的配置中,緩沖區大小為1000。

  • topology.transfer.batch.size: 拓撲傳輸批量大小。在給定的配置中,批量大小為1。

  • topology.stats.sample.rate: 拓撲配置項解釋:

  • worker.profiler.enabled: 是否啟用工作進程的性能分析器。在給定的配置中,該值為false,表示禁用性能分析器。

  • worker.profiler.command: 用于啟動性能分析器的命令。在給定的配置中,命令為"flight.bash"。

  • worker.profiler.childopts: 傳遞給性能分析器的JVM參數。在給定的配置中,參數為"-XX:+UnlockCommercialFeatures -XX:+FlightRecorder",用于解鎖商業特性并啟用Flight Recorder。

  • worker.metrics: 工作進程的度量指標配置。提供了一組度量指標的名稱和相應的類。在給定的配置中,包括CGroup內存使用、CGroup內存限制、CGroup CPU使用、CGroup CPU保證等度量指標。

  • worker.max.timeout.secs: 工作進程的最大超時時間,以秒為單位。在給定的配置中,超時時間為600秒。

  • worker.log.level.reset.poll.secs: 重新設置工作進程日志級別的輪詢間隔,以秒為單位。在給定的配置中,輪詢間隔為30秒。

  • worker.heartbeat.frequency.secs: 工作進程發送心跳的頻率,以秒為單位。在給定的配置中,心跳頻率為1秒。

  • worker.heap.memory.mb: 工作進程的堆內存大小,以MB為單位。在給定的配置中,堆內存大小為768MB。

  • worker.gc.childopts: 傳遞給垃圾收集器的JVM參數。在給定的配置中,參數為空字符串,表示沒有額外的垃圾收集器參數。

  • worker.childopts: 工作進程的啟動選項,包括JVM參數。在給定的配置中,包括一些JVM參數,例如堆內存大小、GC日志的輸出路徑和格式、堆外內存溢出時的堆轉儲等。

  • ui.port: Storm UI的端口號。在給定的配置中,端口號為8080。

  • ui.childopts: Storm UI的啟動選項,包括JVM參數。在給定的配置中,只指定了最大堆內存大小為768MB。

  • topology.workers: 拓撲的工作進程數。在給定的配置中,工作進程數為1,表示拓撲將在一個工作進程中執行。

  • topology.worker.shared.thread.pool.size: 拓撲工作進程共享線程池的大小。在給定的配置中,線程池大小為4。

  • topology.worker.receiver.thread.count: 拓撲工作進程接收器線程的數量。在給定的配置中,接收器線程數為1。

  • topology.worker.max.heap.size.mb: 拓撲工作進程的最大堆內存大小,以MB為單位。在給定的配置中,最大堆內存大小為768MB。

  • topology.worker.logwriter.childopts: 拓撲工作進程日志寫入器的啟動選項,包括JVM參數。在給定的配置中,只指定了最大堆內存大小為64MB。

  • topology.tuple.serializer: 拓撲元組的序列化器。在給定的配置中,序列化器為"org.apache.storm.serialization.types.ListDelegateSerializer"。

  • topology.trident.batch.emit.interval.millis: Trident拓撲批量發射間隔的時間間隔,以毫秒為單位。在給定的配置中,間隔為500毫秒。

  • topology.transfer.buffer.size: 拓撲傳輸緩沖區的大小。在給定的配置中,緩沖區大小為1000。

  • topology.transfer.batch.size: 拓撲傳輸批量大小。在給定的配置中,批量大小為1。

  • topology.stats.sample.rate: 拓撲統計信息的

2.總結

本次我們將storm 使用docker 搭建了運行環境,下個章節,我們使用這個運行環境來運行我們拓撲。寫一個最簡單的 world count。本次我們就先到這里,大家如果需要繼續可以開始寫拓撲,嘗試自己提交運行。

import org.apache.storm.Config;
import org.apache.storm.LocalCluster;
import org.apache.storm.topology.TopologyBuilder;
import org.apache.storm.tuple.Fields;
import org.apache.storm.tuple.Values;
import org.apache.storm.utils.Utils;public class WordCountTopology {public static void main(String[] args) {// 創建TopologyBuilder實例TopologyBuilder builder = new TopologyBuilder();// 定義spout(數據源)和bolt(數據處理器)的名稱和任務并行度builder.setSpout("word-reader", new WordReaderSpout(), 1);builder.setBolt("word-normalizer", new WordNormalizerBolt(), 2).shuffleGrouping("word-reader");builder.setBolt("word-counter", new WordCounterBolt(), 2).fieldsGrouping("word-normalizer", new Fields("word"));// 創建配置對象并設置一些參數Config config = new Config();config.put("inputFile", "input.txt");config.setDebug(true);// 在本地模式下運行拓撲LocalCluster cluster = new LocalCluster();cluster.submitTopology("word-count-topology", config, builder.createTopology());// 等待一段時間后停止拓撲Utils.sleep(5000);cluster.killTopology("word-count-topology");cluster.shutdown();}
}

3.參考文檔

  1. docker hub storm https://hub.docker.com/_/storm
  2. Storm 社區 https://github.com/31z4/storm-docker

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

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

相關文章

lua使用心得

lua語言的一些注意事項 在控制結構的條件中除了false和nil為假,其他值都為真。所以Lua認為0和空串都是真。lua5.3之前的版本只支持浮點數,lua5.3才引入了對整數的支持,/僅支持浮點數除法,要實現C里的整除效果必須使用雙斜杠//超過…

nodejs+vue+elementui美食網站的設計與實現演示錄像2023_0fh04

本次的畢業設計主要就是設計并開發一個美食網站軟件。運用當前Google提供的nodejs 框架來實現對美食信息查詢功能。當然使用的數據庫是mysql。系統主要包括個人信息修改,對餐廳管理、用戶管理、餐廳信息管理、菜系分類管理、美食信息管理、美食文化管理、系統管理、…

數據可視化工具的三大類報表制作流程分享

電腦(pc)、移動、大屏三大類型的BI數據可視化報表制作步驟基本相同,差別就在于尺寸調整和具體的報表布局。這對于采用點擊、拖拉拽方式來制作報表的奧威BI數據可視化工具來說就顯得特別簡單。接下來,我們就一起看看不這三大類型的…

界面組件DevExpress Reporting——支持圖表本地化和可綁定屬性

DevExpress Reporting是.NET Framework下功能完善的報表平臺,它附帶了易于使用的Visual Studio報表設計器和豐富的報表控件集,包括數據透視表、圖表,因此您可以構建無與倫比、信息清晰的報表。 在最近的更新(v23.1)中,官方擴展了…

centos7 部署kubernetes(帶自動部署腳本)

目錄 一、實驗規劃 1、規劃表 2、安裝前宿主機檢查 1.配置主機名 2.制作ssh免密(VM1中執行) 3.修改hosts 文件 4. 修改內核相關參數 5.加載模塊 6. 清空iptables、關閉防火墻、關閉交換空間、禁用selinux 7. 安裝ipvs與時鐘同步 8.配置docker的…

Three.js 監聽紋理加載

本文簡介 本文介紹 Three.js 的基礎方法:監聽材質加載。 在 《Three.js 基礎紋理貼圖》 里介紹了如何給圖形貼圖,貼圖前需要先把紋理加載好。我們基于這篇文章繼續講解如何監聽材質加載成功或者失敗。 監聽單個材質 我們使用 TextureLoader 的 load() 方…

TC3XX - MCAL知識點(二十六):GETH MCAL配置及代碼實戰(以太網)

目錄 1、概述 2、MCAL配置 2.1、配置目標 2.2、ETH配置 2.2.1、EthGeneral 2.2.2、EthCtrlOffloading 2.2.3、EthConfigSet 2.3、Port配置 2.4、IRQ配置 2.5、MC

ChatGPT收錄

VSCode插件-ChatGPT 多磨助手 多磨助手 (domore.run) Steamship Steamship 免費合集 免費chatGPT - Ant Design Pro 免費AI聊天室 (xyys.one)

解決flutter showDialog下拉框,復選框等無法及時響應的問題

使用StatefulBuilder _showDialogr() {showDialog(context: context,builder: (BuildContext ctx) {return StatefulBuilder(builder: (BuildContext context, StateSetter setState) {return Scaffold(body: Column(children: <Widget>[Container(height: 400,padding: …

使用nio代替傳統流實現文件上傳和下載功能

1.文件下載 /**NIO文件下載工具類* author olalu*/ public class NioDownloadUtils {/*** description:* param file: 要下在文件* return: void*/public static void downloadDoc(File file,HttpServletResponse response) throws IOException {OutputStream outputStream r…

武漢地鐵19號線完成5G專網全覆蓋,現場測試下行速率超千兆!

近日&#xff0c;極目新聞記者從中國移動湖北公司獲悉&#xff0c;隨著武漢地鐵19號線全線隧道正式貫通&#xff0c;湖北移動目前已完成新月溪公園至鼓架山站5G網絡覆蓋&#xff0c;軌行區5G專網全覆蓋&#xff0c;并成功進行試車驗證&#xff0c;19號線成為國內首條全線實現5G…

實習筆記(一)

自定義注解&#xff1a; 自定義注解中有三個元注解Target,Retention,Document /*** 系統日志注解** author Mark sunlightcsgmail.com*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface SysLog {String value() default "…

2023全國大學生數學建模競賽C題思路模型代碼

目錄 1.C題思路模型&#xff1a;比賽開始后&#xff0c;第一時間更新&#xff0c;獲取見文末名片 2.比賽時間&#xff1a;2023年9月7日18點到2023年9月10日20點 3 全國大學生數學建模競賽常見數模問題 3.1 分類問題 3.2 優化問題 詳細思路見此名片&#xff0c;開賽第一時間…

面試題解析 | 為什么Redis使用單線程性能會優于多線程?

大家好&#xff0c;我是小米&#xff01;今天我要和大家聊一個有關Redis的熱門面試題&#xff1a;為什么Redis使用單線程性能會優于多線程&#xff1f;相信這個問題在很多同學心中都曾經糾結過&#xff0c;那么接下來&#xff0c;就讓我們一起來揭開這個技術之謎吧&#xff01;…

LeetCode 37題:解數獨

題目 編寫一個程序&#xff0c;通過填充空格來解決數獨問題。 數獨的解法需 遵循如下規則&#xff1a; 數字 1-9 在每一行只能出現一次。數字 1-9 在每一列只能出現一次。數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。&#xff08;請參考示例圖&#xff09; 數獨…

IDEA簡單拷貝一份新項目記錄

IDEA簡單拷貝項目記錄 拷貝后改項目名&#xff0c;然后iml 配置文件改項目名&#xff0c;然后 .idea 中的compiler.xml 里面的name標簽改項目名。 就可以了

【軟件工程】軟件測試

軟件測試的對象 軟件程序文檔 測試對象&#xff1a;各個階段產生的源程序和文檔。 軟件測試的目的 基于不同的立場&#xff0c;對軟件測試的目的存在著兩種完全對立的觀點。 &#xff08;1&#xff09;一種觀點是通過測試暴露出軟件中所包含的故障和缺陷(從用戶的角度)&#xf…

ssh-keygen 做好免密登錄后不生效

免密說明 通常情況下&#xff0c;我們ssh到其他服務器需要知道服務器的用戶名和密碼。對于需要經常登錄的服務器每次都輸入密碼比較麻煩&#xff0c;因此我們可以在兩臺服務器上做免密登錄&#xff0c;即在A服務器可以免密登錄B服務器。 在A服務器上登錄B服務器時&#xff0c;…

Tik Tok娛樂+電商MCN怎么做?

在美國外的熱門市場中&#xff0c;TikTok 主要做的區域市場包括中東、拉美、歐洲和東亞&#xff0c;而這里面適合做電商的其實并不多。 歐洲、東亞都屬于成熟市場&#xff0c;且 TikTok 本身在歐洲面臨 DSA 法案更嚴格的審查&#xff0c;與在英國相同&#xff0c;歐洲各市場消…

第G1周:生成對抗網絡(GAN)入門

&#x1f368; 本文為[&#x1f517;365天深度學習訓練營]內部限免文章&#xff08;版權歸 *K同學啊* 所有&#xff09; &#x1f356; 作者&#xff1a;[K同學啊] 一、理論基礎 生成對抗網絡&#xff08;Generative Adversarial Networks, GAN&#xff09;是近年來深度學習領域…