Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Topologyを起動中にどこまで何が変更できるの?

こんにちは。kimukimuです。

4月になり、花粉も徐々に収まってきたので最近快適ですね!
花粉症仲間(?)の皆さまであれば同意していただけると思います。

にしても、スギ花粉が何故こんなに飛んでいるのかというと、
本の森林の3割はスギとヒノキでしめられているから・・・だそうです。

別に偶然というわけではなく、人間がスギを植え続けた結果、今日みたいな状況を招いたようですね。
もしかすると、当時は花粉症なんてものが存在せず、花粉症が広まることもわからなかったのかもしれません。

ともあれ、花粉対応ということでStormという名前のプロダクトを使い続けようと思います。
・・・冗談ですよ、冗談。

1.Topologyを起動したまま、何が変えられるのか?

前回Topologyの切り替えを行うためにTopologyの起動を早くするための方法について書きました。
そのため、今回はその関連ということで、「Topologyを起動したまま、何が変えられるのか?」について確認してみます。

Stormにはrebalanceコマンドがあり、Workerプロセスその他の再配分が可能になっています。
このコマンドで何がどこまで出来るのかを確認してみます。

まずは、stormコマンドのヘルプを確認します。

[root@hyperion storm]# bin/storm help rebalance
Syntax: [storm rebalance topology-name [-w wait-time-secs] [-n new-num-workers] [-e component=parallelism]*]

確認すると、設定可能な項目は下記の3点のようです。

  1. -w Rebalanceにおける待ち時間(Topologyをdeactivateしてからの待ち時間)
  2. -n Workerプロセスの数
  3. -e 各コンポーネントに対するExecutorの数

上記のうち実際に構成を変更するパラメータはWorkerプロセスの数と、Executorの数です。
2パラメータを実際に設定して試してみます。

2.Workerプロセス数の変更

では、早速Workerプロセス数を変更してみます。
まず、実行前のStormクラスタの状態が下記。Workerプロセス数は2であることがわかります。

その後、下記のコマンドを実行します。

[root@hyperion storm]# bin/storm rebalance DecisionTest -w 10 -n 1

すると、rebalanceが開始して・・・

Workerプロセスが1個になりました。

同じように下記のコマンドを実行すると・・・

[root@hyperion storm]# bin/storm rebalance DecisionTest -w 10 -n 4


今度はWorkerプロセスが4個になりました。
Workerプロセスの数はこうやってrebalance出来ることがわかりましたね。

3.Executor数の変更

では、次はExecutor数の変更です。
これは個々のコンポーネント(今回の場合、WordSpout、JudgeBolt等)に割り振ったスレッド数を
Taskの並列度(今回の場合、4)までの範囲で増減させることが可能になっているようです。

実際に試してみますね。
まず、最初にコンポーネントとスレッドの一覧を確認します。

コンポーネントの並列度は4で、Executorも4ずつ割り振られていることがわかります。

では、下記のコマンドを実行します。

[root@hyperion storm]#bin/storm rebalance DecisionTest -w 10 -n 2 -e WordSpout=2

すると、WordSpoutのExecutorの数が2になっていることがわかります。
Taskの並列度については変更できないようです。

更に下記のコマンドを実行します。

[root@hyperion storm]# bin/storm rebalance DecisionTest -w 10 -n 2 -e JudgeBolt=2 -e LongWord=3

すると、JudgeBoltとLongWordのExecutor数が変わることも確認できました。
WordSpoutのExecutor数変更も維持されるようです。

4.これらのパラメータってStorm-UIからも変更できるの?

こういうことが出来るんだとわかると、気になってくるのがStorm-UI(GUI)からどこまで出来るんだろうということですね。
そのため、実際にオプションを指定して試してみます。

すると・・・!

あらま。どうやらStorm-UIからはRebalanceにおける待ち時間しか設定できないようです。

残念ですが、構成を変更するにはコマンドラインから入力する必要があるというわけですね。

そのことがわかったところで、今回はここまでです。
それでは、また。