如何設定Storm並行度
1.關於Storm並行,一些需要了解的概念
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(例項)
下面以一個節點為圖例說明下 storm並行度:
2. 如何具體設定Storm的並行度
2.1)supervisor: 在哪個節點上啟動supervisor, 就可以在該節點進入zk內檢視storm結果集
2.2)worker:storm.yaml中,如下指定了 worker程式的埠,以及當前機器下能執行的work數量
每個埠用於對應程式對外通訊的。
如下配置可以不配置,在storm的 storm-core-xx.jar中的default.xml中做了預設配置。
- supervisor.slots.ports: // 指定storm通訊埠
- - 6701
- - 6702
- - 6703
- - 6704
worker程式數量也可以透過config.setNumWorkers(workers)設定。(優先順序更高)
2.3) executor的設定:
builder.setSpout(id, spout, parallelism_hint): parallelism_hint設定spout的數量
builder.setBolt(id, bolt, parallelism_hint)設定的。parallelism_hint設定bolt的數量
2.4) task的設定:
task是透過 spout/boltDeclarer.setNumTasks(num)設定對應spout/bolt的task個數。
預設情況下,每個supervisor啟動4個worker,每個worker啟動1個executor,每個executor中會有1個task。
翻譯成人類語言: 每臺機器啟動4個程式,每個程式裡面跑一個執行緒,每個執行緒來具體執行一個 bolt/spout的例項
即: 可以透過 config設定程式個數 透過TopologyBuilder設定spout/bolt 各自的執行緒個數, 也能透過TopologyBuilder建立的對應的
Spout/BoltDecvlarer 來設定每個執行緒執行的具體task個數。
設定程式碼如下:
- public class MyStormTopology {
- /**
- * 並行度測試
- */
- public static void main(String[] args) throws Exception {
- //定義topology
- TopologyBuilder topologyBuilder = new TopologyBuilder();
- SpoutDeclarer spoutDeclarer = topologyBuilder.setSpout("1", new MySpout2()); // 定義spout
- //spoutDeclarer.setNumTasks(val);// 設定task數量
- //topologyBuilder.setSpout(id, spout, parallelism_hint); // 動態設定 spout的executor數量
- BoltDeclarer boltDeclarer = topologyBuilder.setBolt("2", new MyBolt1()).shuffleGrouping("1");// 定義bolt
- //boltDeclarer.setNumTasks(num); 動態設定 task數量
- //topologyBuilder.setBolt(id, bolt, parallelism_hint); 動態設定 bolt的executor數量
- // 在叢集中執行
- StormSubmitter stormSubmitter = new StormSubmitter();// storm叢集執行
- //HashMap conf = new HashMap();
- Config config = new Config();
- //config.setNumWorkers(workers); 動態設定每臺機器執行work程式數
- stormSubmitter.submitTopology(MyLocalStormTopology.class.getSimpleName(), config, topologyBuilder.createTopology());
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30316686/viewspace-2120629/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Storm系列(四)並行度和流分組ORM並行
- Storm 並行度分配原理及最佳化ORM並行
- 並行查詢並行度Degree與instances 設定並行
- oracle 中並行度的設定需要考慮的因素Oracle並行
- 如何安裝並設定 Vagrant
- [原始碼解析] 模型並行分散式訓練 Megatron (4) --- 如何設定各種並行原始碼模型並行分散式
- 10g RAC系統 索引並行度設定參考建議索引並行
- 重要 | Spark分割槽並行度決定機制Spark並行
- 如何使用jQuery設定div的長度和寬度jQuery
- MacBook Pro如何設定點按強度?Mac
- solaris中如何設定解析度?在solaris中設定解析度的方法教程
- Win10如何設定解析度 win10設定解析度的方法Win10
- 檢視錶並行度並行
- RMAN並行度衝突並行
- Oracle中的並行系列(二):你設定的並行真的生效了嗎?Oracle並行
- Linux 如何設定密碼複雜度?Linux密碼複雜度
- 如何設定span元素的寬度和高度
- 如何用css設定span元素的寬度CSS
- 分割槽索引的並行度索引並行
- CSS設定超出指定寬度自動換行CSS
- 表格寬度設定
- excel如何設定自動換行?Excel
- oracle表查詢的並行度Oracle並行
- storm安裝、執行ORM
- WeifenLuo元件中如何設定停靠窗體的寬度元件
- 安裝並設定autotrace
- vnc 解析度設定VNC
- VNC解析度設定VNC
- 設定Vim編輯器裡Tab的長度,行號
- 並行HINT並不一定起作用。並行
- 如何設定excel表格貼上到word後寬度不變Excel
- ActiveMQ第六彈:設定多個並行的消費者MQ並行
- 如何設定tomcat執行緒池大小?Tomcat執行緒
- Ubuntu設定滑鼠靈敏度Ubuntu
- jquery 定義物件並進行操作jQuery物件
- 聊聊Spark的分割槽、並行度 —— 前奏篇Spark並行
- EXPDP/IMPDP 中的並行度PARALLEL引數並行Parallel
- win10系統如何設定cf最佳解析度Win10