1. 程式人生 > >Storm學習記錄(四、併發機制和通訊機制)

Storm學習記錄(四、併發機制和通訊機制)

一、併發機制

Worker – 程序:一個Topology拓撲會包含一個或多個Worker(每個Worker程序只能從屬於一個特定的Topology

這些Worker程序會並行跑在叢集中不同的伺服器上,即一個Topology拓撲其實是由並行執行在Storm叢集中多臺伺服器上的程序所組成

Executor – 執行緒:Executor是由Worker程序中生成的一個執行緒

每個Worker程序中會執行拓撲當中一個或多個Executor執行緒

一個Executor執行緒中可以執行一個或多個Task任務(預設每個Executor只執行一個Task任務),但是這些Task任務都是對應著同一個元件(

SpoutBolt)。

Task:實際執行資料處理的最小單元,每個task即為一個Spout或者一個Bolt

Task數量在整個Topology生命週期中保持不變,Executor數量可以變化或手動調整

(預設情況下,Task數量和Executor是相同的,即每個Executor執行緒中預設執行一個Task任務)

設定Worker程序數:

Config.setNumWorkers(int workers)

設定Executor執行緒數:

TopologyBuilder.setSpout(String id, IRichSpout spout, Number parallelism_hint

)

TopologyBuilder.setBolt(String id, IRichBolt bolt, Number parallelism_hint),其中, parallelism_hint即為executor執行緒數

設定Task數量

ComponentConfigurationDeclarer.setNumTasks(Number val)

Config conf = new Config() ;
conf.setNumWorkers(2);

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

舉例: 

 

二、通訊機制