集群预定删除功能

为了避免非活跃集群产生 Google Cloud 费用,请在创建集群时使用 Dataproc 的集群预定删除功能。此功能提供在发生以下事件时删除集群的选项:

会停用预定删除功能的操作

在集群运行期间,以下操作会停用预定删除功能,直到停用操作撤消:

计算集群空闲时间

您可以使用预定删除功能在集群达到指定的空闲时间后将其删除。空闲时间是在集群创建且集群预配完成后计算的。当集群没有正在运行的作业时,系统便会开始计算空闲时间。

dataproc:dataproc.cluster-ttl.consider-yarn-activity 集群属性会影响集群空闲时间的计算,如下所示:

  • 此属性默认处于启用状态(设置为 true)。
  • 启用此属性后,YARN 和 Dataproc Jobs API 活动都必须处于空闲状态,才能开始并继续递增集群空闲时间计算。
    • YARN 活动包括待处理和正在运行的 YARN 应用。
    • Dataproc Jobs API 活动包括提交给 Dataproc Jobs API 的待处理作业和正在运行的作业。
  • 将此属性设置为 false 时,只有在 Dataproc Jobs API 活动处于空闲状态时,集群空闲时间计算才会开始并继续。

dataproc:dataproc.cluster-ttl.consider-yarn-activity 属性适用于使用 1.4.641.5.392.0.13 及更高映像版本或之后发布的映像版本创建的集群。对于使用早期映像版本创建的集群,在计算集群空闲时间时,系统仅会考虑 Dataproc Jobs API 活动。

使用集群预定删除功能

您可以使用 Google Cloud CLI、Dataproc API 或 Google Cloud 控制台在创建集群时设置预定删除值。创建集群后,您可以更新集群,以更改或删除先前在集群上设置的预定删除值。

gcloud CLI

您可以通过将下表中列出的标志和值传递给 gcloud dataproc clusters creategcloud dataproc clusters update 命令,在集群上创建或更新预定删除值。

gcloud CLI 标志 说明 价值粒度 最小值 最大值
--delete-max-idle1 适用于集群创建和集群更新命令。 从集群变为空闲状态(在集群创建或更新后且处于可供使用状态)到集群开始删除的时刻之间的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(秒、分钟、小时、天)。示例:“30m”:从集群开始空闲之时算起 30 分钟。 1 秒 5 分钟 14 天
--no-delete-max-idle 仅适用于集群更新命令。 通过先前的 delete-max-idle 标志设置取消集群删除。 不适用 不适用 不适用
--delete-expiration-time2 适用于集群创建和集群更新命令。 开始删除集群的时间(采用 ISO 8601 日期时间格式)。 如需以正确的格式生成日期时间,您可以使用时间戳生成器。 例如,“2017-08-22T13:31:48-08:00”指定的到期时间为 13:21:48(UTC -8:00 时区)。1 秒 从当前时间算起,10 分钟 从当前时间算起,14 天
--delete-max-age2 适用于集群创建和集群更新命令。 从提交集群创建请求之时算起,直至集群开始删除那一刻的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(秒、分钟、小时、天)。例如:“30m”:从现在算起 30 分钟;“1d”:从现在算起 1 天。 1 秒 10 分钟 14 天
--no-delete-max-age 仅适用于集群更新命令。 通过先前的 delete-max-agedelete-expiration-time 标志设置取消集群自动删除。 不适用 不适用 不适用
注意:
  1. 您可以在集群创建或更新请求中将 delete-max-idle 标志连同 delete-expiration-timedelete-max-age 标志一起传递。只要满足其中任意一个条件,都将导致集群删除。
  2. 您可以将 delete-expiration-time 标志或 delete-max-age 标志传递给集群创建或更新命令,但不能同时传递这两个标志。

集群创建示例:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --delete-max-idle=DURATION \
    --delete-expiration-time=TIME \
    ... other flags ...

集群更新示例:

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --delete-max-idle=DURATION \
    --no-delete-max-age \
    ... other flags

REST API

您可以通过在 Dataproc cluster.createcluster.patch API 请求中设置下表中列出的 Dataproc API ClusterLifecycleConfig 字段和值,来创建或更新集群预定删除值。

API 字段 说明 价值粒度 最小值 最大值
idleDeleteTtl1 适用于集群创建和集群更新命令。 从集群变为空闲状态(在集群创建或更新后且处于可供使用状态)到集群开始删除的时刻之间的时长。使用新值更新集群时,新值必须大于先前设置的值。 以秒为单位提供时长,最多包含九个小数位,并以“s”结尾。示例:“3.5s”。 提交一个时长为空的请求,以取消先前设置的 idleDeleteTtl 值。 1 秒 5 分钟 14 天
autoDeleteTime2 适用于集群创建和集群更新命令。 开始删除集群的时间。使用新时间更新集群时,新时间必须晚于先前设置的时间。更新时,如果为 autoDeleteTime 设置了空值,则会取消现有的自动删除。
RFC 3339 UTC(即“祖鲁时”)格式提供时间戳,精确到纳秒。示例:"2014-10-02T15:01:23.045123456Z"。
1 秒 从当前时间算起,10 分钟 从当前时间算起,14 天
autoDeleteTtl2 从提交集群创建或更新请求之时算起,直至集群开始删除那一刻的时长。更新集群时,新的预定删除时间(更新请求的时间加上新的时长)必须晚于先前设置的集群删除时间。提交一个空值,以取消先前设置的 autoDeleteTtl 值。 以秒为单位提供时长,最多包含九个小数位,并以“s”结束。 示例:“3.5s”。 1 秒 10 分钟 14 天
注意:
  1. 您可以在集群创建或更新请求中同时设置或更新 idleDeleteTtlautoDeleteTimeautoDeleteTtl。只要满足其中任意一个条件,都将导致集群删除。
  2. 您可以在请求中设置或更新 autoDeleteTimeautoDeleteTtl,但不能同时设置或更新这两者。

控制台

  1. 打开 Dataproc 创建集群页面。
  2. 选择自定义集群面板。
  3. 预定删除部分中,选择要应用到集群的选项。

查看预定删除集群设置

gcloud CLI

您可以使用 gcloud dataproc clusters list 命令来确认集群已启用预定删除功能。

 gcloud dataproc clusters list \
     --region=REGION
示例输出:
...
NAME         WORKER_COUNT ... SCHEDULED_DELETE
CLUSTER_ID   NUMBER       ... enabled
...

您可以使用 gcloud dataproc clusters describe 命令来检查集群的 LifecycleConfig 预定删除设置。

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'
...

autoDeleteTimeidleDeleteTtl 是在集群上设置的预定删除配置值。Dataproc 会生成 idleStartTime 值,该值是最新的集群空闲开始时间。如果集群在 idleStartTime + idleDeleteTtl 期间一直处于空闲状态,Dataproc 将删除该集群。

REST API

您可以提交 clusters.list 请求,确认集群已启用预定删除功能。

控制台

  • 您可以通过从 Google Cloud 控制台的 Dataproc 集群页面中选择集群名称,查看集群预定删除设置。
  • 从集群详细信息页面中,选择配置标签页。前往集群配置列表,以查看预定删除设置。