storm并行

storm实现并行的三个重要元素

worker:supervisor起的jvm节点,进程级别的计算资源

executor:worker内的线程,线程级的计算资源,每个worker可起多个executor

task:spout/bolt实例,也就是计算任务

一个storm集群,启动,并发布了topology后,大致是如下情况:

配置storm安装目录下,storm.yaml中的supervisor.slots.ports可指定一个supervisor最多可启动的worker数量

上图中,配置supervisor最多可启动6个worker节点。

一个拓扑需要多少计算资源,是发布之前在代码内进行配置,nimbus发布topology之后,会根据topology内各组件情况,分配至supervisor。

其中,executor,tasks是topology的主要配置项,topology的每个spout/bolt组件,都会配置executor,以及tasks,用以表明,此组件需要几个线程执行,执行多少个tasks。

如下例:


笔者构建的topology共有三个组件

spout:streamMaking   

bolt:step1Bolt

bolt:step2Bolt

各项并行配置为:

streamMaking:并行数4,

step1Bolt:并行数2,task4,也就是发布后,分配给step1Bolt的2个executor,每个executor将并发执行2个step1Bolt实例,一共执行step1Bolt4个实例

step2Bolt:并行数为1

可见,我的topology共需要7个线程资源,共会启动9个task实例。

假如,我共有两个supervisor节点,每个节点起了2个worker实例,

那么上述topology发布后,在storm中大致是如下情况:

storm UI监控展示如下:



合理的配置使用executor,以及并发task数,是实现storm并行的关键,当然,配置时,需要根据系统的使用资源,合理配置。

storm集群提供了worker进程级别的计算资源,我们在发布topology时,通常不希望不同topology的组件task分配至同一个worker内的不同线程执行,如何使用storm进行合理的资源隔离,将会在下一篇章进行介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容