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 interrupção programada do cluster do Dataproc, que interrompe todas as VMs do cluster. Não há cobranças para 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 Dataproc. Depois de interromper um cluster, é possível reiniciar o cluster e retomar o trabalho.
A interrupção programada do cluster está disponível para clusters criados com as versões de imagem 2.2.42+, 2.1.76+ e 2.0.57+ e 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 interrupção programada do cluster oferece suporte a clusters com workers secundários e clusters de escala zero.
É possível atualizar ou cancelar a configuração de interrupção programada do cluster.
Limitações e considerações
- A interrupção programada do cluster não é compatível com clusters com SSDs locais.
- Não é possível definir valores de interrupção programada do cluster usando o Google Cloud console.
- Embora seja possível atualizar uma configuração de interrupção programada do cluster, uma operação de interrupção iniciada continuará. Para verificar se a operação de interrupção foi iniciada, examine os registros do cluster no Cloud Logging.
- A atualização de uma programação de interrupção em um cluster que já passou do horário de interrupção programado remove a configuração programada. Para reativar a interrupção programada, inclua um horário futuro na solicitação de atualização.
Ações que desativam a interrupção programada do cluster
Enquanto um cluster está em execução, as seguintes ações desativam a interrupção programada do cluster até que a ação de desativação seja revertida:
- Remoção do papel de agente de serviço do IAM do Dataproc na conta de serviço do agente de serviço do Dataproc
- Desativação da API Dataproc no projeto do cluster
- Ativação do VPC-Service Controls se a conta de serviço do agente de serviço do Dataproc (identidade do plano de controle) não estiver dentro do limite do perímetro
Cálculo do tempo de inatividade do cluster
Para que um cluster seja considerado inativo, as seguintes condições 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 do YARN e da API Jobs Dataproc
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 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 é iniciado e continua apenas quando a atividade da API Jobs Dataproc está inativa.
Usar a interrupção programada do cluster
CLI da gcloud
É possível definir valores de interrupção programada ao criar um cluster usando a CLI do Google Cloud ou a API Dataproc. Depois de criar o cluster, é possível atualizá-lo para mudar ou excluir os valores de interrupção 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.
Duração entre o momento em que o cluster entra no estado inativo
(após a criação ou inicialização) até o momento em que o cluster começa a ser interrompido.
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 interrupção programada do cluster pela sinalização 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. Tempo para iniciar a interrupção do 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 segundo | 10 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.
Duração entre o momento do envio da solicitação de criação do cluster
e o momento em que o cluster começa a ser interrompido. 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 |
- É possível transmitir a sinalização
stop-max-idlecom astop-expiration-timeoustop-max-agesinalização na solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para interromper o cluster. - É possível transmitir a sinalização
stop-expiration-timeou a sinalizaçãostop-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 \ --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 interrupçã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 Dataproc.
| 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.
Duração entre o momento em que o cluster entra no estado inativo
após a criação ou atualização do cluster até o momento em que o cluster
começa a ser interrompido.
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
definido anteriormente. |
1 segundo | 5 minutos |
14 dias |
autoStopTime2 |
Aplica-se aos comandos de criação e atualização de clusters. Tempo para iniciar a interrupção do cluster. Forneça um carimbo de data/hora no RFC 3339 formato UTC "Zulu", preciso 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 |
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 ser interrompido. 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 solicitação cluster.patch com uma duração vazia para cancelar um valor autoStopTtl definido anteriormente. |
14 dias |
- É possível transmitir a sinalização
stop-max-idlecom astop-expiration-timeoustop-max-agesinalização na solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para interromper o cluster. - É possível transmitir a sinalização
stop-expiration-timeou a sinalizaçãostop-max-agepara o comando de criação ou atualização do cluster, mas não ambas.
Como usar a interrupção programada com a exclusão programada
Se você usar a interrupção 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-idleprecisa ser menor ou igual aodelete-max-idleperíodo, ou ao período resultante dedelete-max-ageoudelete-expiration-time.O
stop-max-agee ostop-expiration-timeprecisam ser posteriores aodelete-max-agee aodelete-expiration-time, respectivamente.
Conferir as configurações do cluster de interrupção programada
CLI da gcloud
Use o comando gcloud dataproc clusters list para
confirmar que um cluster tem a interrupção 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
verificar as configurações de interrupção 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 Dataproc gera o
idleStartTime valor, que é o horário de início mais recente do cluster.
Embora o Dataproc calcule idleStartTime com base em
a cessação da atividade do job, o mecanismo de interrupção 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 Dataproc,
o cálculo de inatividade para o recurso de interrupção programada será redefinido. Isso significa que a
contagem regressiva para uma interrupção 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 de
a interrupção.
Portanto, duas condições precisam ser atendidas para que o Dataproc
interrompa um cluster com base no idleStopTtl:
- O cluster precisa estar inativo durante o período especificado por
idleStopTtldesde a última inicialização. - O cluster precisa estar inativo durante o período especificado por
idleStopTtldesde a últimaidleStartTimeredefinição.
API REST
Você pode fazer uma
clusters.list
solicitação para confirmar que um cluster tem a interrupção programada ativada.