storm记录--9- Storm Topology的并发度

Storm原理与代码实例讲解 Storm原理与代码实例讲解 1.背景介绍 1.1 大数据处理的挑战 在当今大数据时代,海量数据的实时处理已成为许多企业面临的重大挑战。传统的批处理框架如Hadoop MapReduce已无法满足实时性要求,因此流式计算框架应运而生。 阅读详情

Storm Topology的并发度

Understanding the parallelism of a Storm topology

https://github.com/nathanmarz/storm/wiki/Understanding-the-parallelism-of-a-Storm-topology

概念

一个Topology可以包含一个或多个worker(并行的跑在不同的machine上), 所以worker process就是执行一个topology的子集, 并且worker只能对应于一个topology。

一个worker占用一个supervisor端口,worker对应Java中的进程,拥有独立的jvm。

一个worker可用包含一个或多个executor, 每个component (spout或bolt)至少对应于一个executor, 所以可以说executor执行一个compenent的子集, 同时一个executor只能对应于一个component。

Task就是具体的处理逻辑对象, 一个executor线程可以执行一个或多个tasks。但一般默认每个executor只执行一个task, 所以我们往往认为task就是执行线程, 其实不然。task代表最大并发度, 一个component的task数是不会改变的, 但是一个componet的executer数目是会发生变化的。当task数大于executor数时, executor数代表实际并发数。

A worker process executes a subset of a topology. 
A worker process belongs to a specific topology and may run one or more executors for one or more components (spouts or bolts) of this topology. 
A running topology consists of many such processes running on many machines within a Storm cluster.

An executor is a thread that is spawned by a worker process. It may run one or more tasks for the same component (spout or bolt).

A task performs the actual data processing — each spout or bolt that you implement in your code executes as many tasks across the cluster. 
The number of tasks for a component is always the same throughout the lifetime of a topology, but the number of executors (threads) for a component can change over time. This means that the following condition holds true: #threads ≤ #tasks. 
By default, the number of tasks is set to be the same as the number of executors, i.e. Storm will run one task per thread.

image

Configuring the parallelism of a topology, 并发度的配置

The following sections give an overview of the various configuration options and how to set them in your code. There is more than one way of setting these options though, and the table lists only some of them.

Storm currently has the following order of precedence for configuration settings:

defaults.yaml < storm.yaml < topology-specific configuration < internal component-specific configuration < external component-specific configuration

对于并发度的配置, 在storm里面可以在多个地方进行配置, 优先级如上面所示... 
具体包含,

worker processes的数目, 可以通过配置文件和代码中配置, worker就是执行进程, 所以考虑并发的效果, 数目至少应该大于machines的数目

executor的数目, component的并发线程数,只能在代码中配置(通过setBolt和setSpout的参数), 例如, setBolt("green-bolt", new GreenBolt(), 2)

tasks的数目, 可以不配置, 默认和executor 1:1, 也可以通过setNumTasks()配置

Number of worker processes
  • Description: How many worker processes to create for the topology across machines in the cluster.

  • Configuration option: TOPOLOGY_WORKERS

  • How to set in your code (examples):

Number of executors (threads)
  • Description: How many executors to spawn per component.

  • Configuration option: ?

  • How to set in your code (examples):

Number of tasks

