storm并行度核心概念介绍剖析
一.Storm的并行介绍
并行意味着多个任务在不同的节点上,且每个节点都可独立运行,并且相互之间没有依赖。
而在storm上,storm提交的jobs(任务)通过nimbus分发到多个supervisor上,jobs的执行都是通过supervisor来运行和执行的。
1.worker: 代表一个进程
在storm的配置文件storm.yml中supervisor.slots.port配置的个数,可以看做一个worker就对应一台机器上配置的slot。nimbus会把任务分发到不同的supervisor上,所有提交的job都是通过supervisor来执行和运行的。一个topology有多个spout bolt构成,一个work在执行时可能执行了一个topology中的spout 或者bolt,总之,work是一个进程级别的,由supervisor负责管理、启动、监控这个进程,然后再将运行后的数据反馈给nimbus。
2..executor:代表一个线程
每个executor只运行topology下的spout bolt中的一个或者多个实例,executor可以被动态的修改
storm提交的任务通过nimbus分发到不同的supervisor上,通过不同的supervisor来运行和执行任务,一个topology 由多个spout 或多个bolt 组成。
在supervisor的存在多个worker,而每一个worker可以执行topology,topology包含了spout bolt
3.task在storm是一个最小的粒度单元
其实可以把task理解成线程的run的方法体,每一个spout bolt都会生成一个实例由task去执行,一旦task被定义后,是不能被改变的。
当一个或多个executor执行一个或多个task实例时可以称为并行。
二.Storm并行度的算法
executor的算法: n [worker数量] + n[spout并行系数] + n[bolt并行系数]
ack是系统级运行线程,ack数量与worker数量相等,也相当于一个task任务
task的算法:
n[spout数量] + n[bolt数量] + n[worker数量]
三.Storm并行度的设置
Configure Work #进程的设置
Config config = new Config();
config.setNumWorkers(3);
Configure executor #线程的设置
builder.setSpout(“SampleSpout”,new SampleSpout(),2);
builder.setBolt(“SampleBolt”,new SampleBolt(),4).shuffeGrouping(“SampleSpout”);
Configure Task #task的设置
builder.setSpout(“sampleSpout”,new SampleSpout(),2).setNumTasks(4);
四.Storm 的rebalance
在我们配置完一些并行度的参数后,是不能再去修改,尤其是task的数量是不能更改的,但是可以通过storm 的rebalance 来调整work的数量以及spout 和bolt的数量
命令:
storm rebalance [topologyName] -n [NumberOfWorkers] -e [spout]=[NumberOfExecutors] -e[Bolt1]=[NumberOfExecutors] [Bolt2]=[NumberOfExecutors]
storm并行度核心概念介绍剖析的更多相关文章
- webpack的四个核心概念介绍
前言 webpack 是一个当下最流行的前端资源的模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后 ...
- ElasticSearch入门及核心概念介绍
Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识和原理以初学者的角度记录下来,如有不当,烦请指正! 0. 带着问题上路——ES是如何产生的? (1)思考:大 ...
- Apache Maven的入门使用之常用操作以及核心概念介绍(2)
我们接着上篇文章,来继续介绍Maven中几个核心的概念: POM (Project Object Model) Maven 插件 Maven 生命周期 Maven 依赖管理 Maven 库 POM ( ...
- Spring Security核心概念介绍
Spring Security是一个强大的java应用安全管理库,特别适合用作后台管理系统.这个库涉及的模块和概念有一定的复杂度,而大家平时学习Spring的时候也不会涉及:这里基于官方的参考文档,把 ...
- Maven入门-2.Maven一些核心概念介绍
1.Maven仓库2.Maven坐标3.Maven插件和目标4.Maven生命周期4.1 clean:清理项目4.2 default:构建项目(重要)4.3 site:建立项目站点 1.Maven仓库 ...
- Knative 核心概念介绍:Build、Serving 和 Eventing 三大核心组件
Knative 主要由 Build.Serving 和 Eventing 三大核心组件构成.Knative 正是依靠这三个核心组件,驱动着 Knative 这艘 Serverless 巨轮前行.下面让 ...
- 3.云原生之Docker容器三大核心概念介绍
转载自:https://www.bilibili.com/read/cv15181760/?from=readlist docker search --no-trunc=false [镜像名称] #搜 ...
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
由浅入深,主要介绍maven的用途.核心概念(Pom.Repositories.Artifact.Build Lifecycle.Goal).用法(Archetype意义及创建各种项目).maven常 ...
- [转]Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置
转自:http://www.trinea.cn/android/maven/ 两年半前写的关于Maven的介绍,现在看来都还是不错的,自己转下.写博客的一大好处就是方便自己以后查阅,自己总结的总是最靠 ...
随机推荐
- java 内部类简单总结
在java中,一个类可以放在另一个类的内部,称之为内部类,相对而言,包含它的类称之为外部类.不过对于Java虚拟机而言,它是不知道内部类这回事的, 每个内部类最后都会被编译为一个独立的类,生成一个独立 ...
- c实现单向链表
实现一个单向链表的:创建.插入.删除.排序(冒泡).逆向.搜索中间节点 #include <iostream> #include <stdio.h> #include < ...
- C#连接数据库时connectionStrings配置
<connectionStrings> <add name="ConnectionStringName" connectionString="Data ...
- linux中如何修改最大文件句柄数
1.使用ulimit -a可以查看,其中的open files后面的数就是最大文件句柄数 2.临时方法:使用ulimit -n size修改最大文件句柄数(这种方法只针对当前进程有效) 3.永久方法: ...
- GEOS库的编译
下载地址https://trac.osgeo.org/geos/ 选择最新的geos-3.6.2版本,下载 将geos-3.6.2放在VS2012文件夹下,本例是D:\VS2012 打开VS2012开 ...
- 关于Sign in with Apple 后台验证的一些记录
2019年10月9号 IOS端新增Sign in with Apple IOS真是世界上最垃圾的语言,没有之一,苹果是世界上最垃圾的公司,没有之一 关于Sign in with Apple 苹果官方 ...
- jar包中的依赖jar版本冲突
背景,项目中之前引入了一个 图片上传的jar <groupId>commons-fileupload</groupId> <artifactId>commons-f ...
- Ocelot 网关 和 consul 服务发现
服务发现 Consul 一.安装和启动 下载 [Consul](https://www.consul.io/downloads.html) 下载完成后,解压,只有一个consul.exe,把目录添加到 ...
- 如何查看linux内核中驱动的初始化顺序?
答:通过生成的System.map可以查看到,主要关注__initcall_<module_entry_function>_init<level>,如: __initcall_ ...
- TransitionDrawable
ayerDrawable的一个子类,TransitionDrawable只管理两层的Drawable!两层!两层! 并且提供了透明度变化的动画,可以控制一层Drawable过度到另一层Drawable ...