Parada programada de cluster

Para evitar cobranças Google Cloud por um cluster inativo ou a necessidade de excluir e recriar um cluster para evitar cobranças , use o recurso de parada programada do cluster do Serviço Gerenciado para Apache Spark, que interrompe todas as VMs do cluster . Você não recebe cobranças por VMs interrompidas, mas as cobranças continuam para recursos associados, como discos permanentes.

A interrupção de um cluster interrompe todas as VMs do cluster e faz com que todos os jobs em execução falhem. Quando um cluster é interrompido, não é possível atualizá-lo, enviar jobs para ele ou acessar componentes opcionais no cluster usando o Gateway de componentes do Serviço Gerenciado para Apache Spark. Depois de interromper um cluster, você pode reiniciar o cluster e retomar o trabalho.

A parada programada do cluster está disponível para clusters criados com as versões 2.2.42+, 2.1.76+ e 2.0.57+ e versões de imagem mais recentes.

Recursos

  • É possível interromper clusters após um período de inatividade especificado, em um horário futuro especificado ou após um período especificado da solicitação de criação do cluster.

  • A parada programada do cluster oferece suporte a clusters com workers secundários e clusters de escalonamento zero.

  • É possível atualizar ou cancelar a configuração de parada programada do cluster.

Limitações e considerações

  • A parada programada do cluster não é compatível com clusters com SSDs locais.
  • Embora seja possível atualizar uma configuração de parada programada do cluster, uma operação de parada iniciada continuará. Para verificar se a operação de parada foi iniciada, examine os registros do cluster no Cloud Logging.
  • A atualização de uma programação de parada em um cluster que já passou do horário de parada programada remove a configuração de parada programada. Para reativar a parada programada, inclua um horário futuro na solicitação de atualização.

Ações que desativam a parada programada do cluster

Enquanto um cluster está em execução, as ações a seguir desativam a parada programada do cluster até que a ação de desativação seja revertida:

Cálculo do tempo de inatividade do cluster

Para que um cluster seja considerado inativo, as condições a seguir precisam ser atendidas:

  • a criação do cluster está concluída (o tempo gasto no provisionamento e na inicialização do cluster é excluído do cálculo do tempo de inatividade)
  • nenhum job está em execução no cluster
  • o cluster não está no estado STOPPED

O envio de um job para o cluster ou a interrupção de um cluster redefine o cálculo do tempo de inatividade.

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, a atividade da API de jobs do YARN e do Serviço Gerenciado para Apache Spark precisa estar inativa 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 de jobs do Serviço Gerenciado para Apache Spark inclui jobs pendentes e em execução enviados à API de jobs do Serviço Gerenciado para Apache Spark.
  • Quando essa propriedade é definida como false, o cálculo do tempo de inatividade do cluster é iniciado e continua apenas quando a atividade da API de jobs do Serviço Gerenciado para Apache Spark está inativa.

Usar a parada programada do cluster

Google Cloud Console do

É possível definir valores de parada programada ao criar um cluster usando o Google Cloud console da seguinte maneira:

  1. Abra a página Criar cluster.
  2. 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 parada do cluster (ou exclusão do cluster).

CLI gcloud

É possível definir valores de parada programada ao criar um cluster usando a Google Cloud CLI ou a API do Serviço Gerenciado para Apache Spark. Depois de criar o cluster, é possível atualizá-lo para mudar ou excluir os valores de parada programada do cluster definidos anteriormente.

Sinalização Descrição Melhor granularidade Valor mín. Valor máx.
--stop-max-idle1 Aplica-se aos comandos de criação e atualização de clusters. A duração entre o momento em que o cluster entra no estado inativo (após a criação ou inicialização) e o momento em que o cluster começa a parar. Forneça a duração no formato IntegerUnit, em que a unidade pode ser "s, m, h, d" (segundos, minutos, horas, dias, respectivamente). Exemplos: "30m" ou "1d" (30 minutos ou 1 dia a partir do momento em que o cluster fica inativo). 1 segundo 5 minutos 14 dias
--no-stop-max-idle Aplica-se apenas ao comando de atualização do cluster. Cancela a parada programada do cluster pela flag definida anteriormente --stop-max-idle Não aplicável Não relevante Não aplicável
--stop-expiration-time2 Aplica-se aos comandos de criação e atualização de clusters. O horário para começar a interromper o cluster em formato de data e hora ISO 8601. É possível gerar a data e hora no formato correto usando 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 segundo10 minutos a partir do horário atual 14 dias a partir do horário atual
--stop-max-age2 Aplica-se aos comandos de criação e atualização de clusters. A duração entre o momento do envio da solicitação de criação do cluster ao momento em que o cluster começa a parar. Forneça a duração em 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
Observações:
  1. É possível transmitir a flag stop-max-idle com a flag stop-expiration-time ou stop-max-age na solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para interromper o cluster.
  2. É possível transmitir a flag stop-expiration-time ou a flag stop-max-age para 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 \
    --stop-max-idle=DURATION \
    --stop-expiration-time=TIME \
    ... other flags ...

