Para evitar que se generen Google Cloud costos por un clúster inactivo o la necesidad de borrar y volver a crear un clúster para evitar que se generen costos del clúster, usa la función de detención programada del clúster de Managed Service para Apache Spark, que detiene todas las VMs del clúster. No se te cobra por las VMs detenidas, pero los cargos continúan para 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 componentes opcionales en el clúster con la puerta de enlace de componentes de Managed Service para Apache Spark. 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 2.2.42+, 2.1.76+ y 2.0.57+ y versiones posteriores de la imagen.
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 desde la solicitud de creación del clúster.
La detención programada del clúster admite clústeres con trabajadores secundarios y clústeres de reducción de escala 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 con SSD locales.
- Aunque puedes actualizar una configuración de detención programada del clúster, continuará una operación de detención iniciada. Para verificar si se inició la operación de detención, examina los registros del clúster en Cloud Logging.
- Si actualizas una programación de detención en un clúster que ya pasó la hora de detención programada, se quitará la configuración de detención programada. Para volver a habilitar la detención 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:
- Quitar el rol de agente de servicio de Managed Service para Apache Spark de IAM en la cuenta de servicio del agente de servicio de Dataproc
- Inhabilitar la API de Managed Service para Apache Spark en el proyecto del clúster
- Habilitar los Controles del servicio de VPC si la cuenta de servicio del agente de servicio de Managed Service para Apache Spark (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:
- La creación del clúster finalizó (el tiempo que se tarda en aprovisionar y iniciar el clúster se excluye del cálculo del tiempo de inactividad).
- No se ejecutan trabajos en el clúster.
- El clúster no está en estado
STOPPED.
Si envías un trabajo al clúster o detienes un clúster, se restablece el cálculo del tiempo de inactividad.
La propiedad del clúster dataproc:dataproc.cluster-ttl.consider-yarn-activity
afecta el cálculo del tiempo de inactividad del clúster de la siguiente manera:
- Esta propiedad está habilitada (establecida en
true) de forma predeterminada. - Cuando esta propiedad está habilitada, tanto la actividad de YARN como la de la API de trabajos de Managed Service para Apache Spark deben estar inactivas para iniciar y continuar incrementando el cálculo del tiempo de inactividad del clúster.
- La actividad de YARN incluye aplicaciones de YARN pendientes y en ejecución.
- La actividad de la API de trabajos de Managed Service para Apache Spark incluye trabajos pendientes y en ejecución enviados a la API de trabajos de Managed Service para Apache Spark.
- 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 trabajos de Managed Service para Apache Spark está inactiva.
Usa la detención programada del clúster
Google Cloud Consola de
Puedes establecer valores de detención programada cuando creas un clúster con la Google Cloud consola de de la siguiente manera:
- Abre la página Crear clúster.
- En Define cost control settings, selecciona Set an optional retention policy to control costs y, luego, selecciona la configuración de detención del clúster (o eliminación 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 Managed Service para Apache Spark. Después de crear el clúster, puedes actualizarlo para cambiar o borrar los valores de detención programada del clúster establecidos anteriormente en el clúster.
| Marcar | Descripción | Mayor nivel de detalle | Valor mín. | Valor máx. |
|---|---|---|---|---|
--stop-max-idle1 |
Se aplica a los comandos de creación y actualización de clústeres.
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 se vuelve inactivo). |
1 segundo | 5 minutos | 14 días |
--no-stop-max-idle |
Se aplica solo 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-time2 |
Se aplica a los comandos de creación y actualización de clústeres. 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” indica la hora de vencimiento 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-age2 |
Se aplica a los comandos de creación y actualización de clústeres.
El tiempo que transcurre desde que se envía la solicitud de creación del clúster
hasta que este comienza a detenerse. Proporciona la duración
en IntegerUnit formato, en el que la unidad puede ser "s, m, h, d"
(segundos, minutos, horas, días). Ejemplos: "30m": 30 minutos a partir de ahora;
"1d": 1 día a partir de ahora. |
1 segundo | 10 minutos | 14 días |
- Puedes pasar la marca
stop-max-idlecon la marcastop-expiration-timeostop-max-ageen tu solicitud de creación o actualización del clúster. La primera en volverse verdadera entra en vigencia para detener el clúster. - Puedes pasar la marca
stop-expiration-timeo lastop-max-agemarca al comando de creación o actualización del clúster, pero no ambas.
Ejemplo de creación de clústeres:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --stop-expiration-time=TIME \ ... other flags ...
Ejemplo de actualización de clústeres:
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 si configuras los campos y valores de Managed Service para Apache Spark API ClusterLifecycleConfig que se enumeran en la siguiente tabla como parte de una solicitud a la API de Managed Service para Apache Spark cluster.create o cluster.patch.
| Marcar | Descripción | Mayor nivel de detalle | Valor mín. | Valor máx. |
|---|---|---|---|---|
idleStopTtl1 |
Se aplica a los comandos de creación y actualización de clústeres.
El tiempo que transcurre desde que el clúster entra en estado inactivo
después de que se crea o actualiza hasta que el clúster
comienza a detenerse.
Muestra la duración en segundos con hasta nueve dígitos fraccionarios,
terminados 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 |
autoStopTime2 |
Se aplica a los comandos de creación y actualización de clústeres. El momento en que se comienza a detener el clúster. Muestra una marca de tiempo en RFC 3339 el formato 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 |
autoStopTtl2 |
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. Muestra la duración en segundos con hasta nueve dígitos fraccionarios, terminados 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-idlecon la marcastop-expiration-timeostop-max-ageen tu solicitud de creación o actualización del clúster. La primera en volverse verdadera entra en vigencia para detener el clúster. - Puedes pasar la marca
stop-expiration-timeo lastop-max-agemarca 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
stop-max-idledebe ser más corto o igual que el períododelete-max-idle, o el período que resulta dedelete-max-ageodelete-expiration-time.stop-max-ageystop-expiration-timedeben ser posteriores adelete-max-ageydelete-expiration-time, respectivamente.
Visualiza la configuración de clústeres de la detención programada
Google Cloud Consola de
- Para ver la configuración de detención programada del clúster, selecciona el nombre del clúster en la página de clústeres de Managed Service para Apache Spark en la Google Cloud consola.
- En la página de detalles del clúster, selecciona la Configuration pestaña. Ve a la lista de configuración del clúster para ver la configuración de detención 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 de LifecycleConfig del clúster.
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 autoStopTime y idleStopTtl. Managed Service para Apache Spark genera el valor idleStartTime, que es la última hora de inicio del clúster inactivo.
Si bien Managed Service para Apache Spark calcula idleStartTime en función de la finalización de la actividad del trabajo, el mecanismo para detener el clúster programado considera tanto idleStartTime como la última hora de inicio del clúster.
En particular, si un usuario o Managed Service para Apache Spark detiene un clúster, se restablece el cálculo de inactividad para la función de detención programada. Esto significa que el cuenta regresiva para una detención programada se reinicia cuando se inicia el clúster. Sin embargo, idleStartTime no se restablece cuando se reinicia un clúster detenido. Continúa reflejando la última ocurrencia de inactividad del trabajo antes de la detención.
Por lo tanto, se deben cumplir dos condiciones para que Managed Service para Apache Spark detenga un clúster en función de idleStopTtl:
- El clúster debe haber estado inactivo durante el período especificado por
idleStopTtldesde la última vez que se inició. - El clúster debe haber estado inactivo durante el período especificado por
idleStopTtldesde el últimoidleStartTimerestablecimiento.
API de REST
Puedes realizar una
clusters.list
solicitud para confirmar que un clúster tiene habilitada la detención programada.