引言
我們已經介紹了並行度的理論知識,這節課我們通過Storm UI界面參數來詳細分析Storm並行度有個更深刻的認識,以後我們進行Storm 並行度調優也基本都是通過這種方式進行的,如果你理解了,Storm那是相當簡單的,對於我們Java工程師完全夠用了,甚至比一些大數據工程師的理解還要深刻
開發環境
我們上節課,雖然搭建了三節點的Storm集群環境,但是我們不採用,搭建過程,你簡單瞭解就可以了,這節課我們使用的Storm單機環境
如果,你不熟悉Storm單機環境的搭建,請移步到我的頭條號,搜尋Storm相關的文章
1、啟動我們的Storm各組件
nohup sh $STORM_HOME/bin/storm dev-zookeeper &
nohup sh $STORM_HOME/bin/storm nimbus &
nohup sh $STORM_HOME/bin/storm supervisor &
nohup sh $STORM_HOME/bin/storm ui &
nohup sh $STORM_HOME/bin/storm logviewer &
2、部署我們的Storm程序
代碼下載地址:https://gitee.com/jikeh/JiKeHCN-RELEASE.git
項目名:spring-boot-storm
$STORM_HOME/bin/storm jar /usr/local/src/spring-boot-storm-0.0.1-SNAPSHOT-jar-with-dependencies.jar com.jikeh.Topology.NumberSumTopology
3、觀察Storm UI界面參數,來分析Storm並行度
http://192.168.199.147:8080
我們總結下:Storm的默認並行度
- 一個supervisor節點最多啟動4個worker進程
- 每一個topo默認佔用一個worker進程
- 每個worker進程會啟動一個executor(acker)
註釋:有很多對這個不太理解,其實,當我們提交一個topology作業的時候,如果沒有任何spout/bolt,就會只有一個executor,這個executor其實就是acker線程了。我們每new一個spout/bolt就會多一個線程。
- 每個executor(包括Acker線程)啟動一個task
4、Storm並行度調整
1)修改我們的Storm程序
- 修改worker數量
Config config = new Config();
config.setNumWorkers(2);
config.setNumAckers(0);
通過ui可以看到2個worker
通過jps也可以看到2個worker
- 修改executor數量
topologyBuilder.setSpout("number_spout_id", new NumberSourceSpout(), 2);
topologyBuilder.setBolt("sum_bolt_id", new NumberSumbolt(), 2).shuffleGrouping("number_spout_id");
- 修改task數量
topologyBuilder.setBolt("sum_bolt_id", new NumberSumbolt(), 2).setNumTasks(4).shuffleGrouping("number_spout_id");
- acker作用
一個worker會有一個acker,一個acker會跟蹤一個topology,保證tuple的可靠傳輸,我們這裡僅做簡單介紹,後面我們講storm可靠性的時候,會詳細講解acker的,歡迎持續關注接下來的視頻
運行中的topology我們能改變其並行度嗎(並行度動態調整)
答案是肯定的。
Storm 的一個很好的特性是可以增加或減少 worker 進程 和/或 executor(執行器)的數量, 而無需重新啟動集群或 topology(拓撲). 這樣做的行為稱之為 rebalancing(重新平衡).
您有兩個選項來 rebalance(重新平衡)一個 topology(拓撲):
- 使用 Storm web UI 來 rebalance(重新平衡)指定的 topology.
- 使用 CLI 工具 storm rebalance, 如下所示.
以下是一個使用 CLI 工具的示例:
## 重新配置 topology "mytopology" 以使用 5 個 worker 進程,
## 該 spout "blue-spout" 要使用 3 個 executors(執行器)並且
## 該 bolt "yellow-bolt" 要使用 10 executors(執行器).
$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
回顧
根據我們的講解,再看我們之前講的官網的那張圖,是不是就容易理解了,我們再次放上這張圖
![實戰案例分析Storm並行度,ui參數詳解及如何動態調整Storm並行度](http://p2.ttnews.xyz/loading.gif)
然後,再次請上我們之前發佈的文章,強烈建議你再讀一遍,以加深對Storm並行度的深入理解:
閱讀更多 極客慧 的文章