Explorer la création d'instances sans serveur et la soumission d'applications à l'aide de l'interface de ligne de commande

Apprenez à utiliser l'interface de ligne de commande IBM Analytics Engine pour créer les services dont vous avez besoin pour créer et gérer une instance sans serveur, et soumettre et surveiller vos applications Spark.

Vous créez une instance sans serveur en sélectionnant le plan IBM Analytics Engine standard sans serveur. Lorsqu'une instance sans serveur est mise à disposition, un cluster Apache Spark est créé, que vous pouvez personnaliser avec les packages de bibliothèque de votre choix et où vous exécutez vos applications Spark.

Objectifs

Vous allez apprendre à installer et configurer les services et composants suivants dont vous aurez besoin pour utiliser l'interface de ligne de commande:

  • Instance IBM Cloud Object Storage dans laquelle votre instance IBM Analytics Engine stocke les bibliothèques d'applications personnalisées et les événements d'historique de Spark.
  • Un compartiment Object Storage pour les fichiers d'application et les fichiers de données.
  • Instance IBM Analytics Engine sans serveur. Cette instance est allouée aux ressources de traitement et de mémoire à la demande chaque fois que les charges de travail Spark sont déployées. Lorsqu'une application n'est pas en cours d'exécution, aucune ressource informatique n'est allouée à l'instance. Le prix est basé sur l'utilisation réelle des ressources consommées par l'instance, facturées sur une base par seconde.
  • Service de journalisation pour vous aider à identifier et résoudre les incidents susceptibles de se produire dans l'instance IBM Analytics Engine et l'application soumise, ainsi que pour afficher les sorties générées par votre application. Lorsque vous exécutez des applications avec la consignation activée, les journaux sont réacheminés vers un service IBM Log Analysis où ils sont indexés, ce qui permet une recherche en texte intégral via tous les messages générés et l'interrogation pratique basée sur des zones spécifiques.

Avant de commencer

Pour commencer à utiliser l'interface de ligne de commande Analytics Engine V3, vous devez :

Vous pouvez maintenant commencer à utiliser l'interface de ligne de commande Analytics Engine V3. Vous devez suivre les instructions des étapes 1 et 2 pour installer les services requis avant de commencer l'étape 3 pour télécharger et soumettre des applications Spark. L'étape 4 vous montre comment créer une instance de journalisation et activer la journalisation. L'étape 5 indique comment supprimer une instance Analytics Engine, bien que cette étape soit facultative.

Créer une instance Cloud Object Storage et extraire les données d'identification

Créez une instance IBM Cloud Object Storage et récupérez les données d'identification Cloud Object Storage (clés de service) à l'aide de l'interface de ligne de commande Analytics Engine Serverless.

L'instance Cloud Object Storage que vous créez est requise par l'instance IBM Analytics Engine en tant que stockage de base pour les événements d'historique de Spark et toutes les bibliothèques ou packages personnalisés que vous souhaitez utiliser dans vos applications. Voir Base d'instance.

