このドキュメントでは、特定のジョブが成功または失敗するまでスケジュールされないジョブを作成して実行する方法について説明します。ジョブの状態の詳細については、ジョブの作成と実行の概要をご覧ください。
リソース要件が異なるワークロードがある場合は、依存関係のあるジョブを使用して、それぞれが個別の VM を使用するジョブの自動チェーンを作成することを検討してください。たとえば、負荷の少ないオペレーション(データ準備など)とコンピューティング負荷の高いオペレーション(データ処理など)に使用する VM のタイプを分離します。依存ジョブを使用してリソース使用量を最適化することで、費用と割り当て使用量を削減できます。
始める前に
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
-
ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
-
プロジェクトのバッチジョブ編集者(
制限事項
依存ジョブには次の制限があります。
依存するジョブには最大 4 つの依存関係を含めることができます。各依存関係には、一意のジョブ名と、次のいずれかの必須状態を含める必要があります。
SUCCEEDED
: 成功FAILED
: 失敗FINISHED
: 成功または失敗
依存関係のあるジョブを作成する場合は、その依存関係ジョブがすべて存在している必要があります。
各依存関係ジョブが必要な状態に入るまで、依存関係ジョブはスケジュール設定済み(
SCHEDULED
)状態に移行できません。依存関係ジョブが必要な状態に入ることができなくなった場合、依存関係ジョブはスケジュールされずにすぐに失敗します。
依存ジョブを作成する
依存関係のあるジョブを作成するには、次の方法を使用します。
- Google Cloud CLI の場合は、
gcloud alpha batch jobs submit
コマンドを使用します。 - Batch API の場合は、v1alpha
jobs.create
メソッドを使用します。
ジョブが依存関係にあることを指定するには、JSON ファイルのメイン本文に dependencies[].items
フィールドを含めます。このフィールドは、Key-Value ペアとして指定された 1 つ以上の依存関係をサポートします。
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
}
}
]
次のように置き換えます。
DEPENDENCY_JOB_NAME
: 依存関係ジョブの名前。この依存関係ジョブのスケジュールが許可される前に、必要な状態に達している必要があります。REQUIRED_STATE
: 対応する依存関係ジョブに必要な状態。SUCCEEDED
、FAILED
、またはFINISHED
のいずれか。
たとえば、3 つの依存関係を持つ依存関係ジョブには、次のような 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"
}
}
]
}
次のステップ
- ジョブの作成または実行に問題がある場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する方法を確認する。
- 別のジョブ作成オプションについて学習する。