Storm拓扑并发度怎么实现

71次阅读
没有评论

共计 1947 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要讲解了“Storm 拓扑并发度怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Storm 拓扑并发度怎么实现”吧!

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());

感谢各位的阅读,以上就是“Storm 拓扑并发度怎么实现”的内容了,经过本文的学习后,相信大家对 Storm 拓扑并发度怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1947字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)