Explore a criação de instâncias serverless e o envio de aplicativos usando a CLI
Aprenda a usar a CLI do IBM Analytics Engine para criar os serviços que você precisa para criar e gerenciar uma instância serverless e enviar e monitorar seus aplicativos Spark.
É possível criar uma instância serverless selecionando o plano serverless do IBM Analytics Engine Standard. Quando uma instância serverless é provisionada, um cluster do Apache Spark é criado, que pode ser customizado com pacotes de bibliotecas de sua escolha e no qual é possível executar seus aplicativos Spark.
Objetivos
Você aprenderá a instalar e configurar os serviços e componentes a seguir que precisarão usar a CLI:
- Uma instância do IBM Cloud Object Storage na qual sua instância do IBM Analytics Engine armazena bibliotecas de aplicativos e eventos de histórico do Spark customizados.
- Um depósito do Object Storage para arquivos de aplicativos e arquivos de dados.
- Uma instância serverless do IBM Analytics Engine. Esta instância é alocada com recursos de computação e de memória on demand sempre que as cargas de trabalho do Spark são implementadas. Quando um aplicativo não está em estado de execução, nenhum recurso de computação é alocado para a instância. O preço é baseado no uso real dos recursos consumidos pela instância, faturados em uma segunda base.
- Serviço de criação de log para ajudá-lo a solucionar problemas que possam ocorrer na instância do IBM Analytics Engine e no aplicativo enviado, bem como para visualizar qualquer saída gerada pelo seu aplicativo. Ao executar aplicativos com a criação de log ativada, os logs são encaminhados para um serviço IBM Log Analysis no qual eles são indexados, permitindo a procura de texto completo em todas as mensagens geradas e consulta conveniente com base em campos específicos.
Antes de Iniciar
Para começar a usar a CLI do Analytics Engine V3, é necessária:
- Uma conta do IBM Cloud®.
- Para instalar a CLI do IBM Cloud. Consulte Introdução à CLI do IBM Cloud para obter as instruções para fazer download e instalar a CLI.
Agora é possível começar a usar a CLI do Analytics Engine V3. Deve-se seguir as instruções nas etapas 1 e 2 para instalar os serviços necessários antes de iniciar com a etapa 3 para fazer upload e enviar os aplicativos Spark. A etapa 4 mostra como criar uma instância de criação de log e ativar a criação de log. A etapa 5 mostra como excluir uma instância do Analytics Engine, embora esta etapa seja opcional.
Criar uma instância do Cloud Object Storage e recuperar credenciais
Crie uma instância do IBM Cloud Object Storage e recupere as credenciais do Cloud Object Storage (chaves de serviço) usando a CLI do Analytics Engine Serverless.
A instância do Cloud Object Storage que você cria é necessária pela instância do IBM Analytics Engine como seu armazenamento de início da instância para eventos de histórico do Spark e quaisquer bibliotecas ou pacotes customizados que você deseja utilizar em seus aplicativos. Consulte Início da instância.
Para obter mais informações sobre como você pode criar um conjunto de bibliotecas com pacotes customizados que são armazenados no Cloud Object Storage e referenciados a partir de seu aplicativo, consulte Usando um conjunto de bibliotecas.
-
Efetue login no IBM Cloud® usando sua conta IBM Cloud®.
Ação :Enter:
ibmcloud api <URL> ibmcloud loginExemplo :Enter:
ibmcloud api https://cloud.ibm.com ibmcloud login -
Selecione o grupo de recursos. Obtenha a lista dos grupos de recursos para sua conta e selecione uma para criar a instância serverless do IBM Analytics Engine:
Ação :Enter:
ibmcloud target -g RESOURCE_GROUP_NAMEValores de parâmetro:
- RESOURCE_GROUP_NAME: o nome do grupo de recursos no qual a instância serverless deve residir
Exemplo :Enter:
ibmcloud resource groups ibmcloud target -g default -
Instale o serviço IBM Cloud Object Storage e, em seguida, a CLI do Analytics Engine V3:
Ação :Enter:
ibmcloud plugin install cloud-object-storageAção :Enter:
ibmcloud plugin install analytics-engine-v3 -
Crie uma instância do Cloud Object Storage:
Ação :Enter:
ibmcloud resource service-instance-create INSTANCE_NAME cloud-object-storage PLAN globalValores de parâmetro:
- INSTANCE_NAME: qualquer nome de sua escolha
- PLAN: o plano do Cloud Object Storage a ser usado ao criar a instância
Exemplo :Enter:
ibmcloud resource service-instance-create test-cos-object cloud-object-storage standard global- Resposta
- O exemplo retorna:
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 o CRN copiando o valor do ID a partir da resposta da chamada de criação do Cloud Object Storage na etapa anterior:
Ação :Enter:
ibmcloud cos config crn Resource Instance ID CRN: IDValores de parâmetro:
- ID: o valor do ID a partir da resposta da chamada de criação do Cloud Object Storage
Exemplo :Enter:
ibmcloud cos config crn Resource Instance ID CRN: crn:v1:bluemix:public:cloud-object-storage:global:a/867d444f64594fd68c7ebf4baf8f6c90:ebad3176-8a1a-41f2-a803-217621bf6309:: -
Crie um depósito do Cloud Object Storage:
Ação :Enter:
ibmcloud cos bucket-create --bucket BUCKET_NAME [--class CLASS_NAME] [--ibm-service-instance-id ID] [--region REGION] [--output FORMAT]Valores de parâmetro:
- BUCKET_NAME: qualquer nome de sua escolha
- ID: o valor do GUID a partir da resposta da chamada de criação do Cloud Object Storage
- REGION: a região da IBM Cloud na qual a instância do Cloud Object Storage foi criada
- FORMAT: o formato de saída que pode ser JSON ou texto.
Exemplo :Enter:
ibmcloud cos bucket-create --bucket test-cos-storage-bucket --region us-south --ibm-service-instance-id ebad3176-8a1a-41f2-a803-217621bf6309 --output json -
Crie chaves de serviço Cloud Object Storage:
Ação :Enter:
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.Exemplo :Enter:
ibmcloud resource service-key-create test-service-key-cos-bucket Writer --instance-name test-cos-object --parameters '{"HMAC":true}'- Resposta
- O exemplo retorna:
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::
Criar uma instância serverless do Analytics Engine
Criar uma instância serverless do Analytics Engine usando a CLI.
-
Crie a instância de serviço Analytics Engine:
Ação :Enter:
ibmcloud resource service-instance-create INSTANCE_NAME ibmanalyticsengine standard-serverless-spark us-south -p @provision.jsonValores de parâmetro:
- INSTANCE_NAME: qualquer nome de sua escolha
- @provision.json: estruture o arquivo JSON conforme mostrado no exemplo a seguir. Use a chave de acesso e secreta a partir da resposta da chamada de criação de chave de serviço Cloud Object Storage.
- Exemplo do arquivo provision.json
- arquivo JSON de amostra:
{ "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>"} }Exemplo :Enter:
ibmcloud resource service-instance-create test-ae-service ibmanalyticsengine standard-serverless-spark us-south -p @ae_provision.json- Resposta
-
O exemplo retorna:
` text Criando instância de serviço test-ae-service no grupo de recursosde conta como ... 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
-
Verifique o status do serviço Analytics Engine:
Ação :Enter:
ibmcloud ae-v3 instance show –id INSTANCE_IDValores de parâmetro:
- INSTANCE_ID: o valor do GUID a partir da resposta da chamada de criação de instância do Analytics Engine
Exemplo :Enter:
ibmcloud ae-v3 instance show –id 181ea**9ee01b- Resposta
- O exemplo retorna:
{ "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": "**" }Envie o seu aplicativo Spark apenas quando o estado do serviço Analytics Engine estiver ativo.
Fazer upload e enviar um aplicativo Spark
Faça upload de um arquivo de aplicativo para Cloud Object Storage e envie um aplicativo Spark.
Este tutorial mostra como incluir o aplicativo Spark no depósito de instância do Cloud Object Storage que é usado como início da instância pela instância do Analytics Engine . Se você deseja separar os arquivos relacionados da instância dos arquivos que você usa para executar seus aplicativos, por exemplo, os próprios arquivos de aplicativos, arquivos de dados e quaisquer resultados de sua análise, é possível usar um depósito diferente na mesma instância do Cloud Object Storage ou usar uma instância do Cloud Object Storage diferente.
-
Faça upload do arquivo do aplicativo Spark:
Ação :Enter:
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âmetro:
- BUCKET_NAME: o nome do depósito usado quando o depósito foi criado
- KEY: o nome do arquivo de aplicativo
- PATH: o nome e caminho do arquivo para o arquivo de aplicativo do Spark
Exemplo :Enter:
ibmcloud cos upload --bucket test-cos-storage-bucket --key test-math.py --file test-math.py- Arquivo de aplicativo de amostra
- Amostra do
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 retornar spark,sc
def transformFunc(x): retornar cmath.sqrt(x) +cmath.log(x)+cmath.log10(x)
def main(): spark, sc = init_spark () partições=[10,5] para i no intervalo (0, 2): data=range (1.20000000) v0 = sc.parallelize(data, [partitionsi]) v1 = v0.map(transformFunc) print(fv1.count is {v1.count()}. Done") time.sleep(60)
se name =='main': main()
{: codeblock} -
Verifique o status do serviço Analytics Engine:
Ação :Enter:
ibmcloud ae-v3 instance show –id INSTANCE IDValores de parâmetro:
- INSTANCE_ID: o valor do GUID a partir da resposta da chamada de criação de instância do Analytics Engine
Exemplo :Enter:
ibmcloud ae-v3 instance show –id 181ea**9ee01b- Resposta
- O exemplo retorna:
{ "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": "**" }Envie o seu aplicativo Spark apenas quando o estado do serviço Analytics Engine estiver ativo.
-
Envie o aplicativo Spark:
Ação :Enter:
ibmcloud ae-v3 spark-app submit --instance-id INSTANCE_ID -–app APPLICATION_PATHValores de parâmetro:
- INSTANCE_ID: o valor do GUID a partir da resposta da chamada de criação de instância do Analytics Engine
- APPLICATION_PATH: o nome e o caminho do arquivo para o arquivo de aplicativo do Spark
Exemplo para IOS e Linux :Enter:
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"}'Exemplo para Windows (não Powershell). Observe que, no Windows, as aspas precisam ser escapadas. :Enter:
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\"}"- Resposta
- O exemplo retorna:
id 7f7096d2-5c44-4d9a-ac01-b904c7611b7b state accepted -
Confira os detalhes ou o status do aplicativo que você enviou:
Ação :Enter:
ibmcloud ae-v3 spark-app show --instance-id INSTANCE_ID --app-id APPLICATION_IDValores de parâmetro:
- INSTANCE_ID: o valor do GUID a partir da resposta da chamada de criação do Analytics Engine
- APPLICATION_ID: o valor do ID a partir da resposta da chamada de envio spark-app
Exemplo :Enter:
ibmcloud ae-v3 spark-app show --instance-id 181ea**9ee01b --app-id 7f7096d2-5c44-4d9a-ac01-b904c7611b7b- Resposta
- O exemplo retorna:
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.000ZO aplicativo pode levar entre 2 a 5 minutos para ser concluído..
Gere um serviço de criação de log para ver os logs
É possível usar a CLI do Analytics Engine para ativar a criação de log para ajudar a solucionar problemas no IBM Analytics Engine. Antes de ativar a criação de log, é necessário criar uma instância de serviço IBM Log Analysis para a qual os logs são encaminhados.
-
Gere uma instância de criação de log:
Ação :Enter:
ibmcloud resource service-instance-create NAME logdna SERVICE_PLAN_NAME LOCATIONValores de parâmetro:
- NAME: qualquer nome de sua escolha para a instância de serviço IBM Log Analysis
- SERVICE_PLAN_NAME: o nome do plano de serviço. Para obter valores válidos, consulte Planos de serviço.
- LOCAL: localidades em que o Analytics Engine está ativado para enviar logs para o IBM Log Analysis. Para locais válidos, consulte Serviços de computação serverless.
Exemplo :Enter:
ibmcloud resource service-instance-create my-log-instance logdna 7-day us-south{: codeblock}Uma vez gerado o serviço de criação de log, é possível efetuar login no {{site.data.keyword.Bluemix_short}}, procurar a instância de serviço de criação de log e clicar no painel de monitoramento. Lá é possível visualizar os logs do driver e do executor, bem como todos os logs de aplicativos para o seu aplicativo Spark.
Procure usando
application_idouinstance_id. -
Ativar criação de log da plataforma:
Para visualizar os logs da plataforma {{site.data.keyword.iae_full_notm}}, deve-se usar o painel Observabilidade em {{site.data.keyword.cloud_notm}} para configurar a criação de log da plataforma. Consulte Configurando logs da plataforma por meio do Painel de observabilidade para conhecer as etapas que devem ser seguidas para ativar a criação de log por meio do painel Observabilidade.
-
Ative a criação de log para o Analytics Engine:
Ação :Enter:
ibmcloud analytics-engine-v3 log-config COMMAND [arguments...] [command options]Valores de parâmetro:
analytics-engine-v3: useae-v3para usar os comandos da CLI v3- COMMAND: use o comando
updatepara ativar a criação de log
Exemplo :Enter:
ibmcloud ae-v3 log-config update --instance-id 181ea**9ee01b --enable --output json
Excluir instância do Analytics Engine
É possível usar a CLI para excluir uma instância, por exemplo, se você precisar de uma instância com uma configuração completamente diferente para manipular cargas de trabalho maiores.
É possível reter uma instância do Analytics Engine desde que você deseja enviar seus aplicativos Spark com relação à mesma instância em uma base necessária.
Se você deseja excluir uma instância do Analytics Engine:
Ação :Enter:
ibmcloud resource service-instance-delete NAME|ID [-g RESOURCE_GROUP] -f
Valores de parâmetro:
- NAME|ID: o valor do Nome ou do GUID a partir da resposta da chamada de criação de instância do Analytics Engine
- RESOURCE_GROUP: parâmetro opcional. O nome do grupo de recursos no qual a instância serverless reside
Exemplo :Enter:
ibmcloud resource service-instance-delete MyServiceInstance -g default -f
Saiba mais
Consulte a Referência da CLI serverless do IBM Analytics Engine.