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:
- Una cuenta de IBM Cloud®.
- Instalar la CLI de IBM Cloud. Consulte Iniciación a la CLI de IBM Cloud para ver las instrucciones para descargar e instalar la CLI.
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.
-
Inicie sesión en IBM Cloud® utilizando la cuenta de IBM Cloud®.
Acción :Intro:
ibmcloud api <URL> ibmcloud loginEjemplo :Intro:
ibmcloud api https://cloud.ibm.com ibmcloud login -
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_NAMEValores 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 -
Instale el servicio IBM Cloud Object Storage y luego la CLI de Analytics Engine V3:
Acción :Intro:
ibmcloud plugin install cloud-object-storageAcción :Intro:
ibmcloud plugin install analytics-engine-v3 -
Cree una instancia de Cloud Object Storage:
Acción :Intro:
ibmcloud resource service-instance-create INSTANCE_NAME cloud-object-storage PLAN globalValores 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 -
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: IDValores 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:: -
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 -
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.
-
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.jsonValores 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 groupde 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
-
Compruebe el estado del servicio de Analytics Engine:
Acción :Intro:
ibmcloud ae-v3 instance show –id INSTANCE_IDValores 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.
-
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} -
Compruebe el estado del servicio de Analytics Engine:
Acción :Intro:
ibmcloud ae-v3 instance show –id INSTANCE IDValores 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.
-
Envíe la aplicación de Spark:
Acción :Intro:
ibmcloud ae-v3 spark-app submit --instance-id INSTANCE_ID -–app APPLICATION_PATHValores 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 -
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_IDValores 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.000ZLa 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.
-
Cree una instancia de registro:
Acción :Intro:
ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATIONValores 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_idoinstance_id. -
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.
-
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: Utiliceae-v3para utilizar los mandatos de la CLI de v3- COMMAND: Utilice el mandato
updatepara 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.