ストームを "kill XXX"で殺さずに停止するクリーンな方法はありますか(XXXはPIDです)?
「storm kill topology-name」を実行してトポロジを強制終了しますが、その後、ワーカー、ニンバス、スーパーバイザ、およびUIをシャットダウンするためのクリーンな方法はありますか?
ドキュメントからこれに対応するコマンドが見つかりませんでした: https://github.com/nathanmarz/storm/wiki/Command-line-client
トポロジーを強制終了するコマンド(正しく言及したとおり):
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'
リンクしたページから:
キル
構文:ストームキルトポロジ名[-w待機時間秒]
トポロジ名をtopology-nameでトポロジーを強制終了します。Stormはまずトポロジーのメッセージタイムアウトの間、トポロジーのスパウトを非アクティブにして、現在処理中のすべてのメッセージが処理を終了できるようにします。次に、Stormはワーカーをシャットダウンしてクリーンアップします-wフラグを使用して、非アクティブ化とシャットダウンの間にStormが待機する時間の長さを上書きできます。
ご覧のとおり、これは「クリーン」なシャットダウンを提供するように設計されています。 killコマンドはワーカーをシャットダウンします。
./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を殺す