Para evitar Google Cloud cobranças 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 Dataproc, que interrompe todas as VMs do cluster. Não há 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 dele e faz com que os jobs em execução falhem. Quando um cluster é interrompido, não é possível atualizá-lo, enviar jobs para ele nem acessar componentes opcionais usando o gateway de componentes do Dataproc. Depois de interromper um cluster, é possível reiniciar o cluster e retomar o trabalho.
A parada programada de 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 desde a solicitação de criação do cluster.
A parada programada do cluster é compatível com 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 de clusters não é compatível com clusters que têm SSDs locais.
- Não é possível definir valores de parada programada do cluster usando o console Google Cloud .
- Embora seja possível atualizar a configuração de parada programada de um cluster, uma operação de parada iniciada vai continuar. Para verificar se a operação de interrupção foi iniciada, examine os registros do cluster no Cloud Logging.
- Atualizar uma programação de interrupção em um cluster que já passou do horário de interrupção programada remove a configuração de interrupção 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 estiver em execução, as seguintes ações vão desativar a parada programada do cluster até que a ação de desativação seja revertida:
- Remoção do papel de agente de serviço do Dataproc do IAM na conta de serviço do agente de serviço do Dataproc
- Como desativar a API Dataproc no projeto do cluster
- Ativar o 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 é concluída. O tempo gasto no provisionamento e na inicialização do cluster é excluído do cálculo do tempo ocioso.
- nenhum job está sendo executado no cluster
- O cluster não está no estado
STOPPED
Enviar um job para o cluster ou interromper um cluster redefine o cálculo do tempo ocioso.
A propriedade do cluster dataproc:dataproc.cluster-ttl.consider-yarn-activity
afeta o cálculo do tempo ocioso 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 Dataproc Jobs
precisa estar inativa para iniciar e continuar incrementando o cálculo do tempo de inatividade do cluster.
- A atividade do YARN inclui aplicativos YARN pendentes e em execução.
- A atividade da API Jobs do Dataproc inclui jobs pendentes e em execução enviados a essa API.
- 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 do Dataproc está inativa.
Usar a parada programada de cluster
CLI da gcloud
É possível definir valores de parada programada ao criar um cluster usando a Google Cloud CLI ou a API Dataproc. Depois de criar o cluster, é possível atualizá-lo para mudar ou excluir valores de scheduledstop definidos anteriormente.
Sinalização | Descrição | Melhor granularidade | Valor mín. | Valor máx. |
---|---|---|---|---|
--stop-max-idle 1 |
Aplicável 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 ele 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 |
Aplicável apenas ao comando de atualização do cluster.
Cancela a interrupção programada do cluster pela flag --stop-max-idle definida anteriormente. |
Não relevante | Não aplicável | Não relevante |
--stop-expiration-time 2 |
Aplicável aos comandos de criação e atualização de clusters. O horário para começar a interromper o cluster no formato de data e hora ISO 8601. É possível gerar 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-age 2 |
Aplicável 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 ele 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). 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 flag
stop-max-idle
com a flagstop-expiration-time
oustop-max-age
na solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para parar o cluster. - É possível transmitir a flag
stop-expiration-time
ou a flagstop-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 do 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 da API Dataproc ClusterLifecycleConfig listados na tabela a seguir como parte de uma solicitação da API Dataproc cluster.create ou cluster.patch.
Sinalização | Descrição | Melhor granularidade | Valor mín. | Valor máx. |
---|---|---|---|---|
idleStopTtl 1 |
Aplicável 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 e o momento em que ele 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 de idleDeleteTtl
definido anteriormente. |
1 segundo | 5 minutos |
14 dias |
autoStopTime 2 |
Aplicável aos comandos de criação e atualização de clusters. O momento de iniciar a interrupção do 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 |
autoStopTtl 2 |
A duração entre o momento do envio da solicitação de criação ou atualização do cluster e o momento em que ele 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 flag
stop-max-idle
com a flagstop-expiration-time
oustop-max-age
na solicitação de criação ou atualização do cluster. A primeira a se tornar verdadeira entra em vigor para parar o cluster. - É possível transmitir a flag
stop-expiration-time
ou a flagstop-max-age
para 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 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 de
stop-max-idle
precisa ser menor ou igual ao período dedelete-max-idle
ou ao período resultante dedelete-max-age
oudelete-expiration-time
.Os
stop-max-age
estop-expiration-time
precisam ser posteriores adelete-max-age
edelete-expiration-time
, respectivamente.
Ver as configurações do cluster para parada programada
CLI da gcloud
Use o comando gcloud dataproc clusters list
para
confirmar se 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 parada programada LifecycleConfig
de um 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 valor idleStartTime
, que é o horário de início mais recente do cluster.
Embora o Dataproc calcule idleStartTime
com base na cessação da atividade do job, o mecanismo de parada programada do cluster considera tanto o idleStartTime
quanto a última hora 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 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 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 pelo período especificado por
idleStopTtl
desde a última vez que foi iniciado. - O cluster precisa estar inativo durante o período especificado por
idleStopTtl
desde a última redefinição deidleStartTime
.
API REST
Você pode fazer uma solicitação
clusters.list
para confirmar se um cluster tem a interrupção programada ativada.