Pour plus d'informations sur la création d'un ensemble de bibliothèques avec des packages personnalisés stockés dans Cloud Object Storage et référencés à partir de votre application, voir Utilisation d'un ensemble de bibliothèques.

  1. Connectez-vous à IBM Cloud® à l'aide de votre compte IBM Cloud®.

    Action :Entrez:

        ibmcloud api <URL>
        ibmcloud login
    

    Example :Entrez:

        ibmcloud api https://cloud.ibm.com
        ibmcloud login
    
  2. Sélectionnez le groupe de ressources. Obtenez la liste des groupes de ressources de votre compte et sélectionnez-en un pour y créer l'instance IBM Analytics Engine sans serveur :

    Action :Entrez:

        ibmcloud target -g RESOURCE_GROUP_NAME
    

    Valeurs des paramètres :

    • RESOURCE_GROUP_NAME : nom du groupe de ressources dans lequel se trouve l'instance sans serveur.

    Example :Entrez:

        ibmcloud resource groups
        ibmcloud target -g default
    
  3. Installez le service IBM Cloud Object Storage, puis l'interface de ligne de commande Analytics Engine V3 :

    Action :Entrez:

        ibmcloud plugin install cloud-object-storage
    

    Action :Entrez:

        ibmcloud plugin install analytics-engine-v3
    
  4. Créez une instance Cloud Object Storage :

    Action :Entrez:

        ibmcloud resource service-instance-create INSTANCE_NAME cloud-object-storage PLAN global
    

    Valeurs des paramètres :

    • INSTANCE_NAME : un nom de votre choix
    • PLAN : plan Cloud Object Storage à utiliser lors de la création de l'instance

    Example :Entrez:

        ibmcloud resource service-instance-create test-cos-object cloud-object-storage standard global
    
    Réponse
    L'exemple renvoie:
        Service instance test-cos-object was created.
        Name:             test-cos-object
        ID:               crn:v1:bluemix:public:cloud-object-storage:global:a/867d444f64594fd68c7ebf4baf8f6c90:ebad3176-8a1a-41f2-a803-217621bf6309::
        GUID:             ebad3176-8a1a-41f2-a803-217621bf6309
        Location:         global
        State:            active
        Type:             service_instance
        Sub Type:
        Allow Cleanup:    false
        Locked:           false
        Created at:       2021-12-27T07:57:56Z
        Updated at:       2021-12-27T07:57:58Z
        Last Operation:
                         Status    create succeeded
                         Message   Completed create instance operation
    
  5. Configurez le CRN en copiant la valeur de l'ID à partir de la réponse de l'appel de création Cloud Object Storage à l'étape précédente :

    Action :Entrez:

        ibmcloud cos config crn
        Resource Instance ID CRN: ID
    

    Valeurs des paramètres :

    • ID : valeur de l'ID à partir de la réponse à l'appel de création Cloud Object Storage

    Example :Entrez:

        ibmcloud cos config crn
        Resource Instance ID CRN: crn:v1:bluemix:public:cloud-object-storage:global:a/867d444f64594fd68c7ebf4baf8f6c90:ebad3176-8a1a-41f2-a803-217621bf6309::
    
  6. Créez un compartiment Cloud Object Storage :

    Action :Entrez:

        ibmcloud cos bucket-create --bucket BUCKET_NAME [--class CLASS_NAME] [--ibm-service-instance-id ID] [--region REGION] [--output FORMAT]
    

    Valeurs des paramètres :

    • BUCKET_NAME : nom de votre choix
    • ID : valeur de GUID à partir de la réponse de l'appel de création Cloud Object Storage
    • REGION : région IBM Cloud dans laquelle l'instance Cloud Object Storage a été créée
    • FORMAT : format de sortie peut être JSON ou texte.

    Example :Entrez:

        ibmcloud cos bucket-create --bucket test-cos-storage-bucket --region us-south --ibm-service-instance-id ebad3176-8a1a-41f2-a803-217621bf6309 --output json
    
  7. Créez des clés de service Cloud Object Storage :

    Action :Entrez:

        ibmcloud resource service-key-create NAME [ROLE_NAME] ( --instance-id SERVICE_INSTANCE_ID | --instance-name SERVICE_INSTANCE_NAME | --alias-id SERVICE_ALIAS_ID | --alias-name SERVICE_ALIAS_NAME) [--service-id SERVICE_ID] [-p, --parameters @JSON_FILE|JSON_TEXT] [-g RESOURCE_GROUP] [--service-endpoint SERVICE_ENDPOINT_TYPE] [--output FORMAT] [-f, --force] [-q, --quiet]
    
     Parameter values:
     - NAME: Any name of your choice
     - [ROLE_NAME]: This parameter is optional. The access role, for example, `Writer` or `Reader`
     - SERVICE_INSTANCE_ID: The value of GUID from the response the of Cloud Object Storage creation call
     - SERVICE_INSTANCE_NAME: The value of NAME from the response the of Cloud Object Storage creation call
     - JSON_TEXT: The authentication to access Cloud Object Storage. Currently only HMAC keys are supported.
    

    Example :Entrez:

        ibmcloud resource service-key-create test-service-key-cos-bucket Writer --instance-name test-cos-object --parameters '{"HMAC":true}'
    
    Réponse
    L'exemple renvoie :
    Creating service key of service instance test-cos-object under account Test
    OK
    
    Service key crn:v1:bluemix:public:cloud-object-storage:global:a/183**93b485e:9ee135f9-4667-4797-8478-b20**ce-key:21a310e1-bbd6-**bf1f4 was created.
    Name:          test-service-key-cos-bucket
    ID:            crn:v1:bluemix:public:cloud-object-**
    Created At:    Mon Dec 27 12:52:49 UTC 2021
    State:         active
    Credentials:
        apikey: 3a4Ncm**o-WJGFaEzwfY
        cos_hmac_keys:
           access_key_id: 21a31**f1f4
           secret_access_key: c5a23**b6792d3e0a6c
           endpoints: https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints
           iam_apikey_description: Auto-generated for key crn:v1:bluemix:public:cloud-object-storage:global:a/1836f778**c93b485e:9ee**8478-b2019a4b4e20:resource-key:21a3**05a9bf1f4
           iam_apikey_name: test-service-key-cos-bucket
           iam_role_crn: crn:v1:bluemix:public:iam::::serviceRole:Writer
           iam_serviceid_crn: crn:v1:bluemix:public:iam-identity::a/1836f77885e521c5ab2523aac93b485e::serviceid:ServiceId-702ca222-3615-464c-92d3-1849c03170cc
           resource_instance_id: crn:v1:bluemix:public:cloud-object-storage:global:a/1836f7**3b485e:9ee135f9-4667-479**4e20::
    

