本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
陣列任務
陣列任務是共用常見參數的任務,例如任務定義、vCPUs 和記憶體。它執行為相關但獨立的基本任務集合,這些任務可能會分散到多個主機,並可能同時執行。陣列任務是執行超平行任務的最有效方法,例如 Monte Carlo 模擬、參數掃描或大型渲染任務。
AWS Batch 陣列任務的提交方式與一般任務相同。不過,您必須指定陣列大小 (2 至 10,000),以定義陣列內應該執行的子任務數量。如果您提交陣列大小 1000 的任務,單一任務將執行並產生 1000 個子任務。陣列任務為參考或指標,用於管理所有的子任務。如此一來,您可以使用單一查詢來提交大型工作負載。attemptDurationSeconds
參數中指定的逾時會套用至每個子任務。父陣列任務沒有逾時。
當您提交陣列任務時,父陣列任務會得到正常 AWS Batch 的任務 ID。每個子任務都有相同的基本 ID。不過,子任務的陣列索引會附加到父 ID 的結尾,例如
陣列的第一個子任務。example_job_ID
:0
父陣列任務可以輸入 SUBMITTED
、PENDING
、 FAILED
或 SUCCEEDED
狀態。當任何子任務更新為 PENDING
時,陣列父任務會更新為 RUNNABLE
。如需任務相依性的詳細資訊,請參閱 任務相依性。
在執行時間,AWS_BATCH_JOB_ARRAY_INDEX
環境變數設為容器的對應任務陣列索引編號。第一個陣列任務索引編號為 0
,後續嘗試會以遞增順序 (例如 1、2 和 3) 表示。您可以使用此索引值,控制您陣列任務子系的區分方式。如需詳細資訊,請參閱教學課程:使用陣列任務索引來控制任務差異化。
對於陣列任務的相依性,您可以指定相依性類型,例如 SEQUENTIAL
或 N_TO_N
。您可以指定 SEQUENTIAL
類型相依性 (不指定任務 ID),讓每個子陣列任務從索引 0 開始依序完成。例如,如果您提交陣列大小 100 的陣列任務,並指定 SEQUENTIAL
類型的相依性,後續將產生 100 個子任務,必須等第一個子任務完成後,下一個子任務才會開始。下圖顯示 A 任務,陣列大小 10 的陣列任務。A 任務子索引的每個任務都相依於前一個子任務。A:1 任務必須等 A:0 任務完成後才會開始。
您也可以指定 N_TO_N
類型相依性,以及陣列任務的任務 ID。如此一來,此任務的每個索引子系必須等待各相依性對應的索引子系完成後,才能開始。下圖顯示任務 A 和任務 B,兩個陣列任務的陣列大小各為 10,000。B 任務子索引的每個任務相依於 A 任務的對應索引。B:1 任務必須等到 A:1 任務完成後才會開始。
如果您取消或終止父陣列任務,所有子任務都會隨之取消或終止。您可以取消或終止個別子任務 (將其移至 FAILED
狀態),而不會影響其他子任務。但是,如果子陣列任務失敗 (自行,或透過手動取消或終止任務),父項任務也會失敗。在此案例中,當所有子任務完成FAILED
時,父任務會轉換為 。