Here is an example code snippet to show these settings in practice:

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)               .setNumTasks(4)               .shuffleGrouping("blue-spout);

In the above code we configured Storm to run the bolt GreenBolt with an initial number of two executors and four associated tasks. Storm will run two tasks per executor (thread). If you do not explicitly configure the number of tasks, Storm will run by default one task per executor.

Example of a running topology

The following illustration shows how a simple topology would look like in operation. 
The topology consists of three components: one spout called BlueSpout and two bolts called GreenBolt and YellowBolt. 
The components are linked such that BlueSpout sends its output to GreenBolt, which in turns sends its own output to YellowBolt.

image

Config conf =  Config();conf.setNumWorkers(2); // use two worker processestopologyBuilder.setSpout("blue-spout",  BlueSpout(), 2); // set parallelism hint topologyBuilder.setBolt("green-bolt",  GreenBolt(), 2)                .setNumTasks(4)        //set tasks number to 4                          .shuffleGrouping("blue-spout");topologyBuilder.setBolt("yellow-bolt",  YellowBolt(), 6)               .shuffleGrouping("green-bolt");StormSubmitter.submitTopology(        "mytopology",        conf,        topologyBuilder.createTopology()    );

图和代码, 很清晰, 通过setBolt和setSpout一共定义2+2+6=10个executor threads 
并且同setNumWorkers设置2个workers, 所以storm会平均在每个worker上run 5个executors
而对于green-bolt, 定义了4个tasks, 所以每个executor中有2个tasks

How to change the parallelism of a running topology, 动态的改变并发度

Storm支持在不restart topology的情况下, 动态的改变(增减)worker processes的数目和executors的数目, 称为rebalancing. 
通过Storm web UI, 或者通过storm rebalance命令, 见下面的例子

A nifty feature of Storm is that you can increase or decrease the number of worker processes and/or executors without being required to restart the cluster or the topology. The act of doing so is called rebalancing.

You have two options to rebalance a topology:

  1. Use the Storm web UI to rebalance the topology.

  2. Use the CLI tool storm rebalance as described below.

Here is an example of using the CLI tool:

# Reconfigure the topology "mytopology" to use 5 worker processes,# the spout "blue-spout" to use 3 executors and# the bolt "yellow-bolt" to use 10 executors.$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10


高频面波成像实战:从频散曲线到全波形反演 面波勘探是近地表工程勘察的重要手段,其核心原理在于不同频率的面波对地下介质的敏感深度不同,由此形成的频散曲线能够反映浅层剪切波速结构。相较于传统钻探与折射波法,高频面波成像具有无损、高效、对低速夹层敏感等优势,广泛应用于路基检测、空洞探测、滑坡调查等领域。在实际工程中,从野外采集的排列设计、震源选型,到频散谱提取与频散曲线反演,每一步都直接影响成像精度。然而频散反演受限于一维层状假设,难以刻画横向剧烈变化的地质体。全波形反演通过拟合完整波形信息,能够突破频散曲线的分辨率边界,获得更精细的近地表速度模型。本文 阅读详情

相关推荐

使用HFSS仿真分支波导耦合器

本文介绍了分支波导耦合器的HFSS仿真设计过程。首先给出了器件关键参数(t=0.365mm,l=1.600mm等),详细说明了建模步骤:包括创建中心分支、设置变量参数、镜像复制两侧分支、矩形波导端口设计等操作。重点阐述了激励端口设置方法,包括四个端口的积分线绘制,以及求解频率设定。最后展示了S参数、幅度平衡度和相位差等关键性能指标的仿真结果提取方法。整个设计过程体现了HFSS在微波器件仿真中的参数化建模和结果分析能力。

shao666888的博客 179

Storm并发度详解

工作进程(Worker Process) Worker是Spout/Bolt中运行具体处理逻辑的进程。拓扑跨一个或多个Worker进程执行。每个Worker进程是一个物理的JVM和拓扑执行所有任务的一个子集。例如,如果合并并行度的拓扑是300,已经分配50个Worker,然后每个Worker将执行6个任务,Storm会尝试在所有Worker上均匀的发布任务。 执行器(Executor)

lavimer 5014

华为铁三角(AR、SR、FR)的考核指标设计

以和为核心,通过和实现协同。考核维度分为和,并随市场阶段动态调整权重。

从技术实践立足,从项目管理方法论延伸思考 2768

Storm Topology的并发度 (task和executor工作模型)

Understanding the parallelism of a Storm topology https://github.com/nathanmarz/storm/wiki/Understanding-the-parallelism-of-a-Storm-topology   概念 一个Topology可以包含一个或多个worker(并行的跑在不同的machine上

原创学无止尽 1347

夸克缓存视频合并小工具

原理 使用windows的命令行的copy命令来合并 copy /b 0+1+2+3 new.ts 分析缓存目录结构,发现都是一个m3u8文件带一个同名文件夹 所以分析m3u8并把原来的路径换成这个缓存文件夹路径并按顺序合并即可。 其中碰到的难点是Qprocess在windows不好使,索性直接存成.bat批处理文件再执行 还有就是中文问题,具体在代码里都说了。 代码 (环境Qt5.7.0) 这是mainwindow.h #ifndef MAINWINDOW_H #defin.

natural_Caduceus 1万+

手把手教你设计STM32的JTAG电路:从原理图到PCB布局(含JLINK连接详解)

本文详细介绍了STM32的JTAG电路设计全流程,从核心原理、接口规范到PCB布局布线技巧,特别包含JLINK调试器的连接与配置方法。通过信号滤波、上拉配置和防反接保护等关键设计要点,帮助开发者构建稳定可靠的JTAG调试环境,提升嵌入式开发效率。

weixin_29159441的博客 388

【Storm总结-2】关于Storm 中Topology的并发度的理解

主要思想来源于storm的项目页面: https://github.com/nathanmarz/storm/wiki/Understanding-the-parallelism-of-a-Storm-topology 其中加入了一些个人的理解,所以就把文章mark成原创了,实际上大部分还是人家的东西。其实翻译这个文章的人也挺多,我看了几个,总是感觉有点绕,所以干脆自己总结一下。目标是简单明了的

Derekjiang的笔记簿 1万+

iOS开发者必备:从越狱设备里提取IPA的三种方法(含Filza、iTools实战)

本文详细介绍了iOS开发者从越狱设备提取IPA文件的三种实用方法,包括使用Filza文件管理器、AFC2配合桌面工具以及命令行高级技术。内容涵盖环境准备、操作步骤和技术原理,帮助开发者高效获取应用包文件,适用于逆向工程、测试分析等场景。

weixin_28717969的博客 804

storm 并发度

storm的并发跟spark还是差异很大的。首先strom的topology可以指定worker的个数,woker下面可以指定多少个executor,这个executor就是并发数了,但是还有个task的概念。这个跟spark的概念是非常不同的。因为executor在spark中代表的是一个线程池,task就是一个个的线程。但是storm中的概念并不是这样的,首先来了解一下storm单线程和多线程

跟我一起去征服 845

手把手教你用Qt和DSP28335实现串口Bootloader,附赠源码和避坑指南

本文详细介绍了如何使用Qt和DSP28335实现串口Bootloader,包括开发环境搭建、通信协议设计、Qt上位机开发、DSP端Bootloader核心实现以及应用程序工程的特殊配置。通过实战案例和源码分享,帮助开发者快速掌握嵌入式固件升级技术,提升工业设备远程升级的效率和可靠性。

weixin_29176179的博客 133

Python批量注册脚本开发详细

开发一个Python批量注册脚本需要考虑多个方面,包括目标网站的注册流程、验证码处理、请求发送、数据存储等。以下是一个详细的开发流程和代码示例,用于实现基本的批量注册功能。

nsp202505的博客 3343

storm学习-Storm Topology的并发度(转)

转自:http://www.51studyit.com/html/notes/20140329/45.html 概念    一个Topology可以包含一个或多个worker(并行的跑在不同的machine上), 所以worker process就是执行一个topology的子集, 并且worker只能对应于一个topology    一个worker

deyu1982的专栏 518

Vue3 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档、excel电子表格、ppt演示文稿(docx|xlsx|pptx|pdf|txt等文件)完美兼容

vue3,nuxt3,下载预览,如何预览pdf文档,打开查看,office全套文档,实现在线预览文件,小程序内预览word文件,手机h5移动端网页,nuxt文档在线预览,预览office最好用的插件,office,文档,文件,查看预览,弹框预览,文档无法解析,打不开,报错,失效,保存下载,vue前端预览并下载doc、xls、pdf、txt及图片,下载查看,Office在线预览,vue-office,vue如何使用vue-office教程示例,word文档,ppt,exce表格,预览电子文件,vue在线预览

🏆 前端领域优质创作者 1万+

storm提交topology时supervisor无法创建worker

问题描述   在本地eclipse运行是好好的,可是提交到集群上去之后什么都没反应。提交topology之后,在storm UI上看topology的worker数与在程序里设置的值是一样的,但是到对应的机器去查看的时候,发现那个worker并没有存在,在日志目录下也没有找到worker的日志,提交topology也并没有报什么错误提示,所以很茫然,此时倒是很希望它弄出一个错误出来好去定位问题,

panguoyuan的专栏 3203

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

storm(Topology)中的ExclamationTopology.java分析

通过对ExclamationTopology分析topology

l_lushuang的博客 1095

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Storm安装记录

首先,在官网上下载安装包,本文采用的是apache-storm-0.9.5.zip。 放到指定机器上/usr/local 解压后编辑配置文件conf/storm.yaml: 然后修改环境变量: export STORM_HOME=/usr/local/apache-storm-0.9.5 export PATH=$STORM_HOME/bin:$PATH 然后需要把zookeep

黄刚的技术博客 640

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Storm源码浅析之topology的提交

最近一直在读twitter开源的这个分布式流计算框架——storm的源码,还是有必要记录下一些比较有意思的地方。我按照storm的主要概念进行组织,并且只分析我关注的东西,因此称之为浅析。 一、介绍 Storm的开发语言主要是Java和Clojure,其中Java定义骨架,而Clojure编写核心逻辑。源码统计结果: &lt;!– Code highlighting produce...

caodaoxi的专栏 118

Storm中关于Topology的设计

一:介绍Storm设计模型 1.Topology   Storm对任务的抽象,其实 就是将实时数据分析任务 分解为 不同的阶段       点: 计算组件   Spout   Bolt   边: 数据流向    数据从上一个组件流向下一个组件  带方向   2.tuple   Storm每条记录 封装成一个tuple   其实就是一些keyvalue对按顺序排列   方便组件获取数据   3.Sp...

weixin_34268753的博客 171

Storm 流式计算框架介绍

Storm流式计算框架介绍

weixin_44911248的博客 4708

Storm实时计算框架核心原理与实战指南

实时计算是处理流式数据的关键技术,通过持续处理数据流实现毫秒级响应。其核心原理基于分布式架构和流水线模型,采用Spout-Bolt拓扑结构实现数据采集与处理解耦。Storm作为经典实时计算框架,凭借其高吞吐、低延迟特性,在金融风控、实时推荐等场景展现技术价值。通过ZooKeeper协调集群状态,结合Kafka等消息队列实现可靠数据传输,开发者能构建PB级处理能力的实时系统。本文以WordCount示例详解Topology开发流程,并给出Worker配置、并行度设置等工程实践要点,帮助开发者掌握Storm集群

weixin_30635053的博客 345

storm学习(三)——storm任务提交流程

笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据助跑每一个人,欢迎直筒们关注我的公众号,大家一起讨论数据中的那些有趣的事情。 我的公众号为:livandata

livan1234的博客 4741

从storm0.8.1升级到storm0.9.0.1实践

本文描述了storm0.9.0.1安装的过程以及和storm0.8.1版本相比较发生的变化。

1869

storm(一) 集群架构

storm关键概念 storm不用来处理静态数据,主要用来处理动态数据 storm 架构 Nimbus:管理节点,用于提交 Supervisor:从节点,接受来自于Nimbus节点的任务,管理Worker Worker:工作进程,具体执行业务的工作进程 Executor:工作线程,一个实际的物理线程 Spout / Bolt:计算模型节点,也叫task,多个task可能公用一...

designer01的博客 518

Storm在Zookeeper中的目录结构

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

1678

Storm

2、Storm介绍 2.1. Storm的简介 http://storm.apache.org/ Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍。 大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。 2.3. Storm的特性 适用场景广泛: storm可以实时处理消息和更新DB,对一个数据量进行持续的查询并返回客户端

忄凝^的博客 961
上一篇: Java记录 -11- 面向对象之封装续II
下一篇: storm记录--10- Storm消息机制
架构师的清醒
博客等级 码龄14年 291粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值