Esplorare la creazione di istanze serverless e inoltrare le applicazioni utilizzando la CLI

Impara come utilizzare la CLI IBM Analytics Engine per creare i servizi di cui hai bisogno per creare e gestire una istanza senza server e inoltrare e monitorare le tue applicazioni Spark.

Si crea un'istanza serverless selezionando il piano serverless IBM Analytics Engine Standard serverless. Quando viene provisata un'istanza serverless, viene creato un cluster Apache Spark, che è possibile personalizzare con i pacchetti di libreria della propria scelta ed è dove si eseguono le applicazioni Spark.

Obiettivi

Imparerai come installare e impostare i seguenti servizi e componenti di cui avrai bisogno per utilizzare la CLI:

  • Un'istanza IBM Cloud Object Storage in cui la tua istanza IBM Analytics Engine memorizza le librerie di applicazioni personalizzate e gli eventi di cronologia di Spark.
  • Un bucket Object Storage per file di applicazioni e file di dati.
  • Un IBM Analytics Engine istanza serverless. A questa istanza vengono assegnate risorse di calcolo e di memoria su richiesta ogni volta che vengono distribuiti carichi di lavoro Spark. Quando lo stato di un'applicazione non è in esecuzione, le risorse di calcolo non vengono assegnate all'istanza. Il prezzo si basa sull'effettivo utilizzo delle risorse consumate dall'istanza, fatturate su base per secondo.
  • Servizio di registrazione per aiutarti a risolvere i problemi che potrebbero verificarsi nell'istanza IBM Analytics Engine e inoltrato, oltre a visualizzare qualsiasi output generato dalla tua applicazione. Quando si eseguono applicazioni con il logging abilitato, i log vengono inoltrati a un servizio IBM Log Analysis dove vengono indicizzati, consentendo la ricerca full-text di tutti i messaggi generati e una comoda interrogazione basata su campi specifici.

Prima di iniziare

Per iniziare ad utilizzare il Analytics Engine V3 CLI è necessario:

Ora è possibile iniziare a utilizzare il Analytics Engine V3 CLI. È necessario seguire le istruzioni riportate nei passi 1 e 2 per installare i servizi richiesti prima di iniziare con il passo 3 per upload e inoltrare le applicazioni Spark. Passo 4 mostra come creare un'istanza di registrazione e abilitare la registrazione. Il passo 5 mostra come eliminare un'istanza di Analytics Engine, sebbene questo passaggio sia facoltativo.

Creare un'istanza di Cloud Object Storage e recuperare le credenziali

Creare un'istanza di IBM Cloud Object Storage e recuperare le credenziali di Cloud Object Storage (chiavi di servizio) utilizzando la CLI di Analytics Engine Serverless.

L'istanza Cloud Object Storage che si crea è richiesta dall'istanza IBM Analytics Engine come la sua memoria home per gli eventi di cronologia di Spark e le eventuali librerie o pacchetti personalizzati che si desidera utilizzare nelle applicazioni. Consultare Home di istanza.

Per ulteriori informazioni su come è possibile creare una libreria impostata con pacchetti personalizzati che vengono memorizzati in Cloud Object Storage e a cui si fa riferimento dall'applicazione, consultare Utilizzo di una serie di librerie.

  1. Accedi a IBM Cloud® utilizzando il tuo account IBM Cloud®.

    Azione :Immettere:

        ibmcloud api <URL>
        ibmcloud login
    

    Esempio :Immettere:

        ibmcloud api https://cloud.ibm.com
        ibmcloud login
    
  2. Selezionare il gruppo di risorse. Ottenere l'elenco dei gruppi di risorse per l'account e selezionarne uno in cui creare l'istanza IBM Analytics Engine serverless:

    Azione :Immettere:

        ibmcloud target -g RESOURCE_GROUP_NAME
    

    Valori di parametro:

    • RESOURCE_GROUP_NAME: il nome del gruppo di risorse in cui deve risiedere l'istanza serverless

    Esempio :Immettere:

        ibmcloud resource groups
        ibmcloud target -g default
    
  3. Installare il servizio IBM Cloud Object Storage e quindi l'Analytics Engine V3 CLI:

    Azione :Immettere:

        ibmcloud plugin install cloud-object-storage
    

    Azione :Immettere:

        ibmcloud plugin install analytics-engine-v3
    
  4. Creare un'istanza di Cloud Object Storage:

    Azione :Immettere:

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

    Valori di parametro:

    • INSTANCE_NAME: Qualsiasi nome della tua scelta
    • PLAN: il piano Cloud Object Storage da utilizzare quando si crea l'istanza

    Esempio :Immettere:

        ibmcloud resource service-instance-create test-cos-object cloud-object-storage standard global
    
    Risposta
    L'esempio restituisce:
        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. Configurare il CRN copiando il valore di ID dalla risposta la chiamata di creazione di Cloud Object Storage nel passo precedente:

    Azione :Immettere:

        ibmcloud cos config crn
        Resource Instance ID CRN: ID
    

    Valori di parametro:

    • ID: Il valore di ID dalla risposta la chiamata di creazione Cloud Object Storage

    Esempio :Immettere:

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

    Azione :Immettere:

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

    Valori di parametro:

    • BUCKET_NAME: Qualsiasi nome a scelta
    • ID: il valore del GUID dalla chiamata di creazione di Cloud Object Storage dalla risposta
    • REGIONE: La regione IBM Cloud in cui è stata creata l'istanza Cloud Object Storage
    • FORMATO: il formato di output può essere JSON o testo.

    Esempio :Immettere:

        ibmcloud cos bucket-create --bucket test-cos-storage-bucket --region us-south --ibm-service-instance-id ebad3176-8a1a-41f2-a803-217621bf6309 --output json
    
  7. Creare chiavi di servizio Cloud Object Storage:

    Azione :Immettere:

        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.
    

    Esempio :Immettere:

        ibmcloud resource service-key-create test-service-key-cos-bucket Writer --instance-name test-cos-object --parameters '{"HMAC":true}'
    
    Risposta
    L'esempio ritorna:
    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::
    

Creare un'istanza serverless Analytics Engine

Crea un'istanza Analytics Engine senza server utilizzando la CLI.

  1. Creare l'istanza di servizio di Analytics Engine:

    Azione :Immettere:

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

    Valori di parametro:

    • INSTANCE_NAME: Qualsiasi nome della tua scelta
    • @provision.json: strutturare il file JSON come mostrato nel seguente esempio. Utilizza l'accesso e la chiave segreta dalla risposta alla chiamata di creazione della chiave del servizio di Cloud Object Storage.
    Esempio del file provision.json
    File JSON di esempio:
        {
           "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>"}
        }
    

    Esempio :Immettere:

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

    L'esempio restituisce: ` text Creazione dell'istanza del servizio test - ae - service nel gruppo di risorse di account come ...

    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. Controllare lo stato del servizio Analytics Engine:

    Azione :Immettere:

        ibmcloud ae-v3 instance show –id INSTANCE_ID
    

    Valori di parametro:

    • INSTANCE_ID: Il valore di GUID dalla risposta la chiamata di creazione dell'istanza di Analytics Engine

    Esempio :Immettere:

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

    Risposta
    L'esempio restituisce:
        {
           "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": "**"
        }
    

    Inoltrare l'applicazione Spark solo quando lo stato del servizio Analytics Engine è attivo.

Carica e inoltra un'applicazione Spark

Carica un file dell'applicazione in Cloud Object Storage e invia un'applicazione Spark.

