Storm并行度

1、Storm并行度相关的概念

Storm集群有很多节点,按照类型分为nimbus(主节点)、supervisor(从节点),在conf/storm.yaml中配置了一个supervisor有多个槽(supervisor.slots.ports),每个槽就是一个JVM,就是一个worker,在每个worker里面可以运行多个线程叫做executor,在executor里运行一个topology的一个component(spout、bolt)叫做task。

1.并行度

  storm的并行是由非常多的supervisor完成的。

  storm的supervisor运行的是topology中的spout/bolt task。

  task是storm中进行计算的最小的运行单位,表示的是spout、bolt的运行实例。

  程序执行的最大粒度的运行单位是进程。在supervisor中,运行task的进程称作worker。

  supervisor节点上可以运行非常多的worker。

  在worker中可以运行线程的,这些线程称作executor。在executor中,运行task。

  

  总结一下,supervisor(节点)>worker(进程)>executor(线程)>task(实例)

    

2.配置

2.1 supervisor是storm集群配置的,执行storm supervisor时,产生一个supervisor节点。  

2.2 worker进程是在storm/conf/storm.yaml文件中选项supervisor.slots.ports配置的。

    worker进程数量也可以通过config.setNumWorkers(workers)设置。

2.3 executor是通过builder.setSpout(id, spout, parallelism_hint)builder.setBolt(id, bolt, parallelism_hint)设置的。

2.4 task是通过boltDeclarer.setNumTasks(num)设置的。

默认情况下,每个supervisor启动4个worker,每个worker启动1个executor,每个executor中会有1个task。

例如:

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

上面指定使用2个executor、4个task运行green-bolt,Storm会使用2个executor,每个executor运行2个task来运行green-bolt。

3、storm提供rebalance命令,可以在topology运行时动态调整并行度。

例如:

1
$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10

也可以在Web UI上面执行rebalance。

原文地址:https://www.cnblogs.com/lishouguang/p/4559209.html