實戰案例分析Storm並行度,ui參數詳解及如何動態調整Storm並行度

引言

我們已經介紹了並行度的理論知識,這節課我們通過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(拓撲):

  1. 使用 Storm web UI 來 rebalance(重新平衡)指定的 topology.
  2. 使用 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並行度

然後,再次請上我們之前發佈的文章,強烈建議你再讀一遍,以加深對Storm並行度的深入理解:


分享到:


相關文章: