Explore la creación de instancias sin servidor y el envío de aplicaciones utilizando la CLI

Aprenda a utilizar la CLI de IBM Analytics Engine para crear los servicios que necesita para crear y gestionar una instancia sin servidor y para enviar y supervisar las aplicaciones de Spark.

Puede crear una instancia sin servidor seleccionando el plan IBM Analytics Engine Standard sin servidor. Cuando se suministra una instancia sin servidor, se crea un clúster de Apache Spark, que puede personalizar con los paquetes de biblioteca que elija, y es donde se ejecutan las aplicaciones Spark.

Objetivos

Aprenderá a instalar y configurar los siguientes servicios y componentes que necesitará para utilizar la CLI:

  • Una instancia de IBM Cloud Object Storage en la que la instancia de IBM Analytics Engine almacena bibliotecas de aplicaciones personalizadas y sucesos de historial de Spark.
  • Un grupo de Object Storage para archivos de aplicación y archivos de datos.
  • Una instancia de IBM Analytics Engine sin servidor. A esta instancia se le asignan recursos de cálculo y memoria bajo demanda siempre que se despliegan cargas de trabajo de Spark. Cuando una aplicación no está en estado de ejecución, no se asignan recursos de cálculo a la instancia. El precio se basa en el uso real de los recursos consumidos por la instancia, facturados por segundo.
  • Servicio de registro para ayudarle a resolver problemas que pueden producirse en la instancia de IBM Analytics Engine y la aplicación enviada, así como para ver cualquier resultado generado por la aplicación. Cuando ejecuta aplicaciones con el registro habilitado, los registros se reenvían a un servicio IBM Log Analysis donde se indexan, lo que permite la búsqueda de texto completo a través de todos los mensajes generados y consultas basándose en campos específicos.

Antes de empezar

Para empezar a utilizar la CLI de Analytics Engine V3, necesita:

Ahora puede empezar a utilizar la CLI de Analytics Engine V3. Debe seguir las instrucciones de los pasos 1 y 2 para instalar los servicios necesarios antes de empezar con el paso 3 para cargar y enviar aplicaciones Spark. El paso 4 muestra cómo crear una instancia de registro y habilitar el registro. El paso 5 muestra cómo suprimir una instancia de Analytics Engine, aunque este paso es opcional.

Crear una instancia de Cloud Object Storage y recuperar credenciales

Cree una instancia de IBM Cloud Object Storage y recupere las credenciales de Cloud Object Storage (claves de servicio) utilizando la CLI de Analytics Engine sin servidor.

La instancia de Cloud Object Storage que cree es necesaria para la instancia de IBM Analytics Engine como su almacenamiento inicial de instancia para los sucesos de historial de Spark y las bibliotecas o paquetes personalizados que desee utilizar en las aplicaciones. Consulte Inicio de instancia.

Para obtener más información sobre cómo crear un conjunto de bibliotecas con paquetes personalizados almacenados en Cloud Object Storage y a los que se hace referencia desde la aplicación, consulte Utilización de un conjunto de bibliotecas.

  1. Inicie sesión en IBM Cloud® utilizando la cuenta de IBM Cloud®.

    Acción :Intro:

        ibmcloud api <URL>
        ibmcloud login
    

    Ejemplo :Intro:

        ibmcloud api https://cloud.ibm.com
        ibmcloud login
    
  2. Seleccione el grupo de recursos. Obtenga la lista de los grupos de recursos de su cuenta y seleccione una en la que crear la instancia sin servidor de IBM Analytics Engine:

    Acción :Intro:

        ibmcloud target -g RESOURCE_GROUP_NAME
    

    Valores de parámetros:

    • RESOURCE_GROUP_NAME: El nombre del grupo de recursos en el que va a residir la instancia sin servidor

    Ejemplo :Intro:

        ibmcloud resource groups
        ibmcloud target -g default
    
  3. Instale el servicio IBM Cloud Object Storage y luego la CLI de Analytics Engine V3:

    Acción :Intro:

        ibmcloud plugin install cloud-object-storage
    

    Acción :Intro:

        ibmcloud plugin install analytics-engine-v3
    
  4. Cree una instancia de Cloud Object Storage:

    Acción :Intro:

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

    Valores de parámetros:

    • INSTANCE_NAME: El nombre nombre que elija
    • PLAN: El plan de Cloud Object Storage que se debe utilizar al crear la instancia

    Ejemplo :Intro:

        ibmcloud resource service-instance-create test-cos-object cloud-object-storage standard global
    
    Respuesta
    El ejemplo devuelve:
        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. Configure el CRN copiando el valor del ID de la respuesta de la llamada de creación de Cloud Object Storage en el paso anterior:

    Acción :Intro:

        ibmcloud cos config crn
        Resource Instance ID CRN: ID
    

    Valores de parámetros:

    • ID: El valor del ID de la respuesta de la llamada de creación de Cloud Object Storage

    Ejemplo :Intro:

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

    Acción :Intro:

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

    Valores de parámetros:

    • BUCKET_NAME: El nombre que elija
    • ID: El valor de GUID de la respuesta de la llamada de creación de Cloud Object Storage
    • REGION: La región de IBM Cloud en la que se ha creado la instancia de Cloud Object Storage
    • FORMAT: El formato de salida puede ser JSON o texto.

    Ejemplo :Intro:

        ibmcloud cos bucket-create --bucket test-cos-storage-bucket --region us-south --ibm-service-instance-id ebad3176-8a1a-41f2-a803-217621bf6309 --output json
    
  7. Cree claves de servicio de Cloud Object Storage:

    Acción :Intro:

        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.
    

    Ejemplo :Intro:

        ibmcloud resource service-key-create test-service-key-cos-bucket Writer --instance-name test-cos-object --parameters '{"HMAC":true}'
    
    Respuesta
    El ejemplo devuelve:
    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::
    