Créer une instance Analytics Engine sans serveur

Créez une instance Analytics Engine sans serveur à l'aide de l'interface de ligne de commande.

  1. Créez l'instance de service Analytics Engine :

    Action :Entrez:

        ibmcloud resource service-instance-create INSTANCE_NAME ibmanalyticsengine standard-serverless-spark us-south -p @provision.json
    

    Valeurs des paramètres :

    • INSTANCE_NAME : un nom de votre choix
    • @provision.json : structure du fichier JSON comme indiqué dans l'exemple suivant. Utilisez la clé d'accès et de secret à partir de la réponse à l'appel de création de la clé de service Cloud Object Storage.
    Exemple de fichier provision.json
    Exemple de fichier JSON:
        {
           "default_runtime": {
              "spark_version": "3.4" },
              "instance_home": {
                 "region": "us-south",
                 "endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud",
                 "hmac_access_key": "<your-hmac-access-key>",
                 "hmac_secret_key": "<your-hmac-secret-key>"}
        }
    

    Example :Entrez:

        ibmcloud resource service-instance-create test-ae-service ibmanalyticsengine standard-serverless-spark us-south -p @ae_provision.json
    
    Réponse

    L'exemple renvoie: ` text Création d'une instance de service test-ae-service dans le groupe de ressources du compte en tant que ...

    OK

    Service instance test-ae-service was created. Name: test-ae-service ID: crn:v1:bluemix:public:ibmanalyticsengine:us-south:a/183aac93b485e:181eabe1-709781b:: GUID: 181ea9ee01b Location: us-south State: provisioning Type: service_instance Sub Type: Service Endpoints: public Allow Cleanup: false Locked: false Created at: 2022-01-03T08:40:25Z Updated at: 2022-01-03T08:40:26Z Last Operation: Status create in progress Message Started create instance operation

    
    
  2. Vérifiez l'état du service Analytics Engine :

    Action :Entrez:

        ibmcloud ae-v3 instance show –id INSTANCE_ID
    

    Valeurs des paramètres :

    • INSTANCE_ID : valeur de GUID à partir de la réponse de l'appel de création d'instance Analytics Engine

    Example :Entrez:

        ibmcloud ae-v3 instance show –id 181ea**9ee01b
    

    Réponse
    L'exemple renvoie:
        {
           "default_runtime": {
              "spark_version": "3.4" },
           "id": "181ea**9ee01b ",
           "instance_home": {
              "bucket": "do-not-delete-ae-bucket-e96**5d-b7**a82",
              "endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud",
              "hmac_access_key": "**",
              "hmac_secret_key": "**",
              "provider": "ibm-cos",
              "region": "us-south",
              "type": "objectstore" },
           "state": "active",
           "state_change_time": "**"
        }
    

    Ne soumettez votre application Spark que lorsque l'état du service Analytics Engine est actif.

Télécharger et soumettre une application Spark

Téléchargez un fichier d'application dans Cloud Object Storage et soumettez une application Spark.

