本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
擴充叢集容量
如果您的工作花費太多時間,但執行者消耗了足夠的資源,並且 Spark 正在建立相對於可用核心的大量任務,請考慮擴展叢集容量。若要評估這是否適當,請使用下列測量結果。
CloudWatch 度量
-
檢查CPU負載和內存使用率以確定執行程序是否消耗了足夠的資源。
-
檢查工作執行的時間長度,以評估處理時間是否太長而無法達到您的績效目標。
在下列範例中,四個執行程式以超過 97% 的CPU負載執行,但大約三個小時後仍未完成處理。
注意
如果CPU負載很低,您可能不會受益於擴展叢集容量。
Spark UI
在 [Job] 索引標籤或 [階段] 索引標籤上,您可以查看每個工作或階段的工作數目。在下面的例子中,星火已經創建的58100
任務。
在「執行程序」選項卡上,您可以看到執行者和任務的總數。在下面的屏幕截圖中,每個 Spark 執行程序具有四個內核,並且可以同時執行四個任務。
在此示例中,Spark 任務的數量(58100)
遠大於執行者可以同時處理的 16 個任務(4 個執行程序 ×4 個內核)。
如果您發現這些徵狀,請考慮擴展叢集。您可以使用下列選項來調整叢集容量:
-
啟用 AWS Glue Auto Scaling — Auto Scaling 功能適用於 3.0 AWS Glue 版或更高版本中的 AWS Glue 擷取、轉換和載入 (ETL) 和串流任務。 AWS Glue 根據每個階段的分割區數目或工作執行時產生微批次的速率,自動從叢集中新增和移除 Worker。
如果您發現即使啟用了「Auto Scaling」,Worker 數量仍未增加的情況,請考慮手動新增 Worker。但是,請注意,針對一個階段手動調整可能會導致許多 Worker 在後續階段閒置,因此花費更多成本以實現零效能增益。
啟用 Auto Scaling 後,您可以在執行程序度量中看到執行程 CloudWatch 序的數量。使用下列指標來監視 Spark 應用程式中執行程式的需求:
-
glue.driver.ExecutorAllocationManager.executors.numberAllExecutors
-
glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors
如需有關指標的詳細資訊,請參閱AWS Glue 使用 Amazon CloudWatch 指標進行監控。
-
-
向外擴充:增加 AWS Glue 工作者數量 — 您可以手動增加 AWS Glue 工作者的數量。僅在您觀察到閒置的工作人員之前添加 Worker 此時,增加更多員工將在不改善結果的情況下增加成本。如需詳細資訊,請參閱平行化工作。
-
擴充:使用較大的 Worker 類型 — 您可以手動變更 AWS Glue Worker 的執行個體類型,以使用具有更多核心、記憶體和儲存空間的 Worker。較大的 Worker 類型可讓您垂直擴展和執行密集的資料整合工作,例如記憶體密集型資料轉換、傾斜彙總,以及涉及數 PB 資料的實體偵測檢查。
如果 Spark 驅動程式需要更大容量 (例如,工作查詢計畫相當龐大),所以向上擴充也會有所協助。如需有關背景工作者類型和效能的詳細資訊,請參閱 AWS 大數據部落格文章使用新的 AWS Glue 較大型背景工作類型 G.4X 和 G.8X 來調整 Apache Spark 工
作的規模。 使用較大的 Worker 也可以減少所需的 Worker 總數,藉由減少密集型作業 (例如 Join) 中的隨機播放,從而提高效能。