AWS Glue 串流自動調整
AWS Glue 串流 ETL 任務會持續使用串流來源的資料、清理和轉換傳輸中資料,並使其可供分析。透過監控任務執行的每個階段,AWS Glue 自動擴展可以在工作者閒置時關閉工作者,如果可能進行額外的平行處理,則可以新增工作者。
以下章節將提供 AWS Glue 串流自動調整的相關資訊
在 AWS Glue Studio 中啟用 Auto Scaling
在 AWS Glue Studio 中的 Job details (任務詳細資訊) 索引標籤上,選擇 Spark 或 Spark Streaming 類型,並將 Glue version (Glue 版本) 選為 Glue 3.0 或 Glue 4.0。然後,一個核取方塊將顯示在 Worker type (工作者類型) 下方。
-
選取 Automatically scale the number of workers (自動擴展工作者數量) 選項。
-
設定 Maximum number of workers (工作者數上限) 以定義可提供給任務執行的工作者數上限。
透過 AWS CLI 或開發套件啟用 Auto Scaling
要從 AWS CLI 為任務執行啟用 Auto Scaling,請使用下列組態執行 start-job-run:
{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, and R.8X are supported for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }
在 ETL 任務執行完成後,您也可以呼叫 get-job-run 以檢查任務執行的實際資源使用情況 (以 DPU 秒為單位)。注意:新欄位 DPUSeconds 只會在已啟用 Auto Scaling 功能的 AWS Glue 3.0 或更高版本上針對批任務顯示。此欄位不支援串流任務。
$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1 { "JobRun": { ... "GlueVersion": "3.0", "DPUSeconds": 386.0 } }
您還可以使用具有相同組態的 AWS Glue SDK 為任務執行設定 Auto Scaling。
運作方式
跨微批次進行調整
以下範例可說明自動調整的運作方式。
-
您有一個以 50 個 DPU 開始的 AWS Glue 任務。
-
自動調整功能已啟用。
在此範例中,AWS Glue 會查看幾個微批次的「batchProcessingTimeInMs」指標,以確認任務是否在您建立的時間長度內完成。如果任務提前完成,則視任務提前完成的時間多寡,AWS Glue 可能會縮減規模。您可以在 Amazon CloudWatch 監控這項使用「numberAllExecutors」繪製的指標,以了解自動調整功能的運作方式。
只有在每個微批次完成後,執行器的數量才會呈指數級擴展或縮減。正如您在 Amazon CloudWatch 監控日誌中所看到的,AWS Glue 會查看所需的執行器數量 (橘線),並自動調整執行器數量 (藍線) 以與所需數量相符。
若 AWS Glue 縮減執行器數量後觀察到資料量增加,因而使微批次處理時間變長,AWS Glue 最多會擴展到指定的上限數量 50 個 DPU。
在微批次內調整
在上述範例中,系統會監控一些已完成的微批次,以決定要擴展還是縮減數量。若時間較長則需要自動擴展,以便可更快在微批次內回應,而無需等待幾個微批次。在這些情況下,您可以將其他設定 --auto-scaIe-within-microbatch 設定為 true。您可以在 AWS Glue Studio 將此新增至 AWS Glue 的任務屬性,如下所示。