AWS Glue 開發端點如何搭配 SageMaker 筆記本使用 - AWS Glue

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

AWS Glue 開發端點如何搭配 SageMaker 筆記本使用

存取開發端點的常見方法之一是在 SageMaker 筆記本上使用 Jupyter。Jupyter 筆記本是一個開源 Web 應用程式,廣泛用於視覺化、分析、機器學習等。AWS Glue SageMaker 筆記本為您提供了一個搭配 AWS Glue 開發端點的 Jupyter 筆記本體驗。在 AWS Glue SageMaker 筆記本中,Jupyter 筆記本環境預先設定了 SparkMagic,這是一個開源的 Jupyter 外掛程式,可將 Spark 任務提交到遠端 Spark 叢集。Apache Livy 是一種允許透過 REST API 與遠端 Spark 叢集進行互動的服務。在 AWS Glue SageMaker 筆記本中,SparkMagic 被設定為針對在 AWS Glue 開發端點執行的 Livy 伺服器呼叫 REST API。

下列文字流排說明每個元件的運作方式:

AWS Glue SageMaker 筆記本:(Jupyter → SparkMagic) → (網路) → AWS Glue 開發端點:(Apache Livy → Apache Spark)

一旦您在 Jupyter 筆記本上執行在每個段落中編寫的 Spark 指令碼,Spark 程式碼就會透過 SparkMagic 提交到 Livy 伺服器,然後一個名為 "livy-session-N" 的 Spark 任務會在 Spark 叢集上執行。這個任務叫做 Livy 工作階段。Spark 任務將在筆記本工作階段處於活動狀態時執行。當您從筆記本關閉 Jupyter 核心或工作階段逾時時,Spark 任務將會終止。每個筆記本 (.ipynb) 檔案啟動一個 Spark 任務。

您可以使用單一 AWS Glue 開發端點來搭配多個 SageMaker 筆記本執行個體。您可以在每個 SageMaker 筆記本執行個體中建立多個筆記本檔案。當您開啟每個筆記本檔案並執行段落時,會透過 SparkMagic 在 Spark 叢集上每個筆記本檔案的 Livy 工作階段啟動。每個 Livy 工作階段對應於單個 Spark 任務。

AWS Glue 開發端點和 SageMaker 筆記本的預設行為

Spark 任務是根據 Spark 設定執行。有多種方法可以設定 Spark 組態 (例如 Spark 叢集組態、SparkMagic 的組態等)。

依預設,Spark 根據 Spark 叢集組態配置叢集資源給 Livy 工作階段。在 AWS Glue 開發端點中,叢集組態取決於工作者類型。下面是一個資料表,它解釋了每個工作者類型的常見組態。

標準 G.1X G.2X
spark.driver.memory 5G 10G 20G
spark.executor.memory 5G 10G 20G
spark.executor.cores 4 8 16
spark.dynamicAllocation.enabled TRUE TRUE TRUE

Spark 執行器的最大數量由 DPU (或 NumberOfWorkers) 和工作者類型自動計算。

標準 G.1X G.2X
最大 Spark 執行器數量 (DPU - 1) * 2 - 1 (NumberOfWorkers - 1) (NumberOfWorkers - 1)

例如,如果您的開發端點有 10 個工作者,並且工作者類型為 G.1X,那麼您將有 9 個 Spark 執行器,並且整個叢集將有 90G 的執行器記憶體,因為每個執行器都有 10G 的記憶體。

無論指定的工作者類型為何,Spark 動態資源配置都會開啟。如果資料集足夠大,Spark 可以將所有執行器配置給單個 Livy 工作階段,因為預設未設定 spark.dynamicAllocation.maxExecutors。這代表同一個開發端點上的其他 Livy 工作階段將等待啟動新的執行器。如果資料集很小,Spark 將能夠同時將執行器配置給多個 Livy 工作階段。

注意

如需有關如何在不同的使用案例中配置資源,以及如何設定組態來修改行為的詳細資訊,請參閱 進階組態:在多個使用者之間共用開發端點