为了避免非活跃集群产生 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 活动必须处于空闲状态才能启动并继续递增集群空闲时间计算。
使用集群预定删除功能
gcloud 命令
您可以通过将以下预定删除标志传递给 gcloud dataproc clusters create 命令来创建具有集群预定删除功能的集群。
标志 | 说明 | 最精细的粒度 | 最小值 | 最大值 |
---|---|---|---|---|
--max-idle 1 | 从集群进入闲置状态之时算起,直至集群开始删除那一刻的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(分别为秒、分钟、小时、天)。示例:“30m”或“1d”(从集群开始闲置之时算起,30 分钟或 1 天)。 | 1 秒 | 5 分钟 | 14 天 |
--expiration-time 2 | 开始删除集群的时间(采用 ISO 8601 日期时间格式)。要以正确的格式生成日期时间,一种简单的方法是使用时间戳生成器。例如,“2017-08-22T13:31:48-08:00”指定的到期时间为 13:21:48(UTC -8:00 时区)。 | 1 秒 | 从当前时间算起,10 分钟 | 从当前时间算起,14 天 |
--max-age 2 | 从提交集群创建请求之时算起,直至集群开始删除那一刻的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(分别为秒、分钟、小时、天)。例如:“30m”(从现在算起,30 分钟);“1d”(从现在算起,1 天)。 | 1 秒 | 10 分钟 | 14 天 |
gcloud dataproc clusters create cluster-name \ --region=region \ --max-idle=duration \ --expiration-time=time \ ... other flags ...
您可以将以下预定删除标志传递给 gcloud dataproc clusters update 命令(其他集群更新标志不能与预定删除标志组合使用),从而更新使用预定删除功能创建的集群以更改或移除预定删除设置。
标志 | 说明 | 最精细的粒度 | 最小值 | 最大值 |
---|---|---|---|---|
--max-idle 1 | 从集群进入闲置状态之时算起,直至集群开始删除那一刻的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(分别为秒、分钟、小时、天)。示例:“30m”或“1d”(从集群开始闲置之时算起,30 分钟或 1 天)。 | 1 秒 | 5 分钟 | 14 天 |
--no-max-idle | 如果之前通过 max-idle 标志设置了集群闲置时长,则取消在达到此时限时删除集群的操作 | 不适用 | 不适用 | 不适用 |
--expiration-time 2 | 开始删除集群的时间(采用 ISO 8601 日期时间格式)。要以正确的格式生成日期时间,一种简单的方法是使用时间戳生成器。例如,“2017-08-22T13:31:48-08:00”指定的到期时间为 13:21:48(UTC -8:00 时区)。 | 1 秒 | 从当前时间算起,10 分钟;新时间不得早于先前设置的时间。 | 从当前时间算起,14 天 |
--max-age 2 | 从提交集群更新请求之时算起,直至集群开始删除那一刻的时长。以 IntegerUnit 格式提供时长,其中,单位可以为“s、m、h、d”(分别为秒、分钟、小时、天)。例如:“30m”(从现在算起,30 分钟);“1d”(从现在算起,1 天)。 | 1 秒 | 10 分钟,并且更新后的预定删除时间(更新时间 + 新的 max-age 时长)不得早于先前设置的集群删除时间。 | 14 天 |
--no-max-age | 如果之前通过 max-age 或 expiration-time 标志设置了集群最长存在时间,则取消在达到此时限时删除集群的操作 | 不适用 | 不适用 | 不适用 |
gcloud dataproc clusters update cluster-name \ --region=region \ --max-idle=duration \ --no-max-age \ ... other flags
REST API
您可以通过在 cluster.create 或 cluster.patch API 请求中设置以下 ClusterLifecycleConfig 字段,来创建具有集群预定删除功能的集群。
标志 | 说明 | 最精细的粒度 | 最小值 | 最大值 |
---|---|---|---|---|
idleDeleteTtl 1 |
从集群进入闲置状态之时算起,直至集群开始删除那一刻的时长。以秒为单位提供时长,最多包含九个小数位,并以“s”结束。示例:“3.5s”。 | 1 秒 | 从集群的创建或更新时间算起,5 分钟。更新集群时,新值必须大于先前设置的值。通过提交一个时长为空的 cluster.patch 请求,您可以取消先前设置的 idleDeleteTtl 值。 |
14 天 |
autoDeleteTime 2 |
开始删除集群的时间。以 RFC 3339 UTC(即“祖鲁时”)格式提供时间戳,精确到纳秒。示例:“2014-10-02T15:01:23.045123456Z”。 | 1 秒 | 从当前时间算起,10 分钟。更新集群时,新时间必须晚于先前设置的时间。 | 从当前时间算起,14 天 |
autoDeleteTtl 2 |
从提交集群创建或更新请求之时算起,直至集群开始删除那一刻的时长。以秒为单位提供时长,最多包含九个小数位,并以“s”结束。示例:“3.5s”。 | 1 秒 | 10 分钟。更新集群时,新的预定删除时间(更新时间 + 新的 max-age 时长)必须晚于先前设置的集群删除时间。通过提交一个时长为空的 cluster.patch 请求,您可以取消先前设置的 autoDeleteTtl 值。 |
14 天 |
控制台
- 打开 Dataproc 创建集群页面,然后选择“自定义集群”面板。向下滚动到“预定删除”部分,然后选择要应用到集群的选项。
查看预定删除集群设置
gcloud 命令
您可以使用 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 集群页面中选择集群名称,以查看集群的预定删除设置。从集群详情页面中,选择“配置”标签页。向下滚动集群配置列表以查看计划的删除设置。