温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Storm拓扑并发度怎么实现

发布时间:2021-12-23 14:13:12 来源:亿速云 阅读:160 作者:iii 栏目:云计算

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

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

1 : worker

2:Executor (线程)

3:tasks

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

Storm拓扑并发度怎么实现

 对于上文而言,一个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的的流动关系:

        Storm拓扑并发度怎么实现

   在上图之中,总共的 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拓扑并发度怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI