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 :
- Un compte IBM Cloud®.
- Pour installer l'interface de ligne de commande IBM Cloud. Voir Initiation à l'interface de ligne de commande IBM Cloud pour les instructions de téléchargement et d'installation de l'interface de ligne de commande.
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.
-
Connectez-vous à IBM Cloud® à l'aide de votre compte IBM Cloud®.
Action :Entrez:
ibmcloud api <URL> ibmcloud loginExample :Entrez:
ibmcloud api https://cloud.ibm.com ibmcloud login -
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_NAMEValeurs 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 -
Installez le service IBM Cloud Object Storage, puis l'interface de ligne de commande Analytics Engine V3 :
Action :Entrez:
ibmcloud plugin install cloud-object-storageAction :Entrez:
ibmcloud plugin install analytics-engine-v3 -
Créez une instance Cloud Object Storage :
Action :Entrez:
ibmcloud resource service-instance-create INSTANCE_NAME cloud-object-storage PLAN globalValeurs 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 -
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: IDValeurs 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:: -
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 -
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.
-
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.jsonValeurs 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 ressourcesdu 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
-
Vérifiez l'état du service Analytics Engine :
Action :Entrez:
ibmcloud ae-v3 instance show –id INSTANCE_IDValeurs 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.
-
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} -
Vérifiez l'état du service Analytics Engine :
Action :Entrez:
ibmcloud ae-v3 instance show –id INSTANCE IDValeurs 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.
-
Soumettez l'application Spark :
Action :Entrez:
ibmcloud ae-v3 spark-app submit --instance-id INSTANCE_ID -–app APPLICATION_PATHValeurs 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 -
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_IDValeurs 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.000ZL'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.
-
Créez une instance de journalisation :
Action :Entrez:
ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATIONValeurs 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_idouinstance_id. -
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é.
-
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: utilisezae-v3pour utiliser les commandes CLI v3- COMMAND : utilisez la commande
updatepour 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