Exemplo de atualização de cluster:

Exemplo:

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --stop-max-idle=DURATION \
    --no-stop-max-age \
    ... other flags

API REST

É possível criar ou atualizar valores de parada programada em um cluster definindo os campos e valores API ClusterLifecycleConfig da API do Serviço Gerenciado para Apache Spark 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.

Sinalização Descrição Melhor granularidade Valor mín. Valor máx.
idleStopTtl1 Aplica-se aos comandos de criação e atualização de clusters. A duração entre o momento em que o cluster entra no estado inativo após a criação ou atualização do cluster e o momento em que o cluster começa a parar. Forneça uma duração em segundos com até nove dígitos fracionários, terminando com 's'. Exemplo: "3.5s". Envie uma solicitação cluster.patch com uma duração vazia para cancelar um valor idleDeleteTtl de definido anteriormente. 1 segundo 5 minutos
14 dias
autoStopTime2 Aplica-se aos comandos de criação e atualização de clusters. O horário para começar a interromper o cluster. 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
autoStopTtl2 A duração entre o momento do envio da solicitação de criação ou atualização do cluster e o momento em que o cluster começa a parar. Forneça uma duração em segundos com até nove dígitos fracionários, terminando com 's'. Exemplo: "3.5s". 1 segundo 10 minutos.
Envie uma cluster.patch solicitação com uma duração vazia para cancelar um valor autoStopTtl de definido anteriormente.
14 dias
Observações:
  1. É possível transmitir a flag stop-max-idle com a flag stop-expiration-time ou stop-max-age na solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para interromper o cluster.
  2. É possível transmitir a flag stop-expiration-time ou a flag stop-max-age para o comando de criação ou atualização do cluster, mas não ambas.

Como usar a parada programada com a exclusão programada

Se você usar a parada programada do cluster com a exclusão programada do cluster, ao criar ou atualizar um cluster, observe as seguintes restrições:

  • O período stop-max-idle precisa ser menor ou igual ao período delete-max-idle ou ao período resultante de delete-max-age ou delete-expiration-time.

  • O stop-max-age e o stop-expiration-time precisam ser posteriores ao delete-max-age e ao delete-expiration-time, respectivamente.

Conferir as configurações de parada programada do cluster

Google Cloud Console do

  • É possível conferir as configurações de parada programada do cluster selecionando o nome dele na página Clusters do Serviço Gerenciado para Apache Spark no Google Cloud console do Google Cloud.
  • Na página de detalhes dos clusters, selecione a Configuração guia. Acesse a lista de configurações do cluster para conferir as configurações de parada programada.

CLI gcloud

Use o comando gcloud dataproc clusters list para confirmar que um cluster tem a parada programada ativada.

 gcloud dataproc clusters list \
     --region=REGION

Exemplo de resposta:

...
NAME         WORKER_COUNT ... SCHEDULED_STOP
CLUSTER_ID   NUMBER       ... enabled
...

Use o comando gcloud dataproc clusters describe para conferir as configurações de parada programada LifecycleConfig do cluster.

gcloud dataproc clusters describe CLUSTER_NAME \
    --region=REGION

Exemplo de resposta:

...
lifecycleConfig:
  autoStopTime: '2018-11-28T19:33:48.146Z'
  idleStopTtl: 1800s
  idleStartTime: '2018-11-28T18:33:48.146Z'
...

Os valores autoStopTime e idleStopTtl são definidos pelo usuário. O Serviço Gerenciado para Apache Spark gera o valor idleStartTime, que é o horário de início mais recente do cluster.

Embora o Serviço Gerenciado para Apache Spark calcule idleStartTime com base na cessação da atividade do job, o mecanismo de parada programada do cluster considera o idleStartTime e o último horário de início do cluster. Especificamente, se um cluster for interrompido por um usuário ou pelo Serviço Gerenciado para Apache Spark, o cálculo de inatividade para o recurso de parada programada será redefinido. Isso significa que a contagem regressiva para uma parada programada será reiniciada na próxima inicialização do cluster. No entanto, o idleStartTime não é redefinido quando um cluster interrompido é reiniciado. Ele continua refletindo a última ocorrência de inatividade do job antes da parada.

Portanto, duas condições precisam ser atendidas para que o Serviço Gerenciado para Apache Spark interrompa um cluster com base no idleStopTtl:

  1. O cluster precisa estar inativo durante o período especificado por idleStopTtl desde a última inicialização.
  2. O cluster precisa estar inativo durante o período especificado por idleStopTtl desde a última idleStartTime redefinição.

API REST

Você pode fazer uma clusters.list solicitação para confirmar que um cluster tem a parada programada ativada.