Para evitar que sejam realizadas cobranças do Google Cloud referentes a um cluster inativo, use o recurso de exclusão programada do cluster do Serviço Gerenciado para Apache Spark ao criar um cluster. Esse recurso oferece opções para excluir um cluster quando os seguintes eventos ocorrem:
- após um período de inatividade especificado do cluster
- em um horário futuro especificado;
- após um período especificado que começa a partir do momento do envio da solicitação de criação do cluster.
Ações que desativam a exclusão programada
Enquanto um cluster está em execução, as ações a seguir desativam a exclusão programada até que a ação de desativação seja revertida:
- Remover o papel do agente de serviço do Serviço Gerenciado para Apache Spark do IAM na conta de serviço do agente de serviço do Dataproc
- Desativar a API Dataproc no projeto do cluster
- Ativar a proteção contra exclusão de VMs do Compute Engine em uma VM de cluster de exclusão programada
- Ativar o VPC-Service Controls se a conta de serviço do agente de serviço do Serviço Gerenciado para Apache Spark (identidade do plano de controle) não estiver dentro do limite do perímetro
Calcular o tempo de inatividade do cluster
É possível usar a exclusão programada para excluir um cluster após um tempo de inatividade especificado. O tempo de inatividade é calculado após a criação e o provisionamento do cluster. O cálculo do tempo de inatividade começa quando um cluster não tem jobs em execução.
A propriedade do cluster dataproc:dataproc.cluster-ttl.consider-yarn-activity afeta o cálculo do tempo de inatividade do cluster da seguinte maneira:
- Essa propriedade é ativada (definida como
true) por padrão. - Quando essa propriedade está ativada, as atividades do YARN e da API Jobs Dataproc precisam estar inativas para iniciar e continuar incrementando o cálculo do tempo de inatividade do cluster.
- A atividade do YARN inclui aplicativos do YARN pendentes e em execução.
- A atividade da API Jobs Dataproc inclui jobs pendentes e em execução enviados à API Jobs Dataproc.
- Quando essa propriedade é definida como
false, o cálculo do tempo de inatividade do cluster começa e continua apenas quando a atividade da API Jobs Dataproc está inativa.
A propriedade dataproc:dataproc.cluster-ttl.consider-yarn-activity se aplica a clusters criados com versões de imagem lançadas em 1.4.64, 1.5.39, 2.0.13 ou versões mais recentes. Para clusters criados com versões de imagem anteriores, apenas a atividade da API Jobs Dataproc é considerada no cálculo do tempo de inatividade do cluster.
Usar a exclusão programada de cluster
É possível definir valores de exclusão programada ao criar um cluster usando a Google Cloud CLI, a API Dataproc ou o Google Cloud console. Depois de criar o cluster, é possível atualizá-lo para alterar ou excluir os valores de exclusão programada definidos anteriormente.
Google Cloud Console do
- Abra a página Criar cluster.
- Em Definir configurações de controle de custos , selecione Definir uma política de retenção opcional para controlar os custos, e selecione as configurações de exclusão programada (ou parada programada).
CLI gcloud
É possível criar ou atualizar valores de exclusão programada em um cluster transmitindo as
flags e os valores listados na tabela a seguir para os
gcloud dataproc clusters create
ou gcloud dataproc clusters update
comandos.
| Flag da CLI gcloud | Descrição | Granularidade do valor | Valor mínimo | Valor máximo |
|---|---|---|---|---|
--delete-max-idle1 |
Aplica-se aos comandos de criação e atualização de cluster.
A duração entre o momento em que o cluster fica inativo após a
criação ou atualização e está em um estado pronto para uso até o
momento em que a exclusão do cluster começa. Forneça a duração no
IntegerUnit formato, em que a unidade pode ser "s, m, h, d"
(segundos, minutos, horas, dias). Exemplo: "30m": 30 minutos a partir do momento
em que o cluster fica inativo. |
1 segundo | 5 minutos | 14 dias |
--no-delete-max-idle |
Aplica-se apenas ao comando de atualização de cluster.
Cancela a exclusão do cluster pela configuração da delete-max-idle
flag anterior. |
não aplicável | não aplicável | não aplicável |
--delete-expiration-time2 |
Aplica-se aos comandos de criação e atualização de cluster. Tempo para iniciar a exclusão do cluster em formato de data e hora ISO 8601. Para gerar a data e hora no formato correto, use o gerador de carimbo de data/hora. Por exemplo, "2017-08-22T13:31:48-08:00" especifica o tempo de expiração 13h21m48s no fuso horário UTC -8:00. | 1 segundo | 10 minutos a partir do horário atual | 14 dias a partir do horário atual |
--delete-max-age2 |
Aplica-se aos comandos de criação e atualização de cluster.
Duração entre o momento do envio da solicitação de criação do cluster e
o momento em que inicia a exclusão dele. Forneça a duração no
IntegerUnit formato, em que a unidade pode ser "s, m, h, d"
(segundos, minutos, horas, dias). Exemplos: "30m": 30 minutos a partir de agora;
"1d": 1 dia a partir de agora. |
1 segundo | 10 minutos | 14 dias |
--no-delete-max-age |
Aplica-se apenas ao comando de atualização de cluster.
Cancela a exclusão automática do cluster pela configuração da flag
delete-max-age ou delete-expiration-time anterior. |
Não aplicável | Não relevante | Não aplicável |
- É possível transmitir a flag
delete-max-idlecom a flagdelete-expiration-timeoudelete-max-agena solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para excluir o cluster. - É possível transmitir a flag
delete-expiration-timeou a flagdelete-max-agepara o comando de criação ou atualização do cluster, mas não ambas.
Exemplo de criação de cluster:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --delete-max-idle=DURATION \ --delete-expiration-time=TIME \ ... other flags ...
Exemplo de atualização de cluster:
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --delete-max-idle=DURATION \ --no-delete-max-age \ ... other flags
API REST
É possível criar ou atualizar valores de exclusão programada em um cluster definindo os campos e valores ClusterLifecycleConfig da API Dataproc listados na tabela a seguir como parte de uma solicitação de API cluster.create ou cluster.patch do Serviço Gerenciado para Apache Spark.
| Campo da API | Descrição | Granularidade do valor | Valor mínimo | Valor máximo |
|---|---|---|---|---|
idleDeleteTtl1 |
Aplica-se aos comandos de criação e atualização de cluster.
A duração entre o momento em que o cluster fica inativo após a
criação ou atualização e está em um estado pronto para uso até o
momento em que a exclusão do cluster começa. Ao
atualizar um cluster com um novo valor, ele precisa ser maior que o valor definido anteriormente.
Forneça uma duração em segundos com até nove dígitos fracionários, terminando com
's'. Exemplo: "3.5s".
Envie uma duração vazia para cancelar um
valor definido anteriormente idleDeleteTtl. |
1 segundo | 5 minutos | 14 dias |
autoDeleteTime2 |
Aplica-se aos comandos de criação e atualização de cluster.
Momento de início da exclusão do cluster. Ao atualizar um cluster com um novo horário,
ele precisa ser posterior ao horário definido anteriormente. Ao atualizar, se
um valor vazio for definido para autoDeleteTime, a exclusão automática existente será cancelada.Forneça um carimbo de data/hora no formato UTC "Zulu" RFC 3339, precisamente medido em nanossegundos. Exemplo: "2014-10-02T15:01:23.045123456Z". |
1 segundo | 10 minutos a partir do horário atual | 14 dias a partir do horário atual |
autoDeleteTtl2 |
Duração entre o momento do envio da solicitação de criação ou atualização do cluster
e o momento em que inicia a exclusão dele. Ao atualizar um cluster,
o novo horário de exclusão programada (horário da solicitação de atualização mais a
nova duração) precisa ser posterior ao horário de exclusão do cluster definido anteriormente. Envie um valor vazio
para cancelar um valor autoDeleteTtl definido anteriormente.
Forneça uma duração em segundos com até nove dígitos fracionários, terminando com "s".
Exemplo: "3.5s". |
1 segundo | 10 minutos | 14 dias |
- É possível definir ou atualizar
idleDeleteTtleautoDeleteTimeouautoDeleteTtlna solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para excluir o cluster. - É possível definir ou atualizar
autoDeleteTimeouautoDeleteTtlna solicitação, mas não ambos.
Conferir as configurações do cluster para exclusão programada
Google Cloud Console do
- É possível conferir as configurações de exclusão programada do cluster selecionando o nome dele na página Clusters do Serviço Gerenciado para Apache Spark no Google Cloud console.
- Na página de detalhes do cluster, selecione a Configuração guia. Acesse a lista de configurações do cluster para conferir as configurações de exclusão programada.
CLI gcloud
É possível usar o comando gcloud dataproc clusters list para
confirmar que um cluster tem a exclusão programada ativada.
gcloud dataproc clusters list \ --region=REGION
... NAME WORKER_COUNT ... SCHEDULED_DELETE CLUSTER_ID NUMBER ... enabled ...
É possível usar o comando gcloud dataproc clusters describe para conferir as configurações de exclusão programada LifecycleConfig do cluster.
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
... lifecycleConfig: autoDeleteTime: '2018-11-28T19:33:48.146Z' idleDeleteTtl: 1800s idleStartTime: '2018-11-28T18:33:48.146Z' ...
autoDeleteTime e idleDeleteTtl são os valores de configuração de exclusão programada definidos no cluster.
O Serviço Gerenciado para Apache Spark gera o valor idleStartTime, que é o horário de início mais recente do cluster. O Serviço Gerenciado para Apache Spark exclui o
cluster se ele permanecer inativo em idleStartTime +
idleDeleteTtl.
API REST
Você pode fazer uma clusters.list para confirmar que um cluster tem a exclusão programada ativada.