Apache Storm Docker 官方镜像实战:从本地拓扑到最小集群部署
发布时间:2026/10/15 18:16:26 锦皓数字建站

文档【免费下载链接】docsDocumentation for Docker Official Images in docker-library项目地址https://gitcode.com/gh_mirrors/docs/docs点击查看免费下载Apache Storm 是面向无界数据流的分布式实时计算系统。本指南基于 Docker 官方镜像仓库中的 storm/README.md 文档讲解如何用官方storm镜像在本地模式直接运行拓扑如何依次启动 ZooKeeper、Nimbus、Supervisor 与 Storm UI 搭建最小可用集群以及如何通过docker compose一键编排、如何覆盖默认配置、持久化数据与日志。读完本文你将能够独立完成 Storm 镜像的部署、拓扑提交与集群配置调优。Apache Storm 是什么Apache Storm 是一个免费开源的分布式实时计算系统。它让可靠地处理**无界数据流unbounded streams of data**变得简单——正如 Hadoop 之于批处理Apache Storm 之于实时处理。Storm 足够简单、支持任何编程语言并且易于上手。Storm 的典型使用场景包括实时分析realtime analytics在线机器学习online machine learning持续计算continuous computation分布式 RPCdistributed RPCETL 等按 storm/README.md 的引述Storm 性能出色其基准测试曾达到单节点每秒处理超过一百万个 tuple具备可扩展、容错、保证数据被处理等特性且易于搭建与运维。Storm 能与团队已有的消息队列和数据库技术集成一个 Storm拓扑topology消费数据流并在计算各阶段之间按需对流进行重分区从而以任意复杂度处理数据。镜像概况版本标签、架构与文档来源官方storm镜像当前支持的标签如下完整列表见 storm/README.md 的 Supported tags 部分标签说明3.1.0-jre25、3.1-jre25、3.1.0、3.1、latest标准版镜像基于 JRE 25 构建3.1.0-lite-jre25、3.1-lite-jre25、3.1.0-lite、3.1-liteLite 精简版镜像支持架构amd64、arm64v8可覆盖主流 x86 与 ARM64 服务器/开发机。维护方Apache Storm 项目团队见 storm/maintainer.md。获取帮助Apache Storm 社区见 storm/get-help.md。提交 IssueApache Storm 的 JIRA 跟踪系统见 storm/issues.md。Dockerfile 上游仓库镜像对应的 Dockerfile 位于 Apache Storm 的 Docker 构建仓库见 storm/github-repo。快速开始本地模式运行拓扑本地模式是最快的验证方式——无需任何集群组件直接在容器里运行一个拓扑。假设当前目录下已有打包好的topology.jar$ docker run -it -v $(pwd)/topology.jar:/topology.jar storm storm jar /topology.jar org.apache.storm.starter.ExclamationTopology命令拆解-v $(pwd)/topology.jar:/topology.jar把宿主机的拓扑 JAR 挂载进容器路径固定为/topology.jar第一个storm是镜像名第二个storm是容器内的 CLI 命令storm jar jar路径 主类名是 Storm 的提交命令这里运行的是 storm-starter 示例拓扑之一org.apache.storm.starter.ExclamationTopology。部署一个最小 Storm 集群一个可用的 Storm 集群至少需要ZooKeeper Nimbus Supervisor三个角色。官方文档给出的启动顺序与命令如下。1. 先启动 ZooKeeperZooKeeper 是运行 Storm 集群的必需组件必须最先启动。由于 ZooKeeper 采用 fail fast快速失败机制一旦异常就立即退出因此推荐始终加上--restart always让 Docker 自动拉起$ docker run -d --restart always --name some-zookeeper zookeeper2. 启动 NimbusNimbus 是集群的主节点master负责接收拓扑提交、分配任务。它必须与 ZooKeeper 相连同样属于 fail fast 系统$ docker run -d --restart always --name some-nimbus --link some-zookeeper:zookeeper storm storm nimbus这里--link some-zookeeper:zookeeper让 Nimbus 容器内以主机名zookeeper访问 ZooKeeper 容器。3. 启动 SupervisorSupervisor 是工作节点负责实际执行拓扑任务它会同时与 Nimbus 和 ZooKeeper 通信$ docker run -d --restart always --name supervisor --link some-zookeeper:zookeeper --link some-nimbus:nimbus storm storm supervisor4. 提交拓扑到集群集群就绪后即可提交拓扑。这里使用 storm-starter 的WordCountTopology作为示例topology是拓扑名称可选参数$ docker run --link some-nimbus:nimbus -it --rm -v $(pwd)/topology.jar:/topology.jar storm storm jar /topology.jar org.apache.storm.starter.WordCountTopology topology注意这次用了--rm提交动作完成后容器即可退出清理无需常驻。5.可选启动 Storm UIStorm UI 是集群的可视化 Web 界面用于查看拓扑运行状态。官方镜像将其默认端口设为8080$ docker run -d -p 8080:8080 --restart always --name ui --link some-nimbus:nimbus storm storm ui启动后通过http://localhost:8080访问。从源码结构看ZooKeeper、Nimbus、Supervisor 三种角色均通过同一个镜像、以不同子命令启动这种一个镜像多角色的设计正是官方镜像的通用做法便于复用与编排。使用 Docker Compose 一键编排集群逐个docker run便于理解角色关系但日常使用更推荐 Compose。官方仓库在 storm/compose.yaml 中提供了开箱即用的编排文件内容同样嵌入在 storm/README.md 中完整内容如下services: zookeeper: image: zookeeper container_name: zookeeper restart: always nimbus: image: storm container_name: nimbus command: storm nimbus depends_on: - zookeeper links: - zookeeper restart: always ports: - 6627:6627 supervisor: image: storm container_name: supervisor command: storm supervisor depends_on: - nimbus - zookeeper links: - nimbus - zookeeper restart: always要点说明zookeeper服务使用官方zookeeper镜像并设置restart: always应对其 fail-fast 特性nimbus通过depends_on等待 ZooKeepercommand直接指定storm nimbus并对外暴露6627端口——这是 Nimbus 对外服务的端口也是 README 中访问地址的端口来源supervisor同时依赖 nimbus 与 zookeeper通过links建立主机名映射三个服务都配置了restart: always保证进程异常退出后自动恢复。启动方式$ docker compose up等待初始化完成后Nimbus 即可通过http://localhost:6627或http://host-ip:6627访问视实际网络环境而定。配置 Storm镜像内部使用 Apache Storm 的默认配置即项目conf/defaults.yaml中的默认值无需额外配置即可启动。官方文档给出了两种覆盖默认配置的途径。方式一通过命令行参数-c覆盖-c是storm命令行的配置覆盖参数可在启动守护进程时直接指定配置项的值。例如设置 ZooKeeper 服务器列表$ docker run -d --restart always --name nimbus storm storm nimbus -c storm.zookeeper.servers[zookeeper]这里-c storm.zookeeper.servers[zookeeper]把storm.zookeeper.servers覆盖为一个 JSON 数组与--link some-zookeeper:zookeeper配合Nimbus 即可通过主机名zookeeper找到 ZooKeeper。这种方式适合少量、临时性的参数调整。方式二挂载自定义storm.yaml更完整的做法是把自定义配置文件挂载到容器的/conf/storm.yaml。假设当前目录下有写好的storm.yaml$ docker run -it -v $(pwd)/storm.yaml:/conf/storm.yaml storm storm nimbus挂载后镜像会读取该文件作为配置来源适合集中管理成组的集群参数。两种方式可以组合使用挂载的配置文件提供基础配置-c参数在启动时做针对性覆盖。日志镜像使用 Apache Storm 的默认日志配置基于 log4j2。默认情况下所有日志输出到容器内的/logs目录。若要持久化或查看日志可将/logs挂载为数据卷详见下一节。数据持久化镜像默认不持久化任何数据。为方便持久化镜像预置了两个目录/data——存放状态与临时数据/logs——存放日志。两者均属于storm用户。需要持久化时把它们挂载为数据卷即可$ docker run -it -v /logs -v /data storm storm nimbus重要注意事项由于安全考虑容器内的 Storm 以非 root 的storm用户运行因此请只使用上述预定义路径/data、/logs挂载数据卷使用其他未预定义的路径很可能触发permission denied权限不足错误。镜像文档的生成机制仓库内部视角本仓库中的 storm/README.md 并非手写文件而是自动生成的其正文主体来自 storm/content.mdCompose 示例来自 storm/compose.yaml再由根目录的 update.sh 依据 .template-helpers/template.md、.template-helpers/compose.md 等模板拼接而成文件头部也有相应的自动生成警告见 .template-helpers/autogenerated-warning.md。因此想了解或复现该文档应直接阅读 storm/content.md 与 storm/compose.yamlstorm/README-short.txt 是 Docker Hub 上显示的 100 字以内短描述维护该文档而非手工编辑 README的正确方式是修改上述源文件后运行./update.sh storm生成 README 用于校验。理解这套机制有助于判断文档与镜像构建之间的对应关系避免误改生成文件。许可与商标Apache Storm、Storm、Apache、Apache feather logo 与 Apache Storm 项目 logo 均为 Apache 软件基金会The Apache Software Foundation的商标。镜像内的主软件以 Apache License, Version 2.0。与所有 Docker 镜像类似镜像中可能还包含以其他许可分发的软件如来自基础发行版的 Bash 等以及主软件的直接或间接依赖。使用任何预构建镜像时使用者有责任确保对镜像内所有软件的使用符合其各自许可要求。小结本文围绕 Docker 官方storm镜像给出了完整的实战路径先用一条docker run在本地模式快速验证拓扑再按 ZooKeeper → Nimbus → Supervisor → UI 的顺序搭建最小集群最后用官方提供的 storm/compose.yaml 实现一键编排。配置方面-c命令行覆盖适合临时调整挂载/conf/storm.yaml适合集中管理数据与日志则通过/data、/logs两个预置目录挂载卷来持久化并牢记容器以非 root 的storm用户运行避免在未预定义路径上挂载引发权限错误。以此为起点即可进一步扩展为多 Supervisor 的生产级 Storm 集群。赞分享文档【免费下载链接】docsDocumentation for Docker Official Images in docker-library项目地址https://gitcode.com/gh_mirrors/docs/docs点击查看免费下载相关推荐Apache Storm Distributed RPC 完整实战DRPC 原理、拓扑构建与集群部署Apache Storm Distributed RPC 完整实战DRPC 原理、拓扑构建与集群部署 Distributed RPCDRPC是 Apach后端大数据Apache Storm 入门实战storm-starter 示例拓扑的运行、打包与集群部署指南Apache Storm 入门实战storm starter 示例拓扑的运行、打包与集群部署指南 storm starter 是 Apache Storm 官流处理后端大数据Apache Storm 入门实战storm-starter 示例拓扑全解析与本地/集群运行指南Apache Storm 入门实战storm starter 示例拓扑全解析与本地/集群运行指南 Apache Storm 的 examples/storm后端大数据创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。