Ce tutoriel explique comment ajouter l'application Spark au compartiment d'instance Cloud Object Storage utilisé comme base ome de l'instance par l'instance Analytics Engine . Si vous souhaitez séparer les fichiers liés à l'instance des fichiers que vous utilisez pour exécuter vos applications, par exemple, les fichiers d'application eux-mêmes, les fichiers de données et tous les résultats de votre analyse, vous pouvez utiliser un autre compartiment dans la même instance Cloud Object Storage ou utiliser une autre instance Cloud Object Storage.

  1. Téléchargez le fichier de l'application Spark :

    Action :Entrez:

        ibmcloud cos upload --bucket BUCKET_NAME --key KEY --file PATH [--concurrency VALUE] [--max-upload-parts PARTS] [--part-size SIZE] [--leave-parts-on-errors] [--cache-control CACHING_DIRECTIVES] [--content-disposition DIRECTIVES] [--content-encoding CONTENT_ENCODING] [--content-language LANGUAGE] [--content-length SIZE] [--content-md5 MD5] [--content-type MIME] [--metadata STRUCTURE] [--region REGION] [--output FORMAT] [--json]
    

    Valeurs des paramètres :

    • BUCKET_NAME : nom du compartiment utilisé lors de la création du compartiment
    • KEY : nom du fichier d'application
    • PATH : nom du fichier et chemin d'accès au fichier de l'application Spark

    Example :Entrez:

        ibmcloud cos upload --bucket test-cos-storage-bucket --key test-math.py --file test-math.py
    

    Exemple de fichier d'application
    Exemple de test-math.py :
    from pyspark.sql import SparkSession
    import time
    import random
    import cmath
    
    
    

    def init_spark (): spark = SparkSession.builder.appName("test-math").getOrCreate() sc = spark.sparkContext return spark,sc

    def transformFunc(x): renvoie cmath.sqrt(x) +cmath.log(x)+cmath.log10(x)

    def main(): spark, sc = init_spark () partitions=[10,5] pour i dans la plage (0, 2): data=range (1 20000000) v0 = sc.parallelize(data, [partitionsi]) v1 = v0.map(transformFunc) print(fv1.count is {v1.count()}. Fait") time.sleep(60)

    si nom =='main' : main()

    {: codeblock}
    
    
    
  2. Vérifiez l'état du service Analytics Engine :

    Action :Entrez:

        ibmcloud ae-v3 instance show –id INSTANCE ID
    

    Valeurs des paramètres :

    • INSTANCE_ID : valeur de GUID à partir de la réponse de l'appel de création d'instance Analytics Engine

    Example :Entrez:

        ibmcloud ae-v3 instance show –id 181ea**9ee01b
    

    Réponse
    L'exemple renvoie:
        {
           "default_runtime": {
              "spark_version": "3.4" },
           "id": "181ea**9ee01b ",
           "instance_home": {
              "bucket": "do-not-delete-ae-bucket-e96**5d-b7**a82",
              "endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud",
              "hmac_access_key": "**",
              "hmac_secret_key": "**",
              "provider": "ibm-cos",
              "region": "us-south",
              "type": "objectstore" },
           "state": "active",
           "state_change_time": "**"
        }
    

    Ne soumettez votre application Spark que lorsque l'état du service Analytics Engine est actif.

  3. Soumettez l'application Spark :

    Action :Entrez:

        ibmcloud ae-v3 spark-app submit --instance-id INSTANCE_ID -–app APPLICATION_PATH
    

    Valeurs des paramètres :

    • INSTANCE_ID : valeur de GUID à partir de la réponse de l'appel de création d'instance Analytics Engine
    • APPLICATION_PATH : nom de fichier et chemin d'accès au fichier de l'application Spark

    Exemple pour IOS et Linux :Entrez:

        ibmcloud ae-v3 spark-app submit --instance-id 181ea**9ee01b --app "cos://test-cos-storage-bucket.mycos/test-math.py" --conf '{"spark.hadoop.fs.cos.mycos.endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud", "spark.hadoop.fs.cos.mycos.access.key": "21**bf1f4", "spark.hadoop.fs.cos.mycos.secret.key": "c5a**d3e0a6c"}'
    

    Exemple pour Windows (pas de Powershell). Notez que sous Windows, les guillemets doivent être échappés. :Entrez:

        ibmcloud ae-v3 spark-app submit --instance-id myinstanceid --app "cos://matrix.mycos/test-math.py" --conf "{\"spark.hadoop.fs.cos.mycos.endpoint\": \"https://s3.direct.us-south.cloud-object-storage.appdomain.cloud\", \"spark.hadoop.fs.cos.mycos.access.key\": \"mykey\", \"spark.hadoop.fs.cos.mycos.secret.key\": \"mysecret\"}"
    

    Réponse
    L'exemple renvoie:
        id      7f7096d2-5c44-4d9a-ac01-b904c7611b7b
        state   accepted
    
  4. Vérifiez les détails ou l'état de l'application que vous avez soumise :

    Action :Entrez:

        ibmcloud ae-v3 spark-app show --instance-id INSTANCE_ID --app-id APPLICATION_ID
    

    Valeurs des paramètres :

    • INSTANCE_ID : valeur de GUID à partir de la réponse de l'appel de création Analytics Engine
    • APPLICATION_ID : valeur de l'ID à partir de la réponse de l'appel spark-app submit

    Example :Entrez:

        ibmcloud ae-v3 spark-app show --instance-id 181ea**9ee01b --app-id 7f7096d2-5c44-4d9a-ac01-b904c7611b7b
    

    Réponse
    L'exemple renvoie:
        application_details   <Nested Object>
        id                    7f7096d2-5c44-4d9a-ac01-b904c7611b7b
        state                 finished
        start_time            2022-03-01T12:58:54.000Z
        finish_time           2022-03-01T13:09:14.000Z
    

    L'exécution de l'application peut prendre entre 2 et 5 minutes.

Créer un service de journalisation pour afficher les journaux

Vous pouvez utiliser l'interface de ligne de commande Analytics Engine pour activer la journalisation, afin de vous aider à identifier et résoudre les problèmes dans IBM Analytics Engine. Avant de pouvoir activer la consignation, vous devez créer une instance de service IBM Log Analysis à laquelle les journaux sont transmis.

  1. Créez une instance de journalisation :

    Action :Entrez:

        ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATION
    

    Valeurs des paramètres :

    • NAME : nom de votre choix pour l'instance de service IBM Log Analysis
    • SERVICE_PLAN_NAME : nom du plan de service. Pour connaître les valeurs valides, voir Plans de service.
    • LOCATION : emplacements où Analytics Engine est activé pour envoyer des journaux à IBM Log Analysis. Pour connaître les emplacements valides, voir Services sans serveur de calcul.

    Example :Entrez:

        ibmcloud resource service-instance-create my-log-instance logdna 7-day us-south
    
     {: codeblock}
    

    Une fois le service de journalisation créé, vous pouvez vous connecter à {{site.data.keyword.Bluemix_short}}, rechercher l'instance de service de journalisation et cliquer sur le tableau de bord de surveillance. Vous pouvez afficher les journaux du pilote et de l'exécuteur, ainsi que tous les journaux d'application de votre application Spark.

    Effectuez une recherche à l'aide de application_id ou instance_id.

  2. Activer la journalisation de plateforme:

    Pour afficher les journaux de la plateforme {{site.data.keyword.iae_full_notm}}, vous devez utiliser le tableau de bord d'observabilité dans {{site.data.keyword.cloud_notm}} pour configurer la consignation de la plateforme. Voir Configuration des journaux de plateforme via le tableau de bord d'observabilité pour les étapes à suivre pour activer la journalisation via le tableau de bord d'observabilité.

  3. Activez la journalisation pour Analytics Engine:

    Action :Entrez:

        ibmcloud analytics-engine-v3 log-config COMMAND [arguments...] [command options]
    

    Valeurs des paramètres :

    • analytics-engine-v3 : utilisez ae-v3 pour utiliser les commandes CLI v3
    • COMMAND : utilisez la commande update pour activer la journalisation

    Example :Entrez:

       ibmcloud ae-v3 log-config update --instance-id 181ea**9ee01b --enable --output json
    

Supprimer l'instance Analytics Engine

Vous pouvez utiliser l'interface de ligne de commande pour supprimer une instance, par exemple, si vous avez besoin d'une instance avec une configuration complètement différente pour gérer des charges de travail plus importantes.

Vous pouvez conserver une instance Analytics Engine tant que vous le souhaitez et soumettre vos applications Spark par rapport à la même instance, au besoin.

Si vous souhaitez supprimer une instance Analytics Engine :

Action :Entrez:

    ibmcloud resource service-instance-delete NAME|ID [-g RESOURCE_GROUP] -f

Valeurs des paramètres :

  • NAME|ID : valeur de nom ou GUID à partir de la réponse de l'appel de création d'instance Analytics Engine
  • RESOURCE_GROUP : paramètre facultatif. Nom du groupe de ressources dans lequel se trouve l'instance sans serveur

Example :Entrez:

    ibmcloud resource service-instance-delete MyServiceInstance  -g default  -f

En savoir plus

Voir Référence CLI sans serveur IBM Analytics Engine.