Questo tutorial mostra come aggiungere l'applicazione Spark al bucket di istanza Cloud Object Storage utilizzato come home istanza dall'istanza Analytics Engine. Se si desidera separare i file correlati dell'istanza dai file utilizzati per eseguire le applicazioni, ad esempio le file delle applicazioni stesse, i file di dati e gli eventuali risultati della propria analisi, è possibile utilizzare un bucket diverso nella stessa istanza Cloud Object Storage oppure utilizzare un'istanza diversa Cloud Object Storage.

  1. Carica il file dell'applicazione Spark:

    Azione :Immettere:

        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]
    

    Valori di parametro:

    • BUCKET_NAME: Nome del secchio usato quando il secchio è stato creato
    • KEY: Nome file di applicazione
    • PATH: nome e percorso del file dell'applicazione Spark

    Esempio :Immettere:

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

    File di applicazioni di esempio
    Esempio di 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 restituire spark,sc

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

    def main(): spark, sc = init_spark () partitions=[10,5] per i nell'intervallo (0, 2): data=intervallo (1.20000000) v0 = sc.parallelize(data, [partitionsi]) v1 = v0.map(transformFunc) print(fv1.count è {v1.count()}. Fatto") time.sleep(60)

    se nome =="principale": Main()

    {: codeblock}
    
    
    
  2. Controllare lo stato del servizio Analytics Engine:

    Azione :Immettere:

        ibmcloud ae-v3 instance show –id INSTANCE ID
    

    Valori di parametro:

    • INSTANCE_ID: Il valore di GUID dalla risposta la chiamata di creazione dell'istanza di Analytics Engine

    Esempio :Immettere:

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

    Risposta
    L'esempio restituisce:
        {
           "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": "**"
        }
    

    Inoltrare l'applicazione Spark solo quando lo stato del servizio Analytics Engine è attivo.

  3. Invia l'applicazione Spark:

    Azione :Immettere:

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

    Valori di parametro:

    • INSTANCE_ID: Il valore di GUID dalla risposta la chiamata di creazione dell'istanza di Analytics Engine
    • APPLICATION_PATH: Il nome del file e il percorso al file delle applicazioni Spark

    Esempio per IOS e Linux :Immettere:

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

    Esempio per Windows (Non Powershell). Da notare che su Windows le quotazioni devono essere sfuggite. :Immettere:

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

    Risposta
    L'esempio restituisce:
        id      7f7096d2-5c44-4d9a-ac01-b904c7611b7b
        state   accepted
    
  4. Controllare i dettagli o lo stato dell'applicazione inoltrata:

    Azione :Immettere:

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

    Valori di parametro:

    • INSTANCE_ID: Il valore di GUID dalla risposta la chiamata di creazione di Analytics Engine
    • APPLICATION_ID: Il valore dell'id dalla risposta della chiamata spark - app

    Esempio :Immettere:

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

    Risposta
    L'esempio restituisce:
        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'applicazione potrebbe richiedere tra 2 e 5 minutes minuti per completare.

Creare servizio di registrazione per vedere i log

È possibile utilizzare la CLI di Analytics Engine per attivare la registrazione e aiutare a risolvere i problemi di IBM Analytics Engine. Prima di attivare la registrazione, è necessario creare un'istanza del servizio IBM Log Analysis a cui inoltrare i registri.

  1. Creare un'istanza di registrazione:

    Azione :Immettere:

        ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATION
    

    Valori di parametro:

    • NOME: qualsiasi nome a scelta per l'istanza del servizio IBM Log Analysis
    • NOME_DEL_PIANO_DI_SERVIZIO: Il nome del piano di servizio. Per valori validi, consultare Piani di servizio.
    • POSIZIONE: le posizioni in cui Analytics Engine è abilitato per inviare i log a IBM Log Analysis. Per le posizioni valide, consultare Compute serverless services.

    Esempio :Immettere:

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

    Una volta creato il servizio di registrazione, è possibile accedere a {{site.data.keyword.Bluemix_short}}, cercare l'istanza del servizio di registrazione e clicca sulla dashboard di monitoraggio. Lì è possibile visualizzare il driver e i log degli esecutori, così come tutti i log delle applicazioni per l'applicazione Spark.

    Ricerca utilizzando il application_id o instance_id.

  2. Abilitare la registrazione della piattaforma:

    Per visualizzare i log della piattaforma {{site.data.keyword.iae_full_notm}}, è necessario utilizzare il dashboard di Observability in {{site.data.keyword.cloud_notm}} per configurare la registrazione della piattaforma. Consultare Configurazione dei log della piattaforma tramite il dashboard di Osservabilità per le operazioni da seguire per abilitare la registrazione tramite il dashboard di Osservabilità.

  3. Abilitare la registrazione per Analytics Engine:

    Azione :Immettere:

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

    Valori di parametro:

    • analytics-engine-v3: utilizzare ae-v3 per utilizzare i comandi CLI v3
    • COMUNE: Utilizzare il comando update per abilitare la registrazione

    Esempio :Immettere:

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

Elimina istanza Analytics Engine

È possibile utilizzare la CLI per eliminare un'istanza, ad esempio se è necessaria un'istanza con una configurazione completamente diversa per gestire carichi di lavoro maggiori.

È possibile conservare un'istanza Analytics Engine fino a quando si desidera e inoltrare le applicazioni Spark contro la stessa istanza su base as-necessaria.

Se si desidera eliminare un'istanza Analytics Engine:

Azione :Immettere:

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

Valori di parametro:

  • NOME | ID: Il valore di Nome o GUID dalla risposta della chiamata di creazione dell'istanza Analytics Engine
  • RESOURCE_GROUP: Parametro facoltativo. Il nome del gruppo di risorse in cui risiede l'istanza serverless

Esempio :Immettere:

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

Ulteriori informazioni

Vedere il 'IBM Analytics Engine riferimento CLI serverless.