storm基础系列之一----storm并发度概念剖析
前言:
学了几天storm的基础,发现如果有hadoop基础,再理解起概念来,容易的多。不过,涉及到一些独有的东西,如调度,如并发度,还是很麻烦。那么,从这一篇开始,力争清晰的梳理这些知识。
在正式学习并发之前,有必要先明确几个基本概念的定义,以及具体作用。
一、基础概念
1.1 Topology 原意拓扑。可以把他理解为是hadoop中的job,他是把一系列的任务项组装后的一个结果。
1.2 Spout 是任务的一种,作用是读取数据,然后组装成一定的格式,发射出去。
1.3 Bolt 是另一种任务,接收Spout或者上级Bolt发射的任务,进行处理。处理后,也有发射功能,当然如果已经处理完成,也可以作为叶子节点不再发射。
1.4 worker 进程,占用独立的jvm,每台机器都可以拥有多个worker。一个Topology,出于分布式的设计,都会把任务分配到多台机器去执行。那么,相应的,也就是分给了一组可能不在同一台机器上的worker。 反过来理解,一个worker里有一个Topology的任务集合的子集,注意不会再包含另一个Topology的任务。
如图:
1.5 executor 执行者,就是我们在代码里,setspout或setbolt时,指定的数值。可以把他看做是线程。在一个work进程里,可以有多个线程。 每个组件component (spout或bolt)由一个或多个executor来执行。这一层概念,是细化到了Topology的内层,也就是具体每个Spout、Bolt上了。也就是说,这一段代码要并行执行的数目。
1.6 task 具体的逻辑处理单元。或者可以叫任务。有多少个task就实例化多少个组件(注意,实例化并不是执行,执行由executor来负责),通常情况下,一个executor线程可以执行一个或同时执行多个task任务,默认是一个。 task数不会改变,而executor数会变。当task数更大些时,实际并发数就是executor的数目。从这里可以看出,task也是从具体的组件层面来定义的。task是一个静态的概念,而executor是动态的概念,是执行者,比如,我配置了task=100,那么就有100个任务等待执行,我再配置executor=10,这意思就是有十个执行者(即10个线程)并发来执行者100个task(内存有100个对象,供调度执行)。
需要指出的是,executor的数量应该小于等于task数量。task可以不设置,不设置默认就是取的executor的数量。
这里有一张经典的图:
这张图中有一点可以指出,右边的那个executor里,是有两个task的,在这个线程里,会循环调用这两个task,不过这两个task应该是对应同一个组件的。
1.7 component 组件,值得是spout或者bolt。
1.8 nimbus 任务分发调度者,相当于JobTracker。
1.9 supervisor 作业执行者,相当于taskTracker。
二、并发度配置
2.1 理清了上述的概念,那么接下来我们梳理下,并发度配置的相关细节:
worker,可在代码中或配置文件中配置。数目最好大于机器数目。conf.setNumWorkers(2)
executor,代码中配置,setBolt(),setSpout()
task数目,代码中配置,setNumTasks()如果不配置,默认取executor数目。
2.2 动态改变并发度
可变的是worker和executor的数目,可通过命令或者webUI
其中命令的为:
storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
以上就是关于storm一些基本概念,以及概念之间的联系。
因为今天提交了两个Topology,出现了一些错误,于是重新回顾这个关系:
再次总结:
每个worker只会处理一种Topology里的component。
可能是多个worker一起处理一个Topology。
executor是线程,处理具体的component。
task是具体component的实例,可以不指定,不设定的时候,num就是executor的数量。
storm基础系列之一----storm并发度概念剖析的更多相关文章
- Storm概念学习系列之storm的可靠性
这个概念,对于理解storm很有必要. 1.worker进程死掉 worker是真实存在的.可以jps查看. 正是因为有了storm的可靠性,所以storm会重新启动一个新的worker进程. 2.s ...
- Storm概念学习系列之storm的设计思想
不多说,直接上干货! storm的设计思想 在 Storm 中也有对流(Stream)的抽象,流是一个不间断的.无界的连续 Tuple(Storm在建模事件流时,把流中的事件抽象为 Tuple 即元组 ...
- Storm概念学习系列之storm的雪崩
不多说,直接上干货! Storm的雪崩问题的解决办法1: Storm概念学习系列之并行度与如何提高storm的并行度 Storm的雪崩问题的解决办法2:
- Storm概念学习系列之storm的定时任务
不多说,直接上干货! 至于为什么,有storm的定时任务.这个很简单.但是,这个在工作中非常重要! 假设有如下的业务场景 这个spoult源源不断地发送数据,boilt呢会进行处理.然后呢,处理后的结 ...
- Storm概念学习系列之storm流程图
把stream当做一列火车, tuple当做车厢,spout当做始发站,bolt当做是中间站点!!! 见 Storm概念学习系列之Spout数据源 Storm概念学习系列之Topology拓扑 Sto ...
- Storm概念学习系列之storm核心组件
不多说,直接上干货! Storm核心组件 了解 Storm 的核心组件对于理解 Storm 原理非常重要,下面介绍 Storm 的整体,然后介绍 Storm 的核心. Storm 集群由一个主节点和多 ...
- Storm概念学习系列之storm简介
不多说,直接上干货! storm简介 Storm 是 Twitter 开源的.分布式的.容错的实时计算系统,遵循 Eclipse Public License1.0. Storm 通过简单的 API ...
- storm基础系列之二----zookeeper的作用
在storm集群中,我们常常使用zookeeper作为协调者.那么具体发挥的是什么作用呢? 概括来说,zookeeper是nimbus和supervisor进行交互的中介.具体来说有二: 1.nimb ...
- storm基础系列之五---------接入数据收集系统flume
1.基本结构介绍 flume是三层架构,agent,collector,storage.每一层都可水平扩展. 其中,agent就是数据采集方:collector是数据整合方:storage是各种数据落 ...
随机推荐
- Spring的依赖注入怎么理解
先看一段代码假设你编写了两个类,一个是人(Person),一个是手机(Mobile). 人有时候需要用手机打电话,需要用到手机的dialUp方法. 传统的写法是这样: Java code public ...
- System Sounds: Alerts and Sound Effects
#include <AudioToolbox/AudioToolbox.h> #include <CoreFoundation/CoreFoundation.h> // Def ...
- Swift-----类型转换 、 嵌套类型 、 扩展 、 协议 、 访问控制
使用is和as操作符判断和转换数组中的对象类型 1.1 问题 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例.在Swift中使用is和as操作符实现类型转换. 本案例定义一个媒体类 ...
- NLP中word2vec的CBOW模型和Skip-Gram模型
参考:tensorflow_manual_cn.pdf Page83 例子(数据集): the quick brown fox jumped over the lazy dog. (1)CBO ...
- Gradle简介和安装
一.Gradle介绍 Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具,可以切换的,基于约定的构建框架,强大的多工程构建支持,基于Apache Ivy的强大的依赖管理 ...
- Java设计模式(十二) 策略模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...
- PP生产订单创建、下达、报工、收货、投料
转自http://blog.sina.com.cn/s/blog_69fb8eb60102vpjd.html SAP 物料订单创建.下达.报工.收货与投料(ABAP代码) (2015-06-03 22 ...
- IntelliJ IDEA 工具常用快捷键
IntelliJ IDEA是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具(git.svn.g ...
- linux 下调试 汇编
gcc: -c 编译后汇编,不连接 -S 编译后停止,不进行汇编 -o 编译,汇编,连接 -g 生成调试信息 -gstabs 标识符 main gdb break *标识符 :设置断点 info re ...
- Linear Algebra Lecture5 note
Section 2.7 PA=LU and Section 3.1 Vector Spaces and Subspaces Transpose(转置) example: 特殊情况,对称 ...