为了避免非活跃集群产生 Google Cloud 费用,请在创建集群时使用 Dataproc 的集群预定删除功能。此功能提供在发生以下事件时删除集群的选项:
- 在在指定的集群空闲时间段后
- 在指定的未来某个时间
- 在指定的时长(从提交集群创建请求之时算起)之后
会停用预定删除功能的操作
在集群运行期间,以下操作会停用预定删除功能,直到停用操作撤消:
- 移除 Dataproc Service Agent 服务账号的 IAM Dataproc Service Agent 角色
- 在集群项目中停用 Dataproc API
- 在预定删除集群的虚拟机上启用 Compute Engine 虚拟机删除保护
- 如果 Dataproc 服务代理服务账号(控制平面身份)不在边界内,则启用 VPC Service Controls
计算集群空闲时间
您可以使用预定删除功能在集群达到指定的空闲时间后将其删除。空闲时间是在集群创建且集群预配完成后计算的。当集群没有正在运行的作业时,系统便会开始计算空闲时间。
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.64
、1.5.39
、2.0.13
及更高映像版本或之后发布的映像版本创建的集群。对于使用早期映像版本创建的集群,在计算集群空闲时间时,系统仅会考虑 Dataproc Jobs API 活动。
使用集群预定删除功能
您可以使用 Google Cloud CLI、Dataproc API 或 Google Cloud 控制台在创建集群时设置预定删除值。创建集群后,您可以更新集群,以更改或删除先前在集群上设置的预定删除值。
gcloud CLI
您可以通过将下表中列出的标志和值传递给 gcloud dataproc clusters create
或 gcloud dataproc clusters update
命令,在集群上创建或更新预定删除值。
gcloud CLI 标志 | 说明 | 价值粒度 | 最小值 | 最大值 |
---|---|---|---|---|
--delete-max-idle 1 |
适用于集群创建和集群更新命令。
从集群变为空闲状态(在集群创建或更新后且处于可供使用状态)到集群开始删除的时刻之间的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(秒、分钟、小时、天)。示例:“30m”:从集群开始空闲之时算起 30 分钟。 |
1 秒 | 5 分钟 | 14 天 |
--no-delete-max-idle |
仅适用于集群更新命令。
通过先前的 delete-max-idle 标志设置取消集群删除。 |
不适用 | 不适用 | 不适用 |
--delete-expiration-time 2 |
适用于集群创建和集群更新命令。 开始删除集群的时间(采用 ISO 8601 日期时间格式)。 如需以正确的格式生成日期时间,您可以使用时间戳生成器。 例如,“2017-08-22T13:31:48-08:00”指定的到期时间为 13:21:48(UTC -8:00 时区)。 | 1 秒 | 从当前时间算起,10 分钟 | 从当前时间算起,14 天 |
--delete-max-age 2 |
适用于集群创建和集群更新命令。
从提交集群创建请求之时算起,直至集群开始删除那一刻的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(秒、分钟、小时、天)。例如:“30m”:从现在算起 30 分钟;“1d”:从现在算起 1 天。 |
1 秒 | 10 分钟 | 14 天 |
--no-delete-max-age |
仅适用于集群更新命令。
通过先前的 delete-max-age 或 delete-expiration-time 标志设置取消集群自动删除。 |
不适用 | 不适用 | 不适用 |
- 您可以在集群创建或更新请求中将
delete-max-idle
标志连同delete-expiration-time
或delete-max-age
标志一起传递。只要满足其中任意一个条件,都将导致集群删除。 - 您可以将
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.create 或 cluster.patch API 请求中设置下表中列出的 Dataproc API ClusterLifecycleConfig 字段和值,来创建或更新集群预定删除值。
API 字段 | 说明 | 价值粒度 | 最小值 | 最大值 |
---|---|---|---|---|
idleDeleteTtl 1 |
适用于集群创建和集群更新命令。
从集群变为空闲状态(在集群创建或更新后且处于可供使用状态)到集群开始删除的时刻之间的时长。使用新值更新集群时,新值必须大于先前设置的值。
以秒为单位提供时长,最多包含九个小数位,并以“s”结尾。示例:“3.5s”。
提交一个时长为空的请求,以取消先前设置的 idleDeleteTtl 值。 |
1 秒 | 5 分钟 | 14 天 |
autoDeleteTime 2 |
适用于集群创建和集群更新命令。
开始删除集群的时间。使用新时间更新集群时,新时间必须晚于先前设置的时间。更新时,如果为 autoDeleteTime 设置了空值,则会取消现有的自动删除。以 RFC 3339 UTC(即“祖鲁时”)格式提供时间戳,精确到纳秒。示例:"2014-10-02T15:01:23.045123456Z"。 |
1 秒 | 从当前时间算起,10 分钟 | 从当前时间算起,14 天 |
autoDeleteTtl 2 |
从提交集群创建或更新请求之时算起,直至集群开始删除那一刻的时长。更新集群时,新的预定删除时间(更新请求的时间加上新的时长)必须晚于先前设置的集群删除时间。提交一个空值,以取消先前设置的 autoDeleteTtl 值。
以秒为单位提供时长,最多包含九个小数位,并以“s”结束。
示例:“3.5s”。 |
1 秒 | 10 分钟 | 14 天 |
- 您可以在集群创建或更新请求中同时设置或更新
idleDeleteTtl
和autoDeleteTime
或autoDeleteTtl
。只要满足其中任意一个条件,都将导致集群删除。 - 您可以在请求中设置或更新
autoDeleteTime
或autoDeleteTtl
,但不能同时设置或更新这两者。
控制台
- 打开 Dataproc 创建集群页面。
- 选择自定义集群面板。
- 在预定删除部分中,选择要应用到集群的选项。
查看预定删除集群设置
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' ...
autoDeleteTime
和 idleDeleteTtl
是在集群上设置的预定删除配置值。Dataproc 会生成 idleStartTime
值,该值是最新的集群空闲开始时间。如果集群在 idleStartTime
+ idleDeleteTtl
期间一直处于空闲状态,Dataproc 将删除该集群。
REST API
您可以提交 clusters.list 请求,确认集群已启用预定删除功能。
控制台
- 您可以通过从 Google Cloud 控制台的 Dataproc 集群页面中选择集群名称,查看集群预定删除设置。
- 从集群详细信息页面中,选择配置标签页。前往集群配置列表,以查看预定删除设置。