プログラムのストリーミング流れとしては、稼働して、基本的に無限の状態と、特殊な状況を除き、それは停止しません。すべての時間で、彼らはあなたにも必ずそのデータを確保するように、現在完了し、処理しないされ、もはや新しいデータを受け入れることができるデータは何の体重を失っていないされていないようにする必要があり、ストップ実行する場合は、データを処理する可能性があるため。
それが直接殺すことができないので、-9、この暴力的な方法を停止し、直接殺す、それは失うデータまたは反復消費データに可能であると同時に、また、プログラムの流れに起因し、かなり特殊です。
仕事をストリーミングする方法エレガント停止ここにあります。
最初:手動停止
- 設定し、次のパラメータのプログラム:
クローズsparkConf.set( "spark.streaming.stopGracefullyOnShutdown"、 "真")//エレガント
- そして、次のステップ
- Hadoopの8088ページのプログラムを介して実行して下さい
- スパークUIの監視ページを開きます。
- 監視ページエグゼキュータを開きます
- ログインLinuxマシンは、ノードのIPとポート番号の実行を駆動見つけるために
- その後、カプセル化されたコマンドを実行します
sudoのSSは-tanlp | 5555をgrepする| awkの'{印刷$ 6 }' | awkの -F、 '{印刷$ 2 }' | 須藤xargsが殺す-15
この方法では、明らかに、より複雑です。
第二:HDFSのメッセージ通知システムを利用するために
ドライバでは、それほど頻繁にすべての上のコードの一部を追加し、我々はこのファイルが存在して発見した場合HDFSの役割は、文書をスキャンしている、それが停止方法StreamContext、エレガント停止プログラムを呼び出します。
HDFSここで交換することができレイズ、ZK、HBaseの、DBは、唯一の問題は、メッセージ通知のための目的を達成するために、外部ストレージシステムに依存しています。
このように、プログラムを停止することは比較的簡単です。ログインそこHDFSクライアントマシンと、指定したディレクトリに空のファイルに触れ、スキャン時間間隔まで待つ、あなたがプログラムを終了する必要があり、ファイルが存在することがわかりました。
コード上の騒ぎ、
ssc.start() //チェック間隔 ヴァルcheckIntervalMillis = 15000 VAR isStopped =偽 ( "しばらく前")のprintln (!isStopped){しばらく のprintln( "呼び出しawaitTerminationOrTimeout") isStopped = ssc.awaitTerminationOrTimeout(checkIntervalMillis) の場合(isStopped) のprintln ( "ストリーミングコンテキストが停止している!確認しました。アプリケーションを終了...") 他 のprintlnを( "ストリーミングアプリケーションがまだ実行されている。") のprintln( "チェックファイルが存在する") (!ストップフラグ)であれば、{ valのFS = FileSystem.get(新しいURI( "HDFS://192.168.156.111:9000")、新しいConfiguration()) ストップフラグ= FS。(新しいパス( "/ stopMarker /マーカー"))が存在します } )!isStopped &&ストップフラグ(IF { println( "今SSCの停止") ssc.stop(真、真) } }
第三:要求を受信するための内部ソケットや露光HTTPポート、分流器を開閉するためのプログラム待ちます
このように、ソケットのスレッドを開始する必要性、またはhttpは、ドライバーにサービスを提供。その他のHTTPサービスを使用して、推奨基盤となるソケットビットは、少し複雑に対処するために、バイアスされているため。
HTTPを使用している場合、サービスは直接桟橋、HTTPインタフェースにさらさ外を埋め込むことができます。スパークUIページはまた、IPドライバが配置されている見つけ、それが閉じているときに、ポンポンファイルに追加の依存関係を導入する必要がない、埋め込まれた桟橋でのサービスを提供し、あなたは直接ブラウザやcrulから直接プログラムの流れをシャットダウンすることができます
展開は、追加の露出httpポート番号を必要とする場合にのみ、このアプローチは、ストレージシステムのいずれかに依存しないスパークマスターUIインターフェイス上で見つけることができる手続きのログで見ることができ、IPドライバが配置されている検索サービス。
私たちは、あなたが外部システムへの依存を最小限にしたい場合は、第二または第三の使用を推奨し、三分の一を使用することをお勧めします。
参照文献:https://www.linkedin.com/pulse/how-shutdown-spark-streaming-job-gracefully-lan-jiang