web-dev-qa-db-ja.com

実行を停止する方法Sparkストリーミングアプリケーションを優雅に?

sparkストリーミングを停止するにはどうすればよいですか?私のsparkストリーミングジョブは継続的に実行されています。適切に停止したいのですが、.

ストリーミングアプリケーションをシャットダウンするオプションを以下に示しました。

sparkConf.set("spark.streaming.stopGracefullyOnShutdown","true") 

Spark構成:使用可能なプロパティ

しかし、実行中のアプリケーションでこのパラメーターを更新するにはどうすればよいですか?

9
AKC

このブログ投稿 をご覧ください。これは、私が遭遇したストリーミングジョブを正常に終了するための「最も良い」方法です。

シャットダウン信号を渡す方法:

これで、sparkストリーミングで正常なシャットダウンを保証する方法がわかりました。しかし、シャットダウン信号をsparkストリーミングに渡すにはどうすればよいですか。1つの単純なオプションは、CTRL +を使用することです。ドライバープログラムを実行する画面ターミナルでのCコマンドですが、明らかにそれは適切なオプションではありません。私が使用している解決策の1つは、sparkストリーミングのドライバープロセスをgrepし、SIGTERMシグナルを送信することです。ドライバーがこのシグナルを受け取ると、アプリケーションの正常なシャットダウンを開始します。シェルスクリプトで以下のようにコマンドを記述し、スクリプトを実行してシャットダウンシグナルを渡すことができます。

ps -ef | grep spark | grep | awk '{print $ 2}' | xargs kill -SIGTERM

例えばps -ef | grep spark | grep DataPipelineStreamDriver | awk '{print $ 2}' | xargs kill -SIGTERM