Storm(五)拓撲並行度

        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的並行度信息

   

   

 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章