web-dev-qa-db-ja.com

ストームを止める:正しい方法

ストームを "kill XXX"で殺さずに停止するクリーンな方法はありますか(XXXはPIDです)?

「storm kill topology-name」を実行してトポロジを強制終了しますが、その後、ワーカー、ニンバス、スーパーバイザ、およびUIをシャットダウンするためのクリーンな方法はありますか?

ドキュメントからこれに対応するコマンドが見つかりませんでした: https://github.com/nathanmarz/storm/wiki/Command-line-client

17
zenbeni

トポロジーを強制終了するコマンド(正しく言及したとおり):

storm kill topology-name

クラスタをシャットダウンするには、各ノードで次のコマンドを実行する必要があります。

Sudo service supervisord stop

注:supervisordに数秒待って、すべてのプロセスをシャットダウンします。スーパーバイザ自体が停止しているときにsupervisorctlを実行しようとすると、エラーメッセージが表示されることに注意してください(これはスーパーバイザ2.xの既知のユーザーインターフェイスの問題のようです)

this ドキュメントから

ワーカープロセスを含むすべてのStormプロセスを強制終了する方法は?クラスターを停止しているときにたまたま実行されていた(スレーブノードのスーパーバイザーデーモンによって起動された)ワーカースレッドは、引き続き実行されます。これは、Nimbusデーモンとスーパーバイザデーモンのクラッシュ/再起動がStormで実行中のトポロジに影響を与えないことを意味するため、Stormの意図的な設計決定です。欠点は、クラスター内のすべてのStorm関連プロセスを完全に停止するために、追加の労力を費やす必要があることです。

すべてのプロセスを強制終了する場合は、スレーブノードで次の手順に従います。

$ Sudo supervisorctl stop storm-supervisor
$ Sudo pkill -TERM -u storm -f 'backtype.storm.daemon.worker'
17
user2720864

リンクしたページから:

キル

構文:ストームキルトポロジ名[-w待機時間秒]

トポロジ名をtopology-nameでトポロジーを強制終了します。Stormはまずトポロジーのメッセージタイムアウトの間、トポロジーのスパウトを非アクティブにして、現在処理中のすべてのメッセージが処理を終了できるようにします。次に、Stormはワーカーをシャットダウンしてクリーンアップします-wフラグを使用して、非アクティブ化とシャットダウンの間にStormが待機する時間の長さを上書きできます。

ご覧のとおり、これは「クリーン」なシャットダウンを提供するように設計されています。 killコマンドはワーカーをシャットダウンします。

3
Stephen C

./storm nimbus&./storm supervisor&./storm uiとしてストームを開始した場合は、

その後、その場合はプロセスIDを忘れた可能性があります。その場合は、jpsツールを使用してpidを見つけ、次のように削除します。

$ Java_HOME/bin/jps

3201 ConsoleConsumer

7528 Jps

2966カフカ

3680ニンバス

3681スーパーバイザー

6749ランチャー

2669 QuorumPeerMain

最初にニンバスを殺す

$須藤は3681を殺す

$須藤は3680を殺す

2
Sam