擴充叢集容量 -

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

擴充叢集容量

如果您的工作花費太多時間,但執行者消耗了足夠的資源,並且 Spark 正在建立相對於可用核心的大量任務,請考慮擴展叢集容量。若要評估這是否適當,請使用下列測量結果。

CloudWatch 度量

  • 檢查CPU負載內存使用率以確定執行程序是否消耗了足夠的資源。

  • 檢查工作執行的時間長度,以評估處理時間是否太長而無法達到您的績效目標。

在下列範例中,四個執行程式以超過 97% 的CPU負載執行但大約三個小時後仍未完成處理。

""
注意

如果CPU負載很低,您可能不會受益於擴展叢集容量。

Spark UI

在 [Job] 索引標籤或 [階段] 索引標籤上,您可以查看每個工作或階段的工作數目。在下面的例子中,星火已經創建的58100任務。

所有工作的階段顯示一個階段和 58,100 個任務。

在「執行程序」選項卡上,您可以看到執行者和任務的總數。在下面的屏幕截圖中,每個 Spark 執行程序具有四個內核,並且可以同時執行四個任務。

顯示「核心」欄的「執行程式」表格。

在此示例中,Spark 任務的數量(58100)遠大於執行者可以同時處理的 16 個任務(4 個執行程序 ×4 個內核)。

如果您發現這些徵狀,請考慮擴展叢集。您可以使用下列選項來調整叢集容量:

  • 啟用 AWS Glue Auto ScalingAuto 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) 中的隨機播放,從而提高效能。