Storm学习之使用官方Docker镜像快速搭建Storm运行环境

这篇具有很好参考价值的文章主要介绍了Storm学习之使用官方Docker镜像快速搭建Storm运行环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.前言

Apache Storm 官方也出了Docker 镜像 https://hub.docker.com/_/storm/
本文我们就基于官方镜像搭建一个 Apache Storm 2.4 版本的运行环境,供大家后续学习。
有问题可以参考issue 解决,我的安装过程一路都很顺畅。所以基本上没有看下面是我的详细操作和截图
可以说网上的乱七八糟的教程不如官方文档来的实在。
如果想用虚拟机搭建,请参考我的上一篇文章《Centos7搭建Apache Storm 集群运行环境》

搭建完的效果

Storm UI虽然是Storm 的非必须组件,但是是非常有用,基本上离不开的组件,它可以展示很多信息,对我们平时排查问题很有帮助,
Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据

  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

Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据

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

Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据

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

Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据

1.4.docker 安装 storm-ui

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

Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据

1.5.查看已经启动的容器

docker ps -a

Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据

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

Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据

Storm学习之使用官方Docker镜像快速搭建Storm运行环境,大数据之Storm从入门到精通,storm,学习,docker,大数据
我们可以在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。本次我们就先到这里,大家如果需要继续可以开始写拓扑,尝试自己提交运行。文章来源地址https://www.toymoban.com/news/detail-631390.html

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

到了这里,关于Storm学习之使用官方Docker镜像快速搭建Storm运行环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用 Docker 快速上手官方版 LLaMA2 开源大模型

    本篇文章,我们聊聊如何使用 Docker 容器快速上手 Meta AI 出品的 LLaMA2 开源大模型。 昨天特别忙,早晨申请完 LLaMA2 模型下载权限后,直到晚上才顾上折腾了一个 Docker 容器运行方案,都没来得及写文章来聊聊这个容器怎么回事,以及怎么使用。 所以,现在就来聊聊如何快速上

    2024年02月16日
    浏览(40)
  • 如何利用Docker快速搭建一个支持java程序运行的环境(Ubuntu环境下)

    简单来说,docker是一种类似于虚拟机的虚拟技术。 但它们的不同之处在于,虚拟机占用了完全独立的内存,cpu,硬盘等资源,而docker只提供了完全独立的进程,而与其它进程公用计算机处理资源,在某种意义上来说,docker以更简单方便的方法实现了类似于虚拟机的体验效果,

    2024年02月01日
    浏览(52)
  • 【docker基础学习之】镜像构建

    下面是在工作过遇到的一些实际例子,谨以此作为笔记参考 部署(迁移)项目时发现,项目的excel导出功能报错,错误如下: 问题原因:我们这个项目依赖的镜像上的jdk缺少某种字体程序导致! 或者含 FontConfiguration 的报错 或者我们服务器上镜像的jdk版本是jdk8,而我们的项

    2024年03月15日
    浏览(36)
  • Docker容器的官方镜像仓库

    镜像仓库分类 公有仓库 私有仓库 官方镜像仓库属于公有仓库 网址: hub.docker.com        网站名称:dockerhub 注册邮箱 创建仓库 创建自己的仓库 登录仓库  web界面登录 linux命令行登录  直接docker login 输入用户名和密码 这个自己创建的存储库一般只有pull时才会登录 push上传

    2024年02月08日
    浏览(53)
  • docker 部署oracle(官方镜像)

    docker部署oracle,网上都说官方镜像下载慢。而且使用的都是阿里的registry。我试了下官方镜像,半个多小时pull完。也没多慢啊!下面就来说说安装和配置过程: 1、拉去镜像: 2、查看镜像: 3、创建并运行容器: 4、登录到容器: 或者sudo docker ps -a 查看容器id讲oracle11g替换成

    2024年02月15日
    浏览(38)
  • 【Docker】使用 Docker Registry 搭建自己的 Docker 镜像仓库

    在使用 Docker 进行应用程序的开发和部署时,使用 Docker 镜像仓库是一个很好的实践。它允许集中存储和管理 Docker 镜像,方便团队协作和版本控制。在本文中,将介绍如何使用 Docker Registry 搭建自己的 Docker 镜像仓库,并提供配置文件和配置说明。 Docker Registry 是官方提供的开

    2024年02月13日
    浏览(37)
  • etcd官方docker镜像及dockerfile问题处理

    解决下我之前etcd使用docker镜像启动的坑 1、问题镜像docker-file: 这个dockerfile看着看不出来问题,但如果有人真的执行我之前两篇文章的文件,就会有问题,什么问题呢,无法连接到etcd,由于我是刚装上docker,排查了一圈,包括docker网络及是否是本地docker的网络问题,排查了

    2024年01月21日
    浏览(36)
  • 记录一下拉取docker官方的镜像的超时问题

        我这个是使用的阿里云提供的免费试用的ECS服务器【规格信息:s6 1核 2GB,1Mbps 带宽,40GB 系统盘】,搜了一堆配置了他们说的国内源也没用,一直停留在 20.04: Pulling from library/ubuntu ,然后超时 error pulling image configuration: download failed after attempts=6: dial tcp 104.18.121.25:44

    2024年02月17日
    浏览(34)
  • 使用Docker快速搭建基础服务

    编辑broker.conf,并设置brokerIP1 上述方法需要我们单独对每一个服务进行启动,当基础服务多的时候,非常不方便,所以可以采用Docker-Compose的方式一键启动,以下是相关步骤 1.docker-compose手动安装 在这个目录下载docker-compose-Linux-x86_64: https://github.com/docker/compose/releases/tag/1.25.5

    2024年02月07日
    浏览(37)
  • 如何在 Linux 命令行下玩转 Docker——如何使用 Dockerfile 来构建和运行容器镜像

    作者:禅与计算机程序设计艺术 Docker 是一款开源的容器化技术,它利用 Linux 内核的容器特性,将应用部署到独立的进程环境中。基于容器技术可以极大地提高开发者和运维人员的效率,降低部署、测试和生产环节中的成本,有效地实现云计算资源的弹性伸缩。 本文主要介绍

    2024年02月07日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包