Spark 3.x 加入了與 YARN、Kubernetes 和 Standalone 叢集管理器的整合,以要求 GPU 和外掛點,這些點可延伸至 GPU 上執行作業。對於 Kubernetes,Spark 3.x 在執行程式 pod 級別上提供 GPU 隔離。因此 Spark 應用程式開發人員能更輕鬆地要求並使用 GPU,還能與深度學習及人工智慧框架 (如 Spark 上的 Horovod 及 TensorFlow) 更為緊密整合,更加有效地利用 GPU。
下圖顯示 GPU 排程流程的範例。使用者提交帶有 GPU 資源設定探索指令碼的應用程式。Spark 啟動驅動程式,該驅動程式使用配置傳遞給叢集管理員,要求具有指定資源量和 GPU 的容器。叢集管理員傳回容器。Spark 啟動容器。當執行程式開始時,會執行探索指令碼。Spark 將這些資訊發送回驅動程式,然後驅動程式可使用這些資訊將任務排程給 GPU。
Spark Web UI 已經過修改,增加了新的核取方塊來查看哪些資源已被分配。在這個範例中,已分配了兩個 GPU。
Spark 3.x 階段級資源排程讓您可以為不同階段選擇不同的容器大小。例如,一個用於 ETL,另一個用於機器學習。