storm并行

作者: 一品悟技术_张驰 | 来源:发表于2017-03-09 10:17 被阅读93次

    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进行合理的资源隔离,将会在下一篇章进行介绍。

    相关文章

      网友评论

        本文标题:storm并行

        本文链接:https://www.haomeiwen.com/subject/kocwgttx.html