Para evitar incurrir en cargos deGoogle Cloud por un clúster inactivo o la necesidad de borrar y volver a crear un clúster para evitar incurrir en cargos por el clúster, usa la función de detención programada del clúster de Dataproc, que detiene todas las VMs del clúster. No se te cobra por las VMs detenidas, pero sí por los recursos asociados, como los discos persistentes.
Si detienes un clúster, se detendrán todas las VMs del clúster y fallarán todos los trabajos en ejecución. Cuando se detiene un clúster, no puedes actualizarlo, enviar trabajos a él ni acceder a los componentes opcionales en el clúster con la puerta de enlace de componentes de Dataproc. Después de detener un clúster, puedes reiniciarlo y reanudar el trabajo.
La detención programada del clúster está disponible para los clústeres creados con las versiones de imagen 2.2.42+, 2.1.76+ y 2.0.57+, y posteriores.
Funciones
Puedes detener los clústeres después de un período de inactividad especificado, en un momento futuro especificado o después de un período especificado a partir de la solicitud de creación del clúster.
La detención programada del clúster admite clústeres con trabajadores secundarios y clústeres con ajuste a cero.
Puedes actualizar o cancelar la configuración de detención programada del clúster.
Limitaciones y consideraciones
- La detención programada del clúster no es compatible con los clústeres que tienen SSDs locales.
- No puedes establecer valores de detención programada del clúster con la consola de Google Cloud .
- Aunque puedes actualizar la configuración de detención programada de un clúster, la operación de detención iniciada continuará. Para verificar si se inició la operación de detención, examina los registros del clúster en Cloud Logging.
- Si actualizas un programa de detención en un clúster que tiene una hora de detención programada anterior, se quitará la configuración de detención programada. Para volver a habilitar la parada programada, incluye una hora futura en tu solicitud de actualización.
Acciones que inhabilitan la detención programada del clúster
Mientras se ejecuta un clúster, las siguientes acciones inhabilitan la detención programada del clúster hasta que se revierta la acción de inhabilitación:
- Cómo quitar el rol de agente de servicio de Dataproc de IAM en la cuenta de servicio del agente de servicio de Dataproc
- Inhabilitar la API de Dataproc en el proyecto del clúster
- Habilitar controles del servicio de VPC si la cuenta de servicio del agente del servicio de Dataproc (identidad del plano de control) no está dentro del límite del perímetro
Cálculo del tiempo de inactividad del clúster
Para que un clúster se considere inactivo, se deben cumplir las siguientes condiciones:
- Finalizó la creación del clúster (el tiempo que se tarda en aprovisionar y, luego, iniciar el clúster no se incluye en el cálculo del tiempo de inactividad).
- No se ejecutan trabajos en el clúster.
- El clúster no está en estado
STOPPED
.
Enviar un trabajo al clúster o detenerlo restablece el cálculo del tiempo de inactividad.
La dataproc:dataproc.cluster-ttl.consider-yarn-activity
propiedad del clúster
afecta el cálculo del tiempo de inactividad del clúster de la siguiente manera:
- Esta propiedad está habilitada (configurada como
true
) de forma predeterminada. - Cuando esta propiedad está habilitada, tanto la actividad de YARN como la de la API de Dataproc Jobs deben estar inactivas para iniciar y continuar incrementando el cálculo del tiempo de inactividad del clúster.
- La actividad de YARN incluye las aplicaciones de YARN pendientes y en ejecución.
- La actividad de la API de Jobs de Dataproc incluye los trabajos pendientes y en ejecución enviados a la API de Jobs de Dataproc.
- Cuando esta propiedad se establece en
false
, el cálculo del tiempo de inactividad del clúster comienza y continúa solo cuando la actividad de la API de Jobs de Dataproc está inactiva.
Usa la detención programada del clúster
gcloud CLI
Puedes establecer valores de detención programada cuando creas un clúster con Google Cloud CLI o la API de Dataproc. Después de crear el clúster, puedes actualizarlo para cambiar o borrar los valores de scheduledstop del clúster que se establecieron anteriormente.
Marcar | Descripción | Mayor nivel de detalle | Valor mín. | Valor máx. |
---|---|---|---|---|
--stop-max-idle 1 |
Se aplica a los comandos de creación y actualización de clústeres.
Es el tiempo que transcurre desde que el clúster entra en estado inactivo (después de la creación o el inicio) hasta que comienza a detenerse.
Proporciona la duración en formato IntegerUnit , en el que la unidad puede ser "s, m, h, d" (segundos, minutos, horas, días, respectivamente). Ejemplos:
“30m” o “1d” (30 minutos o 1 día desde que el clúster entra en estado inactivo). |
1 segundo | 5 minutos | 14 días |
--no-stop-max-idle |
Solo se aplica al comando de actualización del clúster.
Cancela la detención programada del clúster con la marca --stop-max-idle establecida anteriormente |
No aplicable | No aplicable | No aplicable |
--stop-expiration-time 2 |
Se aplica a los comandos de creación y actualización de clústeres. Es el momento en que se comienza a detener el clúster en el formato de fecha y hora ISO 8601. Puedes generar la fecha y hora en el formato correcto con el Timestamp Generator. Por ejemplo, "2017-08-22T13:31:48-08:00" especifica una hora de vencimiento de 13:21:48 en la zona horaria UTC-8:00. | 1 segundo | 10 minutos desde la hora actual | 14 días desde la hora actual |
--stop-max-age 2 |
Se aplica a los comandos de creación y actualización de clústeres.
Es el período que transcurre desde el momento en que se envía la solicitud de creación del clúster hasta el momento en que este comienza a detenerse. Proporciona la duración en formato IntegerUnit , en el que la unidad puede ser “s, m, h, d” (segundos, minutos, horas, días). Ejemplos: “30m” (30 minutos desde ahora) o “1d” (1 día desde ahora). |
1 segundo | 10 minutos | 14 días |
- Puedes pasar la marca
stop-max-idle
con la marcastop-expiration-time
ostop-max-age
en tu solicitud de creación o actualización del clúster. La primera que sea verdadera detendrá el clúster. - Puedes pasar la marca
stop-expiration-time
o la marcastop-max-age
al comando de creación o actualización del clúster, pero no ambas.
Ejemplo de creación de clúster:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --stop-expiration-time=TIME \ ... other flags ...
Ejemplo de actualización del clúster:
Por ejemplo:
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --no-stop-max-age \ ... other flags
API de REST
Puedes crear o actualizar valores de detención programada en un clúster configurando los campos y valores de ClusterLifecycleConfig de la API de Dataproc que se indican en la siguiente tabla como parte de una solicitud a la API de cluster.create o cluster.patch de Dataproc.
Marcar | Descripción | Mayor nivel de detalle | Valor mín. | Valor máx. |
---|---|---|---|---|
idleStopTtl 1 |
Se aplica a los comandos de creación y actualización de clústeres.
Es el tiempo que transcurre desde que el clúster entra en estado inactivo después de que se crea o actualiza hasta que comienza a detenerse.
Proporciona una duración en segundos con hasta nueve dígitos decimales, terminada en “s”. Ejemplo: “3.5s”.
Envía una solicitud cluster.patch con una duración vacía para cancelar un valor idleDeleteTtl ya establecido. |
1 segundo | 5 minutos |
14 días |
autoStopTime 2 |
Se aplica a los comandos de creación y actualización de clústeres. Es la fecha y hora en que se comenzará a detener el clúster. Proporciona una marca de tiempo en formato RFC 3339 UTC “Zulu”, con precisión de nanosegundos. Ejemplo: "2014-10-02T15:01:23.045123456Z". | 1 segundo | 10 minutos desde la hora actual | 14 días desde la hora actual |
autoStopTtl 2 |
Es el tiempo que transcurre desde que se envía la solicitud de creación o actualización del clúster hasta que este comienza a detenerse. Proporciona una duración en segundos con hasta nueve dígitos decimales, terminada en "s". Ejemplo: “3.5s”. | 1 segundo | 10 minutos. Envía una solicitud cluster.patch con una duración
vacía para cancelar un valor autoStopTtl ya establecido. |
14 días |
- Puedes pasar la marca
stop-max-idle
con la marcastop-expiration-time
ostop-max-age
en tu solicitud de creación o actualización del clúster. La primera que sea verdadera detendrá el clúster. - Puedes pasar la marca
stop-expiration-time
o la marcastop-max-age
al comando de creación o actualización del clúster, pero no ambas.
Usa la detención programada con la eliminación programada
Si usas la detención programada del clúster con la eliminación programada del clúster, cuando crees o actualices un clúster, ten en cuenta las siguientes restricciones:
El período de
stop-max-idle
debe ser menor o igual que el período dedelete-max-idle
, o el período resultante dedelete-max-age
odelete-expiration-time
.stop-max-age
ystop-expiration-time
deben ser posteriores adelete-max-age
ydelete-expiration-time
, respectivamente.
Visualiza la configuración del clúster de Parada programada
gcloud CLI
Puedes usar el comando gcloud dataproc clusters list
para confirmar que un clúster tiene habilitada la detención programada.
gcloud dataproc clusters list \ --region=REGION
Resultado de muestra:
... NAME WORKER_COUNT ... SCHEDULED_STOP CLUSTER_ID NUMBER ... enabled ...
Puedes usar el comando gcloud dataproc clusters describe
para verificar la configuración de detención programada del clúster LifecycleConfig
.
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Resultado de muestra:
... lifecycleConfig: autoStopTime: '2018-11-28T19:33:48.146Z' idleStopTtl: 1800s idleStartTime: '2018-11-28T18:33:48.146Z' ...
El usuario establece los valores de autoStopTime
y idleStopTtl
. Dataproc genera el valor idleStartTime
, que es la última hora de inicio de la etapa de inactividad del clúster.
Si bien Dataproc calcula idleStartTime
en función del cese de la actividad del trabajo, el mecanismo para detener el clúster programado considera tanto el idleStartTime
como la última hora de inicio del clúster.
Específicamente, si un usuario o Dataproc detienen un clúster, se restablece el cálculo de inactividad para la función de detención programada. Esto significa que la cuenta regresiva para una parada programada se reinicia cuando se inicia el clúster. Sin embargo, el idleStartTime
no se restablece cuando se reinicia un clúster detenido. Sigue reflejando la última ocurrencia de inactividad del trabajo antes de la detención.
Por lo tanto, se deben cumplir dos condiciones para que Dataproc detenga un clúster según el valor de idleStopTtl
:
- El clúster debe haber estado inactivo durante el período especificado por
idleStopTtl
desde la última vez que se inició. - El clúster debe haber estado inactivo durante el período especificado por
idleStopTtl
desde el último restablecimiento deidleStartTime
.
API de REST
Puedes realizar una solicitud clusters.list
para confirmar que un clúster tiene habilitada la detención programada.