Storm學習記錄(四、併發機制和通訊機制)
阿新 • • 發佈:2019-01-13
一、併發機制
Worker – 程序:一個Topology拓撲會包含一個或多個Worker(每個Worker程序只能從屬於一個特定的Topology)
這些Worker程序會並行跑在叢集中不同的伺服器上,即一個Topology拓撲其實是由並行執行在Storm叢集中多臺伺服器上的程序所組成
Executor – 執行緒:Executor是由Worker程序中生成的一個執行緒
每個Worker程序中會執行拓撲當中的一個或多個Executor執行緒
一個Executor執行緒中可以執行一個或多個Task任務(預設每個Executor只執行一個Task任務),但是這些Task任務都是對應著同一個元件(
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);
舉例: