2015-09-15 12 views
24

私はSpark Streamingジョブを継続して実行しています。仕事を優雅にやめさせるにはどうすればいいですか?私はジョブの監視にシャットダウンフックをつけ、ジョブにSIGTERMを送るという、通常の推奨事項を読んだ。スパークストリーミングジョブを停止するにはどうすればよいですか?

sys.ShutdownHookThread { 
    logger.info("Gracefully stopping Application...") 
    ssc.stop(stopSparkContext = true, stopGracefully = true) 
    logger.info("Application stopped gracefully") 
} 

これは動作しているようですが、ジョブを停止する最もクリーンな方法のようには見えません。私はここに何かを逃していますか

コードの観点からは、意味をなさないかもしれませんが、これをクラスター環境でどのように使用しますか?スパークストリーミングジョブを開始すると(クラスター内のすべてのノードでジョブを配布する)、ジョブとそれが実行されていたノードのPIDを追跡する必要があります。最後に、プロセスを停止する必要があるときは、ジョブが実行されているノードとそのPIDを追跡する必要があります。私はちょうどストリーミングジョブのジョブコントロールのより簡単な方法があることを望んでいた。

+0

あなたはきれいに見えませんか?私はこれが正しいと思います。 –

+0

質問にいくつかの詳細を追加しました。 – Saket

答えて

18

クラスタモードでストリーミングコンテキストを停止するには、SIGTERMを送信せずに次のコマンドを実行します。これにより、スレッドフックを使用して明示的に停止する必要なく、ストリーミングコンテキストが停止します。

$SPARK_HOME_DIR/bin/spark-submit --master $MASTER_REST_URL --kill $DRIVER_ID

- $のMASTER_REST_URLがスパークドライバの残りのURLである、すなわち火花のようなもの:// localhostを:6066

- $のDRIVER_IDはドライバ-20150915145601から0000

のようなものですsparkでアプリケーションを正常に停止させたい場合は、sparkアプリケーションが最初に送信されたときに、次のシステムプロパティを設定することができます(spark設定プロパティの設定についてはhttp://spark.apache.org/docs/latest/submitting-applications.htmlを参照)。

spark.streaming.stopGracefullyOnShutdown=true

この

は正式に文書化されていない、と私は1.4のソースコードを見てからこれを集めました。このフラグはスタンドアローンモードで有効です。私はクラスターモードでまだそれをテストしていない。私は火花1.4で働いています

。*

+0

こんにちは、ud3sh、糸クラスターモデルと1.3バージョンで、どうすればいいですか? – zwb

+3

'spark.streaming.stopGracefullyOnShutdown'がスパーク設定ページで正式に文書化されました。http://spark.apache.org/docs/latest/configuration.html#spark-streaming – avr

+0

コンテキストごとに複数のジョブをインスタンス化して停止したい場合ジョブは個別に? –

-1

それは今公式であるあなたが必要とするすべてのストリーミングアプリケーションを実行しているだけを停止している場合は、最も簡単な方法があり、here- http://spark.apache.org/docs/latest/configuration.html#spark-streaming

+4

答えに関連するリンクから特定のコンテンツを共有してください。単にリンクを投稿してもOPの問題は解決されません。 –

0

元Apacheのマニュアルに見てくださいSparkの管理UI(あなたはSparkマスタの起動ログにそのURLがあります)

UIに、実行中のストリーミングアプリケーションを示すセクションがあり、各アプリケーションIDの近くに小さな(kill)のURLボタンがあります。

+0

どこ?私は各ステージの隣に小さな(殺す)ボタンしか見ないのですが、私がそれらの1つを殺すともう1つはすぐに産卵されます –

関連する問題