1

スパークストリーミングにはAWS EMRを使用します。私はKinesisストリームからデータを読み込むEMRのステップを追加します。私が必要とするのは、このステップを止めて新しいステップを追加するアプローチです。AWS EMRの長期スパークストリーミングステップを停止する方法

今私はSparkドライバからスレッドを生成し、メッセージのSQSキューをリッスンし、メッセージを受信するとsparkContext.stop()と呼びます。私はシェフを展開自動化に使用しています。したがって、新しいアーティファクトがある場合、メッセージはSQSに入れられ、EMRはそれを読み取り、ステップを停止します。その後、シェフはEMR APIで新たなステップを追加します。

私の質問は、これはEMRで長時間実行されるストリーミングジョブを停止する正しい方法ですか? EMRの代わりにスタンドアロンのクラスタにどのように展開されたのですか?

答えて

0

EMR STEP APIは現在のところSTOPPINGをサポートしていません。ステップを送信すると、EMRは通常あなたが提供した引数でhadoop jarコマンドを実行します。ステップタイプがsparkの場合は、​​コマンドを実行します。このコマンドが0の終了コードを返した場合、STEPはFINISHEDとマークされ、他の終了コードを返した場合はFAILEDとマークされます。状態は、実行中の現在のYARNアプリケーションに依存することもあります。現在、その期間中に実行中のYARNアプリ(特にSTEPによって生成されていないアプリ)がある場合、EMRはSTEP FINISHEDとマークしません。

spark-submitでメインクラス/ JARを使用してカスタムコードを書くことで、目的の終了コードを押してSTEPの希望の状態に到達することができます。

STEPのcontroller.logを見ることによって、EMRがSTEPを変換するコマンドの詳細を見つけることができます。

関連する問題