AWS Glue 串流自動調整 - AWS Glue

AWS Glue 串流自動調整

AWS Glue 串流 ETL 任務會持續使用串流來源的資料、清理和轉換傳輸中資料,並使其可供分析。透過監控任務執行的每個階段,AWS Glue 自動擴展可以在工作者閒置時關閉工作者,如果可能進行額外的平行處理,則可以新增工作者。

以下章節將提供 AWS Glue 串流自動調整的相關資訊

在 AWS Glue Studio 中啟用 Auto Scaling

在 AWS Glue Studio 中的 Job details (任務詳細資訊) 索引標籤上,選擇 SparkSpark Streaming 類型,並將 Glue version (Glue 版本) 選為 Glue 3.0Glue 4.0。然後,一個核取方塊將顯示在 Worker type (工作者類型) 下方。

  • 選取 Automatically scale the number of workers (自動擴展工作者數量) 選項。

  • 設定 Maximum number of workers (工作者數上限) 以定義可提供給任務執行的工作者數上限。

在 AWS Glue Studio 中啟用和設定 Auto Scaling

透過 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 會查看所需的執行器數量 (橘線),並自動調整執行器數量 (藍線) 以與所需數量相符。

螢幕擷取畫面顯示 Amazon CloudWatch 監控日誌,上例中的 AWS Glue 會查看所需的執行器數量 (橘線),並調整執行器數量 (藍線) 以與所需數量相符,無須手動進行調整。

若 AWS Glue 縮減執行器數量後觀察到資料量增加,因而使微批次處理時間變長,AWS Glue 最多會擴展到指定的上限數量 50 個 DPU。

在微批次內調整

在上述範例中,系統會監控一些已完成的微批次,以決定要擴展還是縮減數量。若時間較長則需要自動擴展,以便可更快在微批次內回應,而無需等待幾個微批次。在這些情況下,您可以將其他設定 --auto-scaIe-within-microbatch 設定為 true。您可以在 AWS Glue Studio 將此新增至 AWS Glue 的任務屬性,如下所示。

螢幕擷取畫面顯示金鑰和值的任務參數。「金鑰」欄位包含值 --auto-scaIe-within-microbatch,「值」欄位則包含值 true。