Crear una instancia de Analytics Engine sin servidor

Cree una instancia de Analytics Engine sin servidor utilizando la CLI.

  1. Cree la instancia de servicio de Analytics Engine:

    Acción :Intro:

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

    Valores de parámetros:

    • INSTANCE_NAME: El nombre nombre que elija
    • @provision.json: Estructura el archivo JSON tal como se muestra en el ejemplo siguiente. Utilice el acceso y la clave secreta de la respuesta de la llamada de creación de la clave de servicio de Cloud Object Storage.
    Ejemplo del archivo provision.json
    Archivo JSON de ejemplo:
        {
           "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>"}
        }
    

    Ejemplo :Intro:

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

    El ejemplo devuelve: ` text Creating service instance test-ae-service in resource group de cuenta as ...

    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. Compruebe el estado del servicio de Analytics Engine:

    Acción :Intro:

        ibmcloud ae-v3 instance show –id INSTANCE_ID
    

    Valores de parámetros:

    • INSTANCE_ID: El valor de GUID de la respuesta de la llamada de creación de instancia de Analytics Engine

    Ejemplo :Intro:

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

    Respuesta
    El ejemplo devuelve:
        {
           "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": "**"
        }
    

    Solo envíe la aplicación Spark cuando el estado del servicio de Analytics Engine sea activo.

Cargar y enviar una aplicación Spark

Cargue un archivo de aplicación a Cloud Object Storage y envíe una aplicación Spark.

Esta guía de aprendizaje muestra cómo añadir la aplicación Spark al grupo de instancias de Cloud Object Storage que se utiliza como inicio de instancia por la instancia de Analytics Engine. Si desea separar los archivos relacionados con la instancia de los archivos que utiliza para ejecutar las aplicaciones, por ejemplo los propios archivos de aplicaciones, los archivos de datos y los resultados de su análisis, puede utilizar un grupo distinto en la misma instancia de Cloud Object Storage o utilizar una instancia de Cloud Object Storage diferente.

  1. Cargue el archivo de aplicación Spark:

    Acción :Intro:

        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]
    

    Valores de parámetros:

    • BUCKET_NAME: Nombre del grupo utilizado cuando se creó el grupo
    • KEY: Nombre del archivo de aplicación
    • PATH: Nombre de archivo y vía de acceso al archivo de aplicación Spark

    Ejemplo :Intro:

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

    Ejemplo de archivo de aplicación
    Ejemplo 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): return cmath.sqrt(x) +cmath.log(x)+cmath.log10(x)

    def main(): spark, sc = init_spark () particiones=[10,5] para i en el rango (0, 2): data=rango (1.20000000) v0 = sc.parallelize(datos, [particionesi]) v1 = v0.map(transformFunc) print(fv1.count es {v1.count()}. Hecho") time.sleep(60)

    si nombre =='principal': main()

    {: codeblock}
    
    
    
  2. Compruebe el estado del servicio de Analytics Engine:

    Acción :Intro:

        ibmcloud ae-v3 instance show –id INSTANCE ID
    

    Valores de parámetros:

    • INSTANCE_ID: El valor de GUID de la respuesta de la llamada de creación de instancia de Analytics Engine

    Ejemplo :Intro:

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

    Respuesta
    El ejemplo devuelve:
        {
           "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": "**"
        }
    

    Solo envíe la aplicación Spark cuando el estado del servicio de Analytics Engine sea activo.

  3. Envíe la aplicación de Spark:

    Acción :Intro:

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

    Valores de parámetros:

    • INSTANCE_ID: El valor de GUID de la respuesta de la llamada de creación de instancia de Analytics Engine
    • APPLICATION_PATH: El nombre de archivo y la vía de acceso al archivo de aplicación Spark

    Ejemplo para IOS y Linux :Intro:

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

    Ejemplo para Windows (Not Powershell). Tenga en cuenta que en Windows, es necesario escapar las comillas. :Intro:

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

    Respuesta
    El ejemplo devuelve:
        id      7f7096d2-5c44-4d9a-ac01-b904c7611b7b
        state   accepted
    
  4. Compruebe los detalles o el estado de la aplicación que ha enviado:

    Acción :Intro:

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

    Valores de parámetros:

    • INSTANCE_ID: El valor de GUID de la respuesta de la llamada de creación de Analytics Engine
    • APPLICATION_ID: El valor de id de la respuesta de la llamada de envío de la aplicación de Spark

    Ejemplo :Intro:

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

    Respuesta
    El ejemplo devuelve:
        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
    

    La aplicación puede tardar entre 2 y 5 minutos en completarse.

Crear servicio de registro para ver registros

Puede utilizar la CLI de Analytics Engine para habilitar el registro para ayudarle a resolver problemas en IBM Analytics Engine. Antes de habilitar el registro, debe crear una instancia de servicio de IBM Log Analysis a la que se reenvían los registros.

  1. Cree una instancia de registro:

    Acción :Intro:

        ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATION
    

    Valores de parámetros:

    • NAME: El nombre que elija para la instancia de servicio de IBM Log Analysis
    • SERVICE_PLAN_NAME: El nombre del plan del servicio. Para obtener valores válidos, consulte Planes de servicio.
    • LOCATION: Ubicaciones en las que Analytics Engine está habilitado para enviar registros a IBM Log Analysis. Para conocer las ubicaciones válidas, consulte Servicios sin servidor de cálculo.

    Ejemplo :Intro:

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

    Una vez creado el servicio de registro, puede iniciar sesión en {{site.data.keyword.Bluemix_short}}, buscar la instancia de servicio de registro y pulsar en el panel de control de supervisión. Allí puede ver los registros del controlador y del ejecutor, así como todos los registros de aplicación para la aplicación Spark.

    Busque utilizando application_id o instance_id.

  2. Habilitar registro de plataforma:

    Para ver los registros de plataforma de {{site.data.keyword.iae_full_notm}}, debe utilizar el panel de control Observabilidad en {{site.data.keyword.cloud_notm}} para configurar el registro de plataforma. Consulte Configuración de registros de plataforma mediante el panel de control Observabilidad para ver los pasos que debe seguir para habilitar el registro a través del panel de control Observabilidad.

  3. Habilite el registro para Analytics Engine:

    Acción :Intro:

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

    Valores de parámetros:

    • analytics-engine-v3: Utilice ae-v3 para utilizar los mandatos de la CLI de v3
    • COMMAND: Utilice el mandato update para habilitar el registro

    Ejemplo :Intro:

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

Suprimir instancia de Analytics Engine

Puede utilizar la CLI para suprimir una instancia, por ejemplo, si necesita una instancia con una configuración completamente diferente para manejar cargas de trabajo mayores.

Puede retener una instancia de Analytics Engine tanto tiempo como desee y enviar las aplicaciones Spark en la misma instancia según sea necesario.

Si desea suprimir una instancia de Analytics Engine:

Acción :Intro:

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

Valores de parámetros:

  • NAME|ID: El valor de Name o GUID de la respuesta de la llamada de creación de instancia de Analytics Engine
  • RESOURCE_GROUP: Parámetro opcional. El nombre del grupo de recursos en el que reside la instancia sin servidor

Ejemplo :Intro:

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

Más información

Consulte la Referencia de CLI sin servidor de IBM Analytics Engine.