文档章节

Storm 【技术文档】- 拓扑并发度

止静
 止静
发布于 2014/06/26 15:59
字数 825
阅读 252
收藏 0

有关Executor,worker,Tasks 的关系,请首先参考另外的一篇博文


1 Storm是按照下面三种主要的部分来区分Storm集群之中一个世纪运行的拓扑的:


1 : worker

2:Executor (线程)

3:tasks


下图简单的说明了他们的关系~ ,好的,这是一张重复发表的结构图:


 对于上文而言,一个Task,也就是  :

一个Executor 是一个worker 进程生成的一个线程,他可能运行着一个相同的组件 Spout和bolt的一个或者

多个task


1 个task执行着实际的数据处理,你用代码实现的每一个spout或bolt就相当于分布于整个集群中的许多个task。

在1个拓扑的生命周期中,1个组 件的task的数量总是一样的,但是1个组件的executor(线程)的数量可以随着时

间而改变。这意味着下面的条件总是成立:thread的数量 <= task的数量。默认情况下,task的数量与executor的

数量一样,例如,Storm会在每1个线程运行1个task。


配置拓扑的并发度

注意Storm的术语"并发度(parallelism)"是特别用来描述所谓的parallelism hint的,这代表1个组件的初始的executor(线程)的数量。在此文档中我们使用术语"并发度"的一般意义来描述你不但可以配置executor的数量,还可以配置worker进程的数量,还可以是1个拓扑的task的数量。在用到并发度的狭义的定义时我们会特别提出。

下面的小节给出了一些不同的配置选项,还有你如何在代码中设置它们。有多种方法可以进行设置,表格列举了其中几种。Storm目前有下列的配置优先级:defaults.yaml < storm.yaml < 特定拓扑的配置 < 内部特定组件的配置 < 外部特定组件的配置。


指标 1: worker 进程的数量

描述: 一个拓扑有多少个分布于集群中的机器的Wokrer 进程

配置选项: TopoLogy_workers

如何在代码中设置:   Config.setNumWorkers



指标 2: executor的数量 (线程)

描述 : 每个组件会有多好个 executor

配置选项 :

    TopologyBuilder.setPout();

    TopologyBuilder.setBolt();


指标 3:task的数量:

  • ComponentConfigurationDeclarer#setNumTasks()

       好比在具体的实践之中:

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

    在上面的代码中,我们配置了Storm运行GreenBolt指定了初始有

                                                                                                1:『 2 个executor 』

                                                                                                2:『4 个相关的task』


一个运行中的拓扑的例子

        

        下面我们来看看以下,简单的三元色, 蓝,绿,黄 三个bolt的的流动关系:

        



   在上图之中,总共的 parallellsm为10,一共有两个worker【也就是上图之中,2个比较大的分区】,每个Worker

具备有 10/2 =5 条线程


请注意

     绿色的Bolt配置成2个executor 和4个task,为此每个executor 为这个bolt 运行2个task


 以下的代码可以配置以上的说明组件:

        

Config conf = new Conf();
conf.setNumWorkers(2);          在这里我们使用两个Worker进程
topologyBuilder.setSpout("bule-spout",newBlueSpout(),2);   我们的blue不断产生数据,
topologyBuilder.setBolt("green-bolt",new GreenBolt(),2).setNumTasks(4).shuffleGrouping("blueSpout");
topologyBuilder.setBolt(“yellow-bolt”, new YellowBolt(), 6) .shuffleGrouping(“green-bolt”);
StormSubmitter.submitTopology( “mytopology”, conf, topologyBuilder.createTopology());




© 著作权归作者所有

止静
粉丝 122
博文 134
码字总数 125762
作品 0
东城
技术主管
私信 提问
Storm概念讲解和工作原理介绍

Strom的结构 Storm与传统关系型数据库 传统关系型数据库是先存后计算,而storm则是先算后存,甚至不存 传统关系型数据库很难部署实时计算,只能部署定时任务统计分析窗口数据 关系型数据库重...

张超
2015/04/26
2.9K
0
Apache Storm简介及安装部署

Apache Storm是一个分布式的、可靠的、容错的实时数据流处理框架。它与Spark Streaming的最大区别在于它是逐个处理流式数据事件,而Spark Streaming是微批次处理,因此,它比Spark Streaming...

风火数据
2018/07/20
0
0
Storm同步调用之DRPC模型探讨

  摘要:Storm的编程模型是一个有向无环图,决定了storm的spout接收到外部系统的请求后,spout并不能得到bolt的处理结果并将结果返回给外部请求。所以也就决定了storm无法提供对外部系统的同...

刘洋intsmaze
2017/09/28
0
0
Storm中的Stream grouping有哪几种方式?

在拓扑图中,每个bolt接受一个spout或者bolt的数据,但是每一个spout或者bolt有多个实例,因此哪一个接受哪一个bolt或者spout实例的数据需要stream grouping。 Storm定义了七种内置数据流分组...

无精疯
2018/04/19
70
0
Apache Storm 1.2.3 发布,分布式实时计算

Apache Storm 1.2.3 发布了,更新内容如下: 新特性 [STORM-3233] - zookeeper 客户端升级到最新版本 (3.4.13) 改进 [STORM-3077] - Disruptor 升级至 3.3.11 [STORM-3083] - HikariCP 升级至...

xplanet
2019/07/20
868
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 谨以此文怀念逝去的人

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 今天没歌曲 手机党少年们想听歌,请使劲儿戳(这里) 今天是周六, 刚想开始写乱弹的时候, 翻到了巴叔新建的话题上, @ 巴拉迪维:宏哥,一路...

小小编辑
今天
25
4
判断php变量是否定义,是否为空,是否为真的一览表

使用 PHP 函数对变量 $x 进行比较 表达式 gettype() empty() is_null() isset() boolean : if($x) $x = ""; string TRUE FALSE TRUE FALSE $x = null; NULL TRUE TRUE FALSE FALSE var $x; N......

Grayk
今天
19
0
服务器监控

1. 服务器监控内容有哪些? 答: 主要有服务监控 和 流量监控 2. 监控重点是? 答: 是 磁盘 和 流量,cpu是浮动的,意义不大 3. 怎样 实现 监控? 答:将 服务器 分为:监控者 和 被监管协议...

杨凯123
昨天
246
0
Apollo开发指南

一、准备工作 二、本地启动 2.1 Apollo Config Service和Apollo Admin Service 2.2 Apollo-Portal 2.3 Java样例客户端启动 2.4 .Net样例客户端启动 三、开发 3.1 Portal 实现用户登录功能 3....

Ciet
昨天
307
0
英文词汇 计算机网络中的专业英语单词及其缩写

学习计算机网络时,会阅读相关的专业文献。对于文献中经常出现的缩写形式的专业名词,做了一些积累。现于此博文中做个简单的分享,希望能对后来人有所帮助,平稳地入门计算机网络。 注:博文...

志成就
昨天
186
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部