本文說明如何建立及執行工作,並在特定工作成功或失敗後才排定工作。如要進一步瞭解工作狀態,請參閱工作建立和執行總覽。
如果工作負載的資源需求各不相同,建議使用相依工作,建立自動化工作鏈,每個工作都使用個別的 VM。舉例來說,您可以將用於低需求作業 (例如資料準備) 和運算密集型作業 (例如資料處理) 的 VM 類型分開。使用相依作業有助於最佳化資源消耗量,進而降低成本和配額用量。
事前準備
- 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
-
如要取得建立作業所需的權限,請要求管理員授予下列 IAM 角色:
-
批次工作編輯者 (
roles/batch.jobsEditor
) 專案 -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) 在作業的服務帳戶上,預設為預設 Compute Engine 服務帳戶
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
-
批次工作編輯者 (
限制
從屬工作有下列限制:
依附工作最多可有四個依附元件。每個依附元件都必須包含不重複的工作名稱,以及下列其中一個必要狀態:
SUCCEEDED
:成功FAILED
:失敗FINISHED
:成功或失敗
建立相依工作時,必須存在所有依附元件工作。
除非每個依附元件工作都進入必要狀態,否則依附元件工作無法進入排定 (
SCHEDULED
) 狀態。如果依附項工作無法進入必要狀態,依附工作會立即失敗,不會排定時間。與所有工作一樣,如果工作超過佇列中的等待時間上限,相依工作就無法進入排定 (
SCHEDULED
) 狀態。Batch 會強制執行這項限制,避免工作過時。因此,如果您預期任何依附元件工作完成所需的時間可能會超過這個限制,請考慮執行下列一或多項操作:- 如果尚未建立依附元件工作,請嘗試縮短依附元件工作的預期執行時間。舉例來說,您可以提高工作負載的平行處理程度,或限制任何不需要成功的任務和可執行檔的執行時間。
- 請等到依附元件工作的預期執行時間低於上限,再建立依附元件工作。
建立相依工作
您可以使用下列方法建立依附項工作:
- 如果是 Google Cloud CLI,請使用
gcloud alpha batch jobs submit
指令。 - 如要使用 Batch API,請使用 v1alpha
jobs.create
方法。
如要指定工作為依附元件,請在 JSON 檔案的主體中加入dependencies[].items
欄位,該欄位支援以鍵/值組合形式指定一或多個依附元件:
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
}
}
]
更改下列內容:
DEPENDENCY_JOB_NAME
:依附項工作的名稱,必須先達到必要狀態,才能排定這個依附項工作。REQUIRED_STATE
:對應依附元件工作的必要狀態,必須為SUCCEEDED
、FAILED
或FINISHED
。
舉例來說,具有三個依附元件的依附工作可以有類似下列內容的 JSON 設定檔:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3
}
],
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
"DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
"DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
}
}
]
}