2016-08-10 11 views
1

今はspark-submitを使用してアプリケーションをクラスタモードで起動しています。マスターサーバーからの応答は、私がアプリケーションを識別し、必要に応じてそれを殺すために使用するsubmissionIdを持つjsonオブジェクトを与えます。しかし、私はマスターサーバーの応答またはドライバIDからworker rest urlを取得する簡単な方法は見つけられませんでした(おそらく、WebはマスターWeb UIを擦ってしまうかもしれませんが、それは醜いでしょう)。代わりに、アプリケーションが終了するまで待ってから、ヒストリ・サーバーからアプリケーション統計を調べる必要があります。Spark:クラスタモードアプリケーションの監視

クラスタモード(通常はworker-node:4040)でデプロイされたアプリケーションからワーカーURLを識別するには、driver-idを使用する方法はありますか。

16/08/12 11:39:47 INFO RestSubmissionClient: Submitting a request to launch an application in spark://192.yyy:6066. 
16/08/12 11:39:47 INFO RestSubmissionClient: Submission successfully created as driver-20160812114003-0001. Polling submission state... 
16/08/12 11:39:47 INFO RestSubmissionClient: Submitting a request for the status of submission driver-20160812114003-0001 in spark://192.yyy:6066. 
16/08/12 11:39:47 INFO RestSubmissionClient: State of driver driver-20160812114003-0001 is now RUNNING. 
16/08/12 11:39:47 INFO RestSubmissionClient: Driver is running on worker worker-20160812113715-192.xxx-46215 at 192.xxx:46215. 
16/08/12 11:39:47 INFO RestSubmissionClient: Server responded with CreateSubmissionResponse: 
{ 
    "action" : "CreateSubmissionResponse", 
    "message" : "Driver successfully submitted as driver-20160812114003-0001", 
    "serverSparkVersion" : "1.6.1", 
    "submissionId" : "driver-20160812114003-0001", 
    "success" : true 
} 

編集:ここでは典型的な出力は、DEBUG

でのlog4jのコンソール出力を持つようになります

スパーク-submitコマンド:

./apps/spark-2.0.0-bin-hadoop2.7/bin/spark-submit --master mesos://masterurl:7077 
    --verbose --class MainClass --deploy-mode cluster 
    ~/path/myjar.jar args 

火花提出出力:

Using properties file: null 
Parsed arguments: 
    master     mesos://masterurl:7077 
    deployMode    cluster 
    executorMemory   null 
    executorCores   null 
    totalExecutorCores  null 
    propertiesFile   null 
    driverMemory   null 
    driverCores    null 
    driverExtraClassPath null 
    driverExtraLibraryPath null 
    driverExtraJavaOptions null 
    supervise    false 
    queue     null 
    numExecutors   null 
    files     null 
    pyFiles     null 
    archives    null 
    mainClass    MyApp 
    primaryResource   file:/path/myjar.jar 
    name     MyApp 
    childArgs    [args] 
    jars     null 
    packages    null 
    packagesExclusions  null 
    repositories   null 
    verbose     true 

Spark properties used, including those specified through 
--conf and those from the properties file null: 



Main class: 
org.apache.spark.deploy.rest.RestSubmissionClient 
Arguments: 
file:/path/myjar.jar 
MyApp 
args 
System properties: 
SPARK_SUBMIT -> true 
spark.driver.supervise -> false 
spark.app.name -> MyApp 
spark.jars -> file:/path/myjar.jar 
spark.submit.deployMode -> cluster 
spark.master -> mesos://masterurl:7077 
Classpath elements: 



