2016-05-24 8 views

Odpowiedz

4

Można użyć spark-submit --status (jak opisano w Mastering Apache Spark 2.0).

spark-submit --status [submission ID] 

Zobacz code of spark-submit dla odniesienia:

if (!master.startsWith("spark://") && !master.startsWith("mesos://")) { 
    SparkSubmit.printErrorAndExit(
    "Requesting submission statuses is only supported in standalone or Mesos mode!") 
} 
+1

Należy zauważyć, że (zgodnie z linkiem) opcja '--status' działa tylko dla samodzielnego Sparka lub Mesos z trybem wdrażania klastrów (nie PRZEGRANY) – DNA

+12

Jak znaleźć ID zgłoszenia z wiersza poleceń? – user1870400

4

Jeśli to dla Standalone iskra lub menedżerów klastrów Apache Mesos, @sb0709's answer jest droga do naśladowania.

Dla przędza, należy użyć polecenia: yarn application

$ yarn application -help 
usage: application 
-appStates <States>    Works with -list to filter applications 
           based on input comma-separated list of 
           application states. The valid application 
           state can be one of the following: 
           ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUN 
           NING,FINISHED,FAILED,KILLED 
-appTypes <Types>    Works with -list to filter applications 
           based on input comma-separated list of 
           application types. 
-help       Displays help for all commands. 
-kill <Application ID>   Kills the application. 
-list       List applications. Supports optional use 
           of -appTypes to filter applications based 
           on application type, and -appStates to 
           filter applications based on application 
           state. 
-movetoqueue <Application ID> Moves the application to a different 
           queue. 
-queue <Queue Name>    Works with the movetoqueue command to 
           specify which queue to move an 
           application to. 
-status <Application ID>  Prints the status of the application. 
0

jak w moim przypadku, moja aplikacja iskra działa na Amazon AWS EMR zdalnie. Korzystam więc z przeglądarki wiersza poleceń Lynx, aby uzyskać dostęp do statusu aplikacji iskrzenia. Po przesłaniu pracy iskry z jednego terminala otwórz inny terminal i uruchom następujące polecenie z nowego terminala.

**lynx http://localhost:<4043 or other spark job port>** 
0

Odkryłem, że możliwe jest wykorzystanie REST API do przesyłania, zabijania i uzyskiwania statusu zadań Spark. REST API jest narażona na mistrza na porcie 6066.

  1. Aby utworzyć zadanie, należy użyć następującego polecenia: curl

    curl -X POST http://spark-cluster-ip:6066/v1/submissions/create 
        --header "Content-Type:application/json;charset=UTF-8" 
        --data 
        '{ 
         "action" : "CreateSubmissionRequest", 
         "appArgs" : [ "blah" ], 
         "appResource" : "path-to-jar-file", 
         "clientSparkVersion" : "2.2.0", 
         "environmentVariables" : { "SPARK_ENV_LOADED" : "1" }, 
         "mainClass" : "app-class", 
         "sparkProperties" : { 
          "spark.jars" : "path-to-jar-file", 
          "spark.driver.supervise" : "false", 
          "spark.app.name" : "app-name", 
          "spark.submit.deployMode" : "cluster", 
          "spark.master" : "spark://spark-master-ip:6066" 
         } 
        }' 
    

    Odpowiedź zawiera sukcesu lub niepowodzenia powyższej operacji i submissionId

    { 
        'submissionId': 'driver-20170829014216-0001', 
        'serverSparkVersion': '2.2.0', 
        'success': True, 
        'message': 'Driver successfully submitted as driver-20170829014216-0001', 
        'action': 'CreateSubmissionResponse' 
    } 
    
  2. Aby usunąć zadanie, należy użyć submissionId otrzymanego powyżej:

    curl -X POST http://spark-cluster-ip:6066/v1/submissions/kill/driver-driver-20170829014216-0001 
    

    Odpowiedź znowu zawiera stan sukces/awarii:

    { 
        'success': True, 
        'message': 'Kill request for driver-20170829014216-0001 submitted', 
        'action': 'KillSubmissionResponse', 
        'serverSparkVersion': '2.2.0', 
        'submissionId': 'driver-20170829014216-0001' 
    } 
    
  3. aby uzyskać jego status, należy użyć następującego polecenia:

    curl http://spark-cluster-ip:6066/v1/submissions/status/driver-20170829014216-0001 
    

    Odpowiedź zawiera Driver - stan aktualny stan aplikacji :

    { 
        "action" : "SubmissionStatusResponse", 
        "driverState" : "RUNNING", 
        "serverSparkVersion" : "2.2.0", 
        "submissionId" : "driver-20170829203736-0004", 
        "success" : true, 
        "workerHostPort" : "10.32.1.18:38317", 
        "workerId" : "worker-20170829013941-10.32.1.18-38317" 
    } 
    

Dowiedziałem się o REST API here.

Powiązane problemy