Storm(五)拓扑并行度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/congcong68/article/details/73017081

        Apache Storm分布式集群主要节点由控制节点(Nimbus节点)和工作节点(Supervisor节点),一个工作节点运行一个或者多个Worker 进程,Worker Topology的子集,Topology对应一个或者多个Worker

  Topology主要是由Worker ExecutorTask组成的,Topology对应一个或者多个worker(是一个独立的JVM 进程) worker 下又有多个Executor线程,Executor下对应一个或者多个Task,默认情况下一个Executor对应一个Task(spout\bolt),这些Task都是同一个spout\bolt组件。

  


 

        官方


   

   我们在创建拓扑时,并配置Worker的数量、Executor数量、Task数量,也就是并行度,提高拓扑的并行度,能提高拓扑的计算能力。

    说明:

      Worker数量:conf.setNumWorkers(num) /Config.TOPOLOGY_WORKERS

      Executor数量:builder.setBolt()/builder.setSpout()

      Task数量:builder.setBolt().setNumTasks(val)

  

  我们用官方的例子来进一步的理解:


  


  代码:

   

  Config conf = new Config();
  conf.setNumWorkers(2); // use two worker processes
  topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // set parallelism hint to 2
  topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2).setNumTasks(4).shuffleGrouping("blue-spout");
  topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6).shuffleGrouping("green-bolt");
  StormSubmitter.submitTopology("mytopology",conf,topologyBuilder.createTopology());

  

说明:

    1)这个拓扑有两个worker 进程(conf.setNumWorkers(2))

   2)BlueSpout有两个Executor线程,每一个Executor对应一个Task

   3)GreenBolt有两个Executor线程,每一个Executor对应两个Task

          4)YellowBolt有六个Executor线程,每一个Executor对应一个Task

   这个拓扑的总并行度就是 2 + 2 + 6 = 10,具体分配到每个worker 就有 10 / 2 = 5 executor

          BlueSpout并行度是2、GreenBolt并行度是2、YellowBolt是六,提高拓扑的并行度,能提高拓扑的计算能力。



 我们通过storm的demo例子,我们在storm ui 可以看到拓扑两个worker,Executors、各个bolt\spout的并行度信息

   

   

 




猜你喜欢

转载自blog.csdn.net/congcong68/article/details/73017081
今日推荐