16/08/17 13:26:49 INFO RestSubmissionClient: Submitting a request to launch an application in mesos://masterurl:7077. 
16/08/17 13:26:49 DEBUG RestSubmissionClient: Sending POST request to server at http://masterurl:7077/v1/submissions/create: 
{ 
    "action" : "CreateSubmissionRequest", 
    "appArgs" : [ args ], 
    "appResource" : "file:/path/myjar.jar", 
    "clientSparkVersion" : "2.0.0", 
    "environmentVariables" : { 
    "SPARK_SCALA_VERSION" : "2.10" 
    }, 
    "mainClass" : "SimpleSort", 
    "sparkProperties" : { 
    "spark.jars" : "file:/path/myjar.jar", 
    "spark.driver.supervise" : "false", 
    "spark.app.name" : "MyApp", 
    "spark.submit.deployMode" : "cluster", 
    "spark.master" : "mesos://masterurl:7077" 
    } 
} 
16/08/17 13:26:49 DEBUG RestSubmissionClient: Response from the server: 
{ 
    "action" : "CreateSubmissionResponse", 
    "serverSparkVersion" : "2.0.0", 
    "submissionId" : "driver-20160817132658-0004", 
    "success" : true 
} 
16/08/17 13:26:49 INFO RestSubmissionClient: Submission successfully created as driver-20160817132658-0004. Polling submission state... 
16/08/17 13:26:49 INFO RestSubmissionClient: Submitting a request for the status of submission driver-20160817132658-0004 in mesos://masterurl:7077. 
16/08/17 13:26:49 DEBUG RestSubmissionClient: Sending GET request to server at http://masterurl:7077/v1/submissions/status/driver-20160817132658-0004. 
16/08/17 13:26:49 DEBUG RestSubmissionClient: Response from the server: 
{ 
    "action" : "SubmissionStatusResponse", 
    "driverState" : "RUNNING", 
    "serverSparkVersion" : "2.0.0", 
    "submissionId" : "driver-20160817132658-0004", 
    "success" : true 
} 
16/08/17 13:26:49 INFO RestSubmissionClient: State of driver driver-20160817132658-0004 is now RUNNING. 
16/08/17 13:26:49 INFO RestSubmissionClient: Server responded with CreateSubmissionResponse: 
{ 
    "action" : "CreateSubmissionResponse", 
    "serverSparkVersion" : "2.0.0", 
    "submissionId" : "driver-20160817132658-0004", 
    "success" : true 
} 

答えて

2

マスターサーバーの応答でapplication-idが指定されていませんか?

この問題のアプリケーションのマスターURLとアプリケーションIDが必要だと思います。アプリケーションIDを取得したら、master-URLでポート4040を使用し、目的のエンドポイントを追加します。

たとえば、アプリケーションIDが保存されたRDDSしかし

http://<master>:4040/api/v1/applications/application_1468141556944_1055/storage/rdd 

のリストを取得するには、すべてのジョブ

http://<master>:4040/api/v1/applications/application_1468141556944_1055/jobs 

のリストを取得するにはapplication_1468141556944_1055

ある場合あなたがアプリケーションIDを持っていないなら、私はおそらく次のように始めるでしょう:

コンソールでアプリケーションIDを取得するためにsparkジョブを起動している間に、verboseモード( - verbose)を設定します。次に、ログ出力でapplication-idを解析できます。アプリケーション-idはあなたがまた

のように見えるログ出力、トラッキング用URLを通じてマスター・URLおよびアプリケーションIDを見つけることができますapplication_1468141556944_3791

あり、これ

16/08/12 08:50:53 INFO Client: Application report for application_1468141556944_3791 (state: RUNNING) 

:ログ出力は、通常のようになります。

client token: N/A 
    diagnostics: N/A 
    ApplicationMaster host: 10.50.0.33 
    ApplicationMaster RPC port: 0 
    queue: ns_debug 
    start time: 1470992969127 
    final status: UNDEFINED 
    tracking URL: http://<master>:8088/proxy/application_1468141556944_3799/ 

これらのメッセージは、あなたがlog4jのでlog4j.rootCategory=INFO, consoleを設定してくださいINFOログレベルです。プロパティファイルを参照してください。

+0

試行されました - 詳細ですが、アプリケーションIDはありません。ログレベルはすでにINFOに設定されています。 Spark version 1.6.1 btw – Rdesmond

+0

私は、アプリケーションジャーでspark-submitを使ってスパークジョブを起動すると、これらの出力を見ることができます。私は同じバージョンを持っている。 DEBUGモード(INFOではなく)を試すか、コード内でapplication-idをローカルファイルや関数 'SparkContext.applicationId'を使って試してみてください – arbazkhan002

+0

これはすごく奇妙です。上記の質問を編集して出力します – Rdesmond

0

spark maを擦った(同じ分以内に&と同じ接尾辞。 20161010025XXX-0005とXをワイルドカードとして使用する)、そのあとのlinkタグでワーカーURLを探します。かなり、信頼性の高い、または安全ではありませんが、現在は動作します。誰かが別のアプローチを取っている場合に備えて、少し開いたままにする。