2016-08-10 13 views
1

私はJenkinsから多くのストリーミングジョブがあり、Jenkinsからのマネージャーにとっては簡単なシェルスクリプトを作成しています。そこで以下のスクリプトを作成しました。アプリが実行中の状態でspark-submitプロセスを強制終了するかどうかを知るには?

#!/bin/bash 
spark-submit "spark parameters here" > /dev/null 2>&1 & 
processId=$! 
echo $processId 
sleep 5m 
kill $processId 

私がスリープしていない場合、スパーク送信プロセスは即座に終了し、スパークアプリケーションは送信されません。そして、睡眠がある場合、スパーク・サブミット・プロセスは、スパーク・アプリケーションを提出するのに十分な時間を得る。

私の質問は、spark-submitプロセスが強制終了されるように、sparkアプリケーションが実行中であるかどうかを知る良い方法はありますか?私はあなたが使用しているスパークバージョンを知っていないか、またはスタンドアロンモードで実行している場合は、とにかく、あなたがアプリを殺す/送信するためthe REST APIを使用することができますYARN

答えて

1

あなたはスパークアプリケーションを​​とapplicationセクションで説明したようにyarn application -status <ApplicationId>を使用する必要があります。

は、アプリケーションの状態を表示します。

あなたは(client配備モード)​​のログから<ApplicationId>を取得したり、yarn application -list -appType SPARK -appStates RUNNINGを使用することができます。

+1

私は糸を使用していますので、アプリケーションIDを取得するために糸のアプリケーションリストとgrepアプリケーション名を使用しました。 –

0

スパーク1.6.0。私が最後に確認したのは、ほとんど文書化されていませんでしたが、正しく機能しました。

アプリケーションを送信すると、後で現在の状態を取得または強制終了するために使用できるsubmissionIdが表示されます。可能性のある状態がhereを文書化されています

// SUBMITTED: Submitted but not yet scheduled on a worker 
    // RUNNING: Has been allocated to a worker to run 
    // FINISHED: Previously ran and exited cleanly 
    // RELAUNCHING: Exited non-zero or due to worker failure, but has not yet started running again 
    // UNKNOWN: The state of the driver is temporarily not known due to master failure recovery 
    // KILLED: A user manually killed this driver 
    // FAILED: The driver exited non-zero and was not supervised 
    // ERROR: Unable to run or restart due to an unrecoverable error (e.g. missing jar file) 

シェルスクリプトを子守する必要はありませんので、これは、長時間実行されるアプリケーション(例えばストリーミング)のために特別に有用です。

+0

私はYARNでSpark 1.6.0を使用していますが、RESTインターフェイスはスタンドアロンモードでのみ使用できると思います。私は提供されたリンクに記載されているようにポート6066上で動作するものは何も表示されません。 –

関連する問題