陣列工作 - AWS Batch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

陣列工作

陣列任務為共用常見參數的任務,例如任務定義、vCPU 和記憶體。它會以相關但獨立的基本作業的集合形式執行,這些工作可能會分散在多個主機上,而且可能會同時執行。陣列工作是執行非常 parallel 工作的最有效方式,例如蒙地卡羅模擬、參數化掃描或大型彩現工作。

AWS Batch 陣列作業會像一般工作一樣提交。不過,您必須指定陣列大小 (2 至 10,000),以定義陣列內應該執行的子任務數量。如果您提交陣列大小 1000 的任務,單一任務將執行並產生 1000 個子任務。陣列任務為參考或指標,用於管理所有的子任務。如此一來,您就可以透過單一查詢提交大型工作負載。attemptDurationSeconds參數中指定的逾時會套用至每個子工作。父陣列工作沒有逾時。

當您提交陣列工作時,父陣列工作會取得一般 AWS Batch 工作 ID。每個子工作都有相同的基本 ID。但是,子工作的陣列索引會附加到父 ID 的末尾,example_job_ID:0例如陣列的第一個子工作。

父陣列工作可以輸入SUBMITTEDPENDINGFAILED、或SUCCEEDED狀態。PENDING當任何子工作更新為時,陣列父工作會更新為RUNNABLE。如需工作相依性的詳細資訊,請參閱Job 相依性

在執行時間,AWS_BATCH_JOB_ARRAY_INDEX 環境變數設為容器的對應任務陣列索引編號。第一個陣列工作索引編號0,後續嘗試會以遞增順序排列 (例如,1、2 和 3)。您可以使用此索引值,控制您陣列任務子系的區分方式。如需詳細資訊,請參閱 教學課程:使用陣列工作索引來控制工作差異化

對於陣列任務的相依性,您可以指定相依性類型,例如 SEQUENTIALN_TO_N。您可以指定 SEQUENTIAL 類型相依性 (不指定任務 ID),讓每個子陣列任務從索引 0 開始依序完成。例如,如果您提交陣列大小 100 的陣列任務,並指定 SEQUENTIAL 類型的相依性,後續將產生 100 個子任務,必須等第一個子任務完成後,下一個子任務才會開始。下圖顯示 A 任務,陣列大小 10 的陣列任務。A 任務子索引的每個任務都相依於前一個子任務。A:1 任務必須等 A:0 任務完成後才會開始。

您也可以指定 N_TO_N 類型相依性,以及陣列任務的任務 ID。如此一來,此任務的每個索引子系必須等待各相依性對應的索引子系完成後,才能開始。下圖顯示 Job A 和 Job B,這兩個陣列工作的陣列大小各為 10,000。B 任務子索引的每個任務相依於 A 任務的對應索引。B:1 任務必須等到 A:1 任務完成後才會開始。

如果您取消或終止父陣列任務,所有子任務將隨之取消或終止。您可以隨時取消或終止個別的子任務 (其將移至 FAILED 狀態),而不會影響其他子任務。不過,如果子陣列工作失敗 (單獨或手動取消或終止),父項工作也會失敗。