Para evitar incurrir en Google Cloud cargos por un clúster inactivo, usa la función de eliminación programada de clústeres de Managed Service para Apache Spark cuando crees un clúster. Esta función proporciona opciones para borrar un clúster cuando ocurren los siguientes eventos:
- después de un período de inactividad del clúster específico
- en un momento futuro específico
- después de un período específico que comienza con el envío de la solicitud de creación de clústeres
Acciones que inhabilitan la eliminación programada
Mientras se ejecuta un clúster, las siguientes acciones inhabilitan la eliminación programada hasta que se revierta la acción de inhabilitación:
- Quitar el rol de agente de servicio de IAM Managed Service para Apache Spark en la cuenta de servicio del agente de servicio de Dataproc
- Inhabilitar la API de Dataproc en el proyecto del clúster
- Habilitar la protección contra eliminaciones de VM de Compute Engine en una VM del clúster de eliminación programada
- 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
Calcula el tiempo de inactividad del clúster
Puedes usar la eliminación programada para borrar un clúster después de un tiempo de inactividad del clúster especificado. El tiempo de inactividad se calcula después de que se crea el clúster y se completa el aprovisionamiento del clúster. El cálculo del tiempo de inactividad comienza cuando un clúster no tiene trabajos en ejecución.
La propiedad de clúster dataproc:dataproc.cluster-ttl.consider-yarn-activity cluster
property
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 Dataproc 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 Dataproc incluye trabajos pendientes y en ejecución enviados a la API de trabajos 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 trabajos de Dataproc está inactiva.
La propiedad dataproc:dataproc.cluster-ttl.consider-yarn-activity se aplica a los clústeres creados con versiones de imagen lanzadas a partir del 1.4.64, 1.5.39, 2.0.13 y versiones de imagen posteriores. Para los clústeres creados con versiones de imagen anteriores, solo se considera la actividad de la API de trabajos de Dataproc para calcular el tiempo de inactividad del clúster.
Usa la eliminación programada de clústeres
Puedes establecer valores de eliminación programada cuando creas un clúster con la Google Cloud CLI, la API de Dataproc o la Google Cloud consola. Después de crear el clúster, puedes actualizarlo para cambiar o borrar los valores de eliminación programada establecidos anteriormente en el clúster.
Google Cloud Consola de
- Abre la página Crear clúster.
- En Define la configuración de control de costos , selecciona Establece una política de retención opcional para controlar los costos, y, luego, selecciona la configuración de eliminación programada (o detención programada).
gcloud CLI
Puedes crear o actualizar valores de eliminación programada en un clúster pasando las
marcas y los valores que se enumeran en la siguiente tabla a los
gcloud dataproc clusters create
o gcloud dataproc clusters update
comandos.
| Marca de gcloud CLI | Descripción | Nivel de detalle de los valores | Valor mín. | Valor máx. |
|---|---|---|---|---|
--delete-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 que se
crea o actualiza y está en un estado listo para usar hasta que comienza a
borrar. Proporciona la duración en
IntegerUnit formato, en la que la unidad puede ser "s, m, h, d"
(segundos, minutos, horas, días). Ejemplo: "30m": 30 minutos desde el momento
en que el clúster entra en estado inactivo. |
1 segundo | 5 minutos | 14 días |
--no-delete-max-idle |
Se aplica solo al comando de actualización de clústeres.
Cancela la eliminación de clústeres según la configuración anterior de la marca delete-max-idle. |
no aplicable | no aplicable | no aplicable |
--delete-expiration-time2 |
Se aplica a los comandos de creación y actualización de clústeres. El momento en que se comienza a borrar el clúster en el formato de fecha y hora ISO 8601. Para generar la fecha y hora en el formato correcto, puedes usar 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 |
--delete-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 de clústeres hasta
el momento en que este comienza a borrar. Proporciona la duración en
IntegerUnit formato, en la 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 |
--no-delete-max-age |
Se aplica solo al comando de actualización de clústeres.
Cancela la eliminación automática de clústeres según la configuración anterior de la marca
delete-max-age o delete-expiration-time. |
No aplicable | No aplicable | No aplicable |
- Puedes pasar la
delete-max-idlemarca con ladelete-expiration-timeodelete-max-agemarca en tu solicitud de creación o actualización de clústeres. La primera que se convierta en verdadera tendrá efecto para borrar el clúster. - Puedes pasar la marca
delete-expiration-timeo la marcadelete-max-ageal comando de creación o actualización de clústeres, pero no ambas.
Ejemplo de creación de clústeres:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --delete-max-idle=DURATION \ --delete-expiration-time=TIME \ ... other flags ...
Ejemplo de actualización de clústeres:
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --delete-max-idle=DURATION \ --no-delete-max-age \ ... other flags
API de REST
Puedes crear o actualizar valores de eliminación programada en un clúster configurando los campos y valores de ClusterLifecycleConfig de la API de Dataproc que se enumeran en la siguiente tabla como parte de una solicitud a la API cluster.create o cluster.patch de Managed Service para Apache Spark.
| Campo de API | Descripción | Nivel de detalle de los valores | Valor mín. | Valor máx. |
|---|---|---|---|---|
idleDeleteTtl1 |
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 y está en un estado listo para usar hasta que comienza a
borrar. Cuando
actualizas un clúster con un valor nuevo, este debe ser mayor que el valor establecido anteriormente.
Muestra la duración en segundos con hasta nueve dígitos fraccionarios, terminados en
“s”. Ejemplo: “3.5s”.
Envía una duración vacía para cancelar un
valor idleDeleteTtl ya establecido. |
1 segundo | 5 minutos | 14 días |
autoDeleteTime2 |
Se aplica a los comandos de creación y actualización de clústeres.
El momento de comenzar a borrar el clúster. Cuando actualizas un clúster con una hora nueva,
esta debe ser posterior a la hora establecida anteriormente. Cuando se actualiza, si
se establece un valor vacío para autoDeleteTime, se cancela la
eliminación automática existente.Muestra una marca de tiempo en RFC 3339 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 |
autoDeleteTtl2 |
El tiempo que transcurre desde que se envía la solicitud de creación o actualización de clústeres
hasta que este comienza a borrar. Cuando actualizas un clúster,
la nueva hora de eliminación programada (hora de la solicitud de actualización más la
nueva duración) debe ser posterior a la hora de eliminación del clúster establecida anteriormente. Envía un valor vacío
para cancelar un valor ya establecido autoDeleteTtl.
Muestra la duración en segundos con hasta nueve dígitos fraccionarios, terminados en “s”.
Ejemplo: “3.5s”. |
1 segundo | 10 minutos | 14 días |
- Puedes establecer o actualizar
idleDeleteTtlyautoDeleteTimeoautoDeleteTtlen tu solicitud de creación o actualización de clústeres. La primera que se convierta en verdadera tendrá efecto para borrar el clúster. - Puedes establecer o actualizar
autoDeleteTimeoautoDeleteTtlen tu solicitud, pero no ambas.
Visualiza la configuración de clústeres de la eliminación programada
Google Cloud Consola de
- Para ver la configuración de eliminació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 de.
- 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 eliminación programada.
gcloud CLI
Puedes usar el comando gcloud dataproc clusters list para
confirmar que un clúster tiene habilitada la eliminación programada.
gcloud dataproc clusters list \ --region=REGION
... NAME WORKER_COUNT ... SCHEDULED_DELETE CLUSTER_ID NUMBER ... enabled ...
Puedes usar el comando gcloud dataproc clusters describe para verificar la configuración de eliminación programada de LifecycleConfig del clúster.
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
... lifecycleConfig: autoDeleteTime: '2018-11-28T19:33:48.146Z' idleDeleteTtl: 1800s idleStartTime: '2018-11-28T18:33:48.146Z' ...
autoDeleteTime y idleDeleteTtl son los valores de configuración de eliminación programada establecidos en el clúster.
Managed Service para Apache Spark genera el valor idleStartTime, que es la última hora de inicio del clúster inactivo. Managed Service para Apache Spark borra el
clúster si este permanece inactivo en idleStartTime +
idleDeleteTtl.
API de REST
Puedes realizar una clusters.list para confirmar que un clúster tiene habilitada la eliminación programada.