web-dev-qa-db-fra.com

Comment vérifier le statut des applications Spark à partir de la ligne de commande?

Pour vérifier les applications en cours d'exécution dans Apache Spark, vous pouvez les vérifier à partir de l'interface Web sur l'URL:

http://<master>:8080

Ma question est la suivante: comment vérifier que les applications en cours d'exécution sont exécutées depuis un terminal? Existe-t-il une commande qui renvoie le statut des applications?

17
Mohanad Kaleia

Si c'est pour les gestionnaires de cluster Spark Standalone ou Apache Mesos, la réponse de @ sb0709 est la méthode à suivre.

Pour YARN, vous devez utiliser application de fil commande:

$ 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.
8
Jacek Laskowski

Vous pouvez utiliser spark-submit --status (comme décrit dans Mastering Apache Spark 2.0 ).

spark-submit --status [submission ID]

Voir le code de spark-submit pour référence:

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

J'ai constaté qu'il était possible d'utiliser l'API REST pour soumettre, supprimer et obtenir l'état des travaux Spark. L'API REST est exposée sur le maître sur le port 6066.

  1. Pour créer le travail, utilisez la commande curl suivante:

    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" 
             }
         }'
    

    La réponse inclut le succès ou l’échec de l’opération ci-dessus et de submitId

    {
       'submissionId': 'driver-20170829014216-0001',
       'serverSparkVersion': '2.2.0',
       'success': True,
       'message': 'Driver successfully submitted as driver-20170829014216-0001',
       'action': 'CreateSubmissionResponse'
    }
    
  2. Pour supprimer le travail, utilisez le submissionId obtenu ci-dessus:

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

    La réponse contient à nouveau le statut succès/échec:

    {
         'success': True,
         'message': 'Kill request for driver-20170829014216-0001 submitted',
         'action': 'KillSubmissionResponse',
         'serverSparkVersion': '2.2.0',
         'submissionId': 'driver-20170829014216-0001'
    }
    
  3. Pour obtenir le statut, utilisez la commande suivante:

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

    La réponse comprend l'état du pilote - statut actuel de l'application:

    {
      "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"
    }
    

J'ai découvert REST API ici .

1
Lana Nova

Comme dans mon cas, mon application spark s'exécute à distance sur AWS EMR d'Amazon. J'utilise donc le navigateur de ligne de commande Lynx pour accéder au statut de l'application étincelle . Alors que vous avez envoyé votre travail d'étincelle depuis un terminal, ouvrez un autre terminal et lancez la commande suivante depuis le nouveau terminal.

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