Para evitar que se te apliquen Google Cloud cargos por un clúster inactivo o tener que eliminar y volver a crear un clúster para evitar que se te apliquen cargos, usa la función de parada programada de clústeres 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 sus VMs y se producirá un error en los trabajos en ejecución. Cuando se detiene un clúster, no puedes actualizarlo, enviar trabajos a él ni acceder a los componentes opcionales del clúster mediante la pasarela de componentes de Dataproc. Después de detener un clúster, puedes reiniciarlo y reanudar el trabajo.
La parada programada de clústeres 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 clústeres cuando llevan un tiempo especificado inactivos, en un momento futuro o tras un periodo concreto desde la solicitud de creación del clúster.
La parada programada de clústeres es compatible con clústeres con trabajadores secundarios y clústeres de escalado a cero.
Puedes actualizar o cancelar la configuración de parada programada del clúster.
Limitaciones y consideraciones
- La detención programada de clústeres no se admite en clústeres con SSD locales.
- No se pueden definir valores de parada programada de clústeres mediante la consola de Google Cloud .
- Aunque puedes actualizar la configuración de la parada programada de un clúster, la operación de parada iniciada continuará. Para comprobar si se ha iniciado 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 cuya hora de detención programada ya ha pasado, se eliminará 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 de clústeres
Mientras un clúster está en ejecución, las siguientes acciones inhabilitan la detención programada del clúster hasta que se deshaga la acción de inhabilitación:
- Quitar el rol Agente de servicio de Dataproc de IAM en la cuenta de servicio Agente de servicio de Dataproc
- Inhabilitar la API de Dataproc en el proyecto del clúster
- Habilitar Controles de Servicio de VPC si la cuenta de servicio del agente de servicio de Dataproc (identidad del plano de control) no está dentro del límite del perímetro
Cálculo del tiempo de inactividad de los clústeres
Para que se considere que un clúster está inactivo, deben cumplirse las siguientes condiciones:
- Se ha completado la creación del clúster (el tiempo necesario para aprovisionar e iniciar el clúster no se incluye en el cálculo del tiempo de inactividad).
- no se está ejecutando ningún trabajo 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 dataproc:dataproc.cluster-ttl.consider-yarn-activity
propiedad de clúster
influye en el cálculo del tiempo de inactividad del clúster de la siguiente manera:
- Esta propiedad está habilitada (con el valor
true
) de forma predeterminada. - Cuando esta propiedad está habilitada, tanto la actividad de YARN como la de la API Jobs de Dataproc deben estar inactivas para iniciar y seguir 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 Jobs de Dataproc incluye las tareas pendientes y en ejecución enviadas a la API Jobs de Dataproc.
- Cuando esta propiedad se define como
false
, el cálculo del tiempo de inactividad del clúster se inicia y continúa solo cuando la actividad de la API Dataproc Jobs está inactiva.
Usar la función de parada programada de clústeres
CLI de gcloud
Puedes definir valores de parada programada al crear un clúster con la CLI de Google Cloud o la API Dataproc. Una vez que hayas creado el clúster, puedes actualizarlo para cambiar o eliminar los valores de detención programada que hayas definido previamente.
Bandera | Descripción | Granularidad más fina | Valor mínimo | Valor máximo |
---|---|---|---|---|
--stop-max-idle 1 |
Se aplica a los comandos de creación y actualización de clústeres.
El tiempo transcurrido desde el momento en que el clúster entra en estado inactivo (después de la creación o el inicio) hasta el momento en que empieza a detenerse.
Indica la duración en formato IntegerUnit , donde la unidad puede ser "s, m, h, d" (segundos, minutos, horas y días, respectivamente). Por ejemplo, "30m" o "1d" (30 minutos o 1 día desde que el clúster se queda 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 mediante la marca --stop-max-idle definida 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. Hora de inicio de la detención del clúster en formato de fecha y hora ISO 8601. Puedes generar la fecha y la hora en el formato correcto con el generador de marcas de tiempo. Por ejemplo, "2017-08-22T13:31:48-08:00" especifica una hora de vencimiento de las 13:21:48 en la zona horaria UTC -8:00. | 1 segundo | 10 minutos a partir de la hora actual | 14 días a partir de la hora actual |
--stop-max-age 2 |
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 empieza a detenerse. Indica la duración
en formato IntegerUnit , donde la unidad puede ser "s, m, h, d"
(segundos, minutos, horas o días). Por ejemplo: "30m": 30 minutos a partir de ahora;
"1d": 1 día a partir de ahora. |
1 segundo | 10 minutos | 14 días |
- Puedes enviar la marca
stop-max-idle
con la marcastop-expiration-time
ostop-max-age
en tu solicitud de creación o actualización de clúster. La primera que se cumpla se aplicará para detener el clúster. - Puedes transferir la marca
stop-expiration-time
o la marcastop-max-age
al comando de creación o actualización de clústeres, 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 de clúster:
Por ejemplo:
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --no-stop-max-age \ ... other flags
API REST
Para crear o actualizar valores de detención programada en un clúster, defina los campos y valores de ClusterLifecycleConfig de la API de Dataproc que se indican en la siguiente tabla como parte de una solicitud de la API cluster.create o cluster.patch de Dataproc.
Bandera | Descripción | Granularidad más fina | Valor mínimo | Valor máximo |
---|---|---|---|---|
idleStopTtl 1 |
Se aplica a los comandos de creación y actualización de clústeres.
La duración desde el momento en que el clúster entra en el estado de inactividad después de crearse o actualizarse hasta el momento en que el clúster empieza a detenerse.
Indica una duración en segundos con hasta nueve dígitos fraccionarios,
terminada en "s". Ejemplo: "3.5s".
Envíe una solicitud cluster.patch con una duración vacía para cancelar un valor idleDeleteTtl que haya definido anteriormente. |
1 segundo | 5 minutos |
14 días |
autoStopTime 2 |
Se aplica a los comandos de creación y actualización de clústeres. Hora a la que se debe empezar a detener el clúster. Proporciona una marca de tiempo en formato RFC 3339 UTC "Zulu", con una precisión de nanosegundos. Ejemplo: "2014-10-02T15:01:23.045123456Z". | 1 segundo | 10 minutos a partir de la hora actual | 14 días a partir de la hora actual |
autoStopTtl 2 |
El tiempo que transcurre desde que se envía la solicitud de creación o actualización del clúster hasta que este empieza a detenerse. Proporciona una duración en segundos con hasta nueve dígitos fraccionarios, 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 de autoStopTtl que hayas definido anteriormente. |
14 días |
- Puedes enviar la marca
stop-max-idle
con la marcastop-expiration-time
ostop-max-age
en tu solicitud de creación o actualización de clúster. La primera que se cumpla se aplicará para detener el clúster. - Puedes transferir la marca
stop-expiration-time
o la marcastop-max-age
al comando de creación o actualización de clústeres, pero no ambas.
Usar la detención programada con la eliminación programada
Si usas tanto la detención programada de clústeres como la eliminación programada de clústeres al crear o actualizar un clúster, ten en cuenta las siguientes restricciones:
El periodo
stop-max-idle
debe ser inferior o igual al periododelete-max-idle
o al periodo resultante dedelete-max-age
odelete-expiration-time
.Los campos
stop-max-age
ystop-expiration-time
deben ser posteriores adelete-max-age
ydelete-expiration-time
, respectivamente.
Ver la configuración del clúster Parada programada
CLI de gcloud
Puedes usar el comando gcloud dataproc clusters list
para confirmar que un clúster tiene habilitada la parada programada.
gcloud dataproc clusters list \ --region=REGION
Ejemplo de salida:
... NAME WORKER_COUNT ... SCHEDULED_STOP CLUSTER_ID NUMBER ... enabled ...
Puedes usar el comando gcloud dataproc clusters describe
para consultar los ajustes de parada programada del clúster LifecycleConfig
.
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Ejemplo de salida:
... lifecycleConfig: autoStopTime: '2018-11-28T19:33:48.146Z' idleStopTtl: 1800s idleStartTime: '2018-11-28T18:33:48.146Z' ...
El usuario define los valores de autoStopTime
y idleStopTtl
. Dataproc genera el valor idleStartTime
, que es la hora de inicio de inactividad del clúster más reciente.
Aunque Dataproc calcula idleStartTime
en función del cese de la actividad de los trabajos, el mecanismo para detener los clústeres programados tiene en cuenta tanto el idleStartTime
como la última hora de inicio del clúster.
En concreto, si un clúster se detiene por un usuario o por Dataproc, se restablece el cálculo del tiempo de inactividad de la función de detención programada. Esto significa que la cuenta atrás 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 vez que la tarea estuvo inactiva antes de detenerse.
Por lo tanto, deben cumplirse dos condiciones para que Dataproc detenga un clúster en función de idleStopTtl
:
- El clúster debe haber estado inactivo durante el periodo especificado por
idleStopTtl
desde la última vez que se inició. - El clúster debe haber estado inactivo durante el periodo especificado por
idleStopTtl
desde la última vez que se restablecióidleStartTime
.
API REST
Puedes enviar una
clusters.list
solicitud para confirmar que un clúster tiene habilitado el apagado programado.