如要避免閒置的叢集產生Google Cloud 費用,或避免因叢集產生費用而需要刪除及重新建立叢集,請使用 Managed Service for Apache Spark 叢集排定停止功能,停止所有叢集 VM。停止的 VM 不會產生費用,但相關聯的資源 (例如永久磁碟) 仍會繼續產生費用。
停止叢集會停止所有叢集 VM,並導致所有執行中的工作失敗。叢集停止後,您就無法更新叢集、將工作提交至叢集,或使用 Managed Service for Apache Spark 元件閘道存取叢集中的選用元件。停止叢集後,您可以重新啟動叢集,並繼續工作。
如要使用叢集排定停止功能,請使用 2.2.42 以上、2.1.76 以上和 2.0.57 以上的映像檔版本建立叢集。
功能
您可以選擇在達到一段指定的閒置時間後停止叢集,也可以指定在特定的時間點或時間範圍後停止叢集。
叢集排定停止作業支援具有次要工作站和零規模叢集的叢集。
您可以更新或取消叢集排定停止設定。
限制和注意事項
- 如果叢集使用本機 SSD,則不支援排定停止時間。
- 您無法使用 Google Cloud 控制台設定叢集排定停止值。
- 雖然您可以更新叢集的排定停止設定,但已啟動的停止作業仍會繼續執行。如要檢查停止作業是否已啟動,請查看 Cloud Logging 中的叢集記錄。
- 如果叢集已過排定的停止時間,更新停止時間表會移除排定的停止設定。如要重新啟用排定的停止時間,請在更新要求中加入未來時間。
會停用叢集排定停止時間的動作
叢集執行期間,下列動作會停用叢集排定的停止作業,直到停用動作復原為止:
- 移除 Dataproc 服務代理程式服務帳戶的 IAM Managed Service for Apache Spark 服務代理程式角色
- 在叢集專案中停用 Managed Service for Apache Spark API
- 如果 Managed Service for Apache Spark 服務代理人服務帳戶 (控制層身分) 不在範圍邊界內,請啟用 VPC Service Controls
叢集閒置時間計算
如要將叢集視為閒置,必須符合下列條件:
- 叢集建立完成 (叢集佈建和啟動所花的時間不計入閒置時間計算)
- 叢集上沒有執行任何工作
- 叢集未處於
STOPPED狀態
將工作提交至叢集或停止叢集,都會重設閒置時間計算。
dataproc:dataproc.cluster-ttl.consider-yarn-activity
叢集屬性
會影響叢集閒置時間的計算方式,如下所示:
- 這項屬性預設為啟用 (設為
true)。 - 啟用這項屬性後,系統必須處於 YARN 和 Managed Service for Apache Spark Jobs API 活動閒置狀態,才會開始並持續遞增叢集閒置時間計算。
- YARN 活動包括待處理和執行的 YARN 應用程式。
- Managed Service for Apache Spark Jobs API 活動包括提交至 Managed Service for Apache Spark Jobs API 的待處理和執行中作業。
- 如果將這項屬性設為
false,系統就會開始計算叢集閒置時間,且只會在 Managed Service for Apache Spark Jobs API 活動閒置時繼續計算。
使用叢集排定停止功能
gcloud CLI
使用 Google Cloud CLI 或 Managed Service for Apache Spark API 建立叢集時,可以設定排定停止值。建立叢集後,您可以更新叢集,變更或刪除先前在叢集上設定的叢集排定停止值。
| 標記 | 說明 | 最高精細程度 | 下限值 | 上限值 |
|---|---|---|---|---|
--stop-max-idle1 |
適用於叢集建立和叢集更新指令。
自叢集進入閒置狀態 (建立或啟動後) 起,到叢集開始停止為止的持續時間。以 IntegerUnitIntegerUnit 格式提供持續時間,單位可以是「s、m、h、d」(分別表示秒、分鐘、小時、天)。範例:「30m」或「1d」(叢集變成閒置狀態後的 30 分鐘或 1 天)。 |
1 秒 | 5 分鐘 | 14 天 |
--no-stop-max-idle |
僅適用於叢集更新指令。
取消之前透過 --stop-max-idle 標記設定的叢集排定停止作業 |
不適用 | 不適用 | 不適用 |
--stop-expiration-time2 |
適用於叢集建立和叢集更新指令。 開始停止叢集的時間,使用 ISO 8601 日期時間格式。您可以使用時間戳記產生器,以正確格式產生日期時間。例如,「2017-08-22T13:31:48-08:00」指定到期時間為 UTC -8:00 時區 13:21:48。 | 1 秒 | 自現在時間起 10 分鐘 | 自現在時間起 14 天 |
--stop-max-age2 |
適用於叢集建立和叢集更新指令。
自提交叢集建立要求起,到叢集開始刪除為止的持續時間。以 IntegerUnitIntegerUnit 格式提供持續時間,單位可以是「s、m、h、d」(分別表示秒、分鐘、小時、天)。範例:「30m」(自現在起 30 分鐘),「1d」(自現在起 1 天)。 |
1 秒 | 10 分鐘 | 14 天 |
- 您可以在叢集建立或更新要求中,透過
stop-expiration-time或stop-max-age標記傳遞stop-max-idle標記。若第一個標記值成真則會停止叢集。 - 您可以將 c
stop-expiration-time標記或stop-max-age標記傳送至叢集建立或更新指令,但不能同時傳送兩個標記。
叢集建立範例:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --stop-expiration-time=TIME \ ... other flags ...
叢集更新範例:
例如:
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --stop-max-idle=DURATION \ --no-stop-max-age \ ... other flags
REST API
如要建立或更新叢集的排定停止值,請在 Managed Service for Apache Spark cluster.create 或 cluster.patch API 要求中,設定下表列出的 Managed Service for Apache Spark API ClusterLifecycleConfig 欄位和值。
| 標記 | 說明 | 最高精細程度 | 下限值 | 上限值 |
|---|---|---|---|---|
idleStopTtl1 |
適用於叢集建立和叢集更新指令。
自叢集建立或更新後進入閒置狀態起,到叢集開始停止為止的持續時間。提供以秒為單位的持續時間,最多可以有 9 個小數位數,以「s」結尾。例如:「3.5s」。
提交 cluster.patch 要求,並將持續時間設為空白,以取消之前設定的 idleDeleteTtl 值。 |
1 秒 | 分鐘 |
14 天 |
autoStopTime2 |
適用於叢集建立和叢集更新指令。 開始停止叢集的時間。提供採用 RFC 3339 UTC Zulu 格式的時間戳記,精確度可達奈秒。例如:"2014-10-02T15:01:23.045123456Z"。 | 1 秒 | 自現在時間起 10 分鐘 | 自現在時間起 14 天 |
autoStopTtl2 |
自提交叢集建立或更新要求起,到叢集開始刪除為止的持續時間。提供以秒為單位的持續時間,最多可以有 9 個小數位數,以「s」結尾。例如:「3.5s」。 | 1 秒 | 10 分鐘。 提交 cluster.patch 要求,並將持續時間設為空白,以取消之前設定的 autoStopTtl 值。 |
14 天 |
- 您可以在叢集建立或更新要求中,透過
stop-expiration-time或stop-max-age標記傳遞stop-max-idle標記。若第一個標記值成真則會停止叢集。 - 您可以將 c
stop-expiration-time標記或stop-max-age標記傳送至叢集建立或更新指令,但不能同時傳送兩個標記。
使用排定停止作業和排定刪除作業
如果您在建立或更新叢集時,同時使用叢集排定停止和叢集排定刪除功能,請注意下列限制:
stop-max-idle週期必須小於或等於delete-max-idle週期,或是delete-max-age或delete-expiration-time產生的週期。stop-max-age和stop-expiration-time必須分別晚於delete-max-age和delete-expiration-time。
查看「排定停止時間」叢集設定
gcloud CLI
您可以使用 gcloud dataproc clusters list 指令,確認叢集是否已啟用排定停止功能。
gcloud dataproc clusters list \ --region=REGION
輸出內容範例:
... NAME WORKER_COUNT ... SCHEDULED_STOP CLUSTER_ID NUMBER ... enabled ...
您可以使用 gcloud dataproc clusters describe 指令,檢查叢集 LifecycleConfig 排定停止設定。
gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
輸出內容範例:
... lifecycleConfig: autoStopTime: '2018-11-28T19:33:48.146Z' idleStopTtl: 1800s idleStartTime: '2018-11-28T18:33:48.146Z' ...
autoStopTime 和 idleStopTtl 值由使用者設定。Managed Service for Apache Spark 會產生 idleStartTime 值,也就是叢集最近一次進入閒置狀態的開始時間。
Managed Service for Apache Spark 會根據工作活動停止時間計算 idleStartTime,但排定叢集停止時間的機制會同時考量 idleStartTime 和叢集的上次開始時間。具體來說,如果叢集是由使用者或 Managed Service for Apache Spark 停止,系統會重設排定停止功能的閒置計算。也就是說,叢集下次啟動時,預定停止時間的倒數計時會重新開始。不過,停止的叢集重新啟動時,idleStartTime 本身不會重設。系統會繼續反映停止前最後一次出現工作閒置的情況。
因此,Managed Service for Apache Spark 必須符合下列兩項條件,才能根據 idleStopTtl 停止叢集:
- 叢集必須已閒置一段時間 (由
idleStopTtl指定),且這段時間是從上次啟動叢集算起。 - 自上次
idleStartTime重設以來,叢集必須閒置一段時間,時間長度由idleStopTtl指定。
REST API
您可以發出
clusters.list
要求,確認叢集是否已啟用排程停止功能。