storm(四) 并行度

2024-02-25 19:08
文章标签 并行度 storm

本文主要是介绍storm(四) 并行度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概念

worker

  • 一个实体机可以运行一个或者多个worker
  • 一个worker只能运行一个topology上的部分或全部component
  • 一个worker是一个独立的进程
  • 在运行过程中可以调整worker的数量

executor

  • 一个worker中可以运行多个executor
  • 一个executor是一个线程
  • 一个executor可以运行一个或者多个task,这些task必须是同一类型
  • executor的数量<=task的数量
  • 默认情况下一个executor中运行一个task
  • executor的数量在topology的运行过程中可以动态调整,storm的并行度调整主要针对的就是executor

task

  • 具体操作数据的bolt或者spout
  • 在整个topology运行状态中,task的数量是固定的不能改变的

这里写图片描述

对于并行度的概念,最准确的还是要看官方的:http://storm.apache.org/releases/1.2.2/Understanding-the-parallelism-of-a-Storm-topology.html

并行度调整

调整并行度有几种方法,这里我选择的是直接在代码中进行设置

设置worker

  • 关闭acker,将worker进程设置成2
  • 由于现在有两个worker,两个executor(见下面截图),所以两个executor被平均分配给了两个worker,在我们这里就是一个生产一个消费(从打印的日志可以看出来)
Config config=new Config();
config.setNumWorkers(2);
config.setNumAckers(0);
StormSubmitter.submitTopology("SumTopology",config,topology);

 

 

设置executor

  • 默认一个executor对应一个task,这里我设置executor的数量为3,所以task也为3
builder.setBolt("countNum",new SumBolt(),3).shuffleGrouping("createNum");

 

设置task

  • 默认情况下一个executor下只有一个task,但是当设置的task的数量大于executor的时候,一个executor上就可能有多个task
 builder.setSpout("createNum",new NumSpout());builder.setBolt("countNum",new SumBolt(),3).setNumTasks(6).shuffleGrouping("createNum");

设置acker

  • 设置acker的方式在第一个例子中已经示范过,这里就不在演示了
  • 不过一般并不建议将acker关闭,这样将无法保证数据的可靠性

动态设置并行度

  • 这里我使用的是命令行的方式,至于storm ui的方式没搞懂
  • 这里我将worker改成1个,createNum改为2个executor,countNum改为2个executor注意这里没有调整task
  • 所谓的并行调整其实就是重新分配:task所在的executor,executor所在的worker。task是真正做事的bolt、spout。所以如果task数量不够,即使将executor、worker的数量设置的再大也没有用
docker run --link nimbus:nimbus -it --rm storm 
storm rebalance SumTopology -n 1 -e createNum=2 -e countNum=2

 

这篇关于storm(四) 并行度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746420

相关文章

处理List采用并行流处理时,通过ForkJoinPool来控制并行度失控的问题

在使用parallelStream进行处理list时,如不指定线程池,默认的并行度采用cpu核数进行并行,这里采用ForJoinPool来控制,但循环中使用了redis获取key时,出现失控。具体上代码。 @RunWith(SpringRunner.class)@SpringBootTest(classes = Application.class)@Slf4jpublic class Fo

Storm浅析

本文分为几个模块: 1:Storm的原理和基本架构 2:Storm的应用场景及实例 3:Storm与Spark的比较 下面开始介绍,参考资料会列在文章末尾。 1:Storm的原理和基本架构 (1)原理及核心概念 分布式的实时计算系统,能够可信任的处理大量的流式数据,就好比Hadoop对于批量数据进行的处理一样;通常来说,Hadoop能够进行大批量数据的离线处理,但是在实时计算上的表现

storm安装、运行

环境:centos6.4 软件: jzmq-master-----java与c++通讯的桥梁,有了它,就可以使用zeromp了(提供了接口,把数据放入到zeromq中) storm-0.8.2 zeromq-2.1.7-----号称史上最牛逼的消息队列(用c++写的) zookeeper-3.4.5 1.编译安装ZMQ: tar -xzf zeromq-2.1.7.tar.gz cd ze

二、Topology的并行度

1、几个概念 Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程,这个工作进程就是worker。一个topology可能会在一个或者多个工作进程里面执行,每个工作进程执行整个topology的一部分。每一个worker都会占用工作节点的一个端口,这个端口可以在storm.yarm中配置。 每一个Spout和Bolt会被当作很多task在整个集群里面执行。

一、storm基础概念

1、什么是storm        Storm是一个分布式的、高容错的实时计算系统。 Storm对于实时计算的的意义相当于Hadoop对于批处理的意义。Hadoop为我们提供了Map和Reduce原语,使我们对数据进行批处理变的非常的简单和优美。同样,Storm也对数据的实时计算提供了简单Spout和Bolt原语。 Storm适用的场景: (1)、流数据处理:Storm可以用来用来处理源源不断的

Storm AI : 最佳长文写作工具

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:       正如Storm其名,这场风暴已经在欧美学术圈开始刮起来了。想象一下,当你准备写一篇论文或者一部长篇报告时,只需要告诉Storm你的写作主题是什么,它就能自动帮你全网深挖资料和收集多维度的参考信息,创建好大纲。接下来Storm还会扮演专家与你来上几轮对话问答,并在随后的几秒钟内将你的主题转换为长

Storm计算框架

工作流程 主要组件 streams spouts Bolt Tuple Topology stream grouping

Apache Storm:入门了解

前言 Storm 是一个开源的分布式实时计算系统,它能够处理无边界的数据流,类似于 Hadoop 对于批量数据处理的作用,但是 Storm 更侧重于实时数据流的处理。以下是关于 Storm 的一些关键特性及其应用场景的详细介绍: 特性 实时处理: Storm 能够实时处理数据流,而不是像 Hadoop 那样需要先收集一批数据再进行处理。它可以持续不断地处理数据,这意味着一旦数据到达,就

Storm在Zookeeper中的目录结构

Posted by WeYo. 转载请注明出处:http://weyo.me/pages/techs/storm-with-zookeeper/ 本文主要参考自 xumingming 的博文 Twitter Storm源代码分析之ZooKeeper中的目录结构。由于新版本的 Storm 在架构上有了较大的变化,相应的目录结构也有了一些改变。本文主要针对 0.9.x 版本的 Storm

Storm中遇到的日志多次重写问题(一)

原文: http://www.cnblogs.com/zpfbuaa/p/5974000.html 业务描述:   统计从kafka spout中读取的数据条数,以及写入redis的数据的条数,写入hdfs的数据条数,写入kafaka的数据条数。并且每过5秒将数据按照json文件的形式写入日志。其中保存为json数据的格式为:时间戳 + 进程名称 + 读kafka数据条数 + 写入