Azure Machine Learning 中的 Apache Spark

Azure Machine Learning 與 Azure Synapse Analytics 整合可讓您透過 Apache Spark 架構輕鬆存取分散式電腦資源。 此整合提供下列 Apache Spark 計算體驗:

  • 無伺服器 Spark 計算
  • 連結的 Synapse Spark 集區

無伺服器 Spark 計算

使用 Apache Spark 架構,Azure Machine Learning 無伺服器 Spark 計算是在 Azure Machine Learning 環境中完成分散式計算工作的最簡單方式。 Azure Machine Learning 提供完全受控、無伺服器、隨選 Apache Spark 計算叢集。 其使用者無需建立 Azure Synapse 工作區和 Synapse Spark 集區。

使用者可以定義資源,包括執行個體類型和 Apache Spark 執行階段版本。 然後,他們可以使用這些資源來存取 Azure Machine Learning 筆記本中的無伺服器 Spark 計算,進行下列動作:

考慮事項

無伺服器 Spark 計算適用於大部分需要透過 Apache Spark 快速存取分散式計算資源的使用者案例。 不過,若要做出明智的決策,使用者應該考慮此方法的優缺點。

優點:

  • 不依賴為 Apache Spark 建立其他 Azure 資源 (Azure Synapse 基礎結構在幕後運作)。
  • 不需要訂用帳戶權限,即可建立 Azure Synapse 相關資源。
  • 不需要 SQL 集區配額。

缺點:

  • 缺少永續性 Hive 中繼存放區。 無伺服器 Spark 計算僅支援記憶體內部 Spark SQL。
  • 沒有可用的資料表或資料庫。
  • 缺少 Azure Purview 整合。
  • 沒有可用的連結服務。
  • 更少的資料來源和連接器。
  • 沒有集區層級設定。
  • 沒有集區層級程式庫管理。
  • 僅部分支援 mssparkutils

網路組態

若要搭配 Azure Machine Learning 和無伺服器 Spark 計算使用網路隔離,請使用受控虛擬網路

無活動期間和終止機制

第一次啟動時,無伺服器 Spark 計算 (冷啟動) 資源可能需要三到五分鐘才能啟動 Spark 工作階段本身。 Azure Synapse 支援的自動化無伺服器 Spark 計算佈建會導致此延遲。 在佈建無伺服器 Spark 計算並啟動 Apache Spark 工作階段之後,後續的程式碼執行 (暖啟動) 將不會經歷此延遲。

Spark 工作階段設定會提供一個定義工作階段逾時 (以分鐘為單位) 的選項。 Spark 工作階段將會在無活動期間超過使用者定義的逾時之後結束。 如果在接下來的 10 分鐘內未啟動另一個 Spark 工作階段,則為無伺服器 Spark 計算佈建的資源將會終止。

在無伺服器 Spark 計算資源終止之後,提交下一個作業將需要「冷啟動」。 下一個視覺效果會顯示一些工作階段無活動期間和叢集終止案例。

可展開的圖表,顯示 Apache Spark 工作階段閒置期間和叢集終止的案例。

工作階段層級 Conda 套件

Conda 相依性 YAML 檔案可以在工作階段設定中定義許多工作階段層級 Conda 套件。 如果工作階段需要 15 分鐘以上才能安裝 YAML 檔案中定義的 Conda 套件,此工作階段將會逾時。 首先檢查 Azure Synapse 基礎映像中是否已有必要的套件,變得非常重要。 若要這樣做,使用者應該遵循連結來判斷基礎映像中有哪些可用的套件,適用於使用中的 Apache Spark 版本:

重要

適用於 Apache Spark 的 Azure Synapse Analytics 執行階段:公告

  • 適用於 Apache Spark 3.2 的 Azure Synapse Analytics 執行階段:
    • EOLA 公告日期:2023 年 7 月 8 日
    • 支援結束日期:2024 年 7 月 8 日。 在此日期之後,將會停用執行階段。
  • 為了獲得持續的支援和最佳效能,我們建議您移轉至

注意

針對工作階段層級 Conda 套件:

  • 「冷啟動」大約需要十到十五分鐘。
  • 使用相同 Conda 套件的「暖啟動」大約需要一分鐘。
  • 具有不同 Conda 套件的「暖啟動」也需要大約十到十五分鐘。
  • 如果您安裝的套件很大或需要很長的安裝時間,其可能會影響 Spark 執行個體啟動時間。
  • 不支援 PySpark、Python、Scala/Java、.NET 或 Spark 版本。
  • 不支援 Docker 映像。

改善使用工作階段層級 Conda 套件時的工作階段冷啟動時間

您可以將 spark.hadoop.aml.enable_cache 設定變數設定為 true,來改善 Spark 工作階段「冷啟動」時間。 工作階段第一次啟動時,具有工作階段層級 Conda 套件的工作階段「冷啟動」通常需要 10 到 15 分鐘。 不過,後續工作階段「冷啟動」只需三到五分鐘。 在 [設定工作階段] 使用者介面的 [組態設定] 下,定莪組態變數。

顯示啟用快取之 Spark 工作階段組態標記的可展開圖表。

連結的 Synapse Spark 集區

在 Azure Synapse 工作區中建立的 Spark 集區可在連結了 Synapse Spark 集區的 Azure Machine Learning 工作區中使用。 此選項可能適用於想要重複使用現有 Synapse Spark 集區的使用者。

將 Synapse Spark 集區連結至 Azure Machine Learning 工作區需要其他步驟,然後您才能在 Azure Machine Learning 中使用該集區,進行下列動作:

連結的 Synapse Spark 集區可讓您存取原生 Azure Synapse 功能。 使用者負責 Synapse Spark 集區佈建、連結、設定和管理。

連結的 Synapse Spark 集區的 Spark 工作階段設定也會提供一個選項來定義工作階段逾時 (以分鐘為單位)。 工作階段逾時行為類似於上一節中的描述,不同之處在於相關聯的資源從未在工作階段逾時之後終止。

定義 Spark 叢集大小

在 Azure Machine Learning Spark 作業中,您可以使用三個參數值定義 Spark 叢集大小:

  • 執行程式數目
  • 執行程式核心
  • 執行程式記憶體

您應該將 Azure Machine Learning Apache Spark 執行程式視為相當於 Azure Spark 背景工作節點。 有一個範例可以說明這些參數。 假設您已將執行程式數目定義為 6 (相當於六個背景工作節點)、將執行程式核心數目定義為 4,以及將執行程式記憶體定義為 28 GB。 接著,您的 Spark 作業可以存取總共有 24 個核心、記憶體為 168 GB 的叢集。

確保 Spark 作業的資源存取

若要存取資料和其他資源,Spark 作業可以使用受控識別或使用者身分識別傳遞。 下表摘要說明 Spark 作業用來存取資源的機制。

Spark 集區 支援的身分識別 預設身分識別
無伺服器 Spark 計算 使用者身分識別、附加至工作區的使用者指派受控識別 使用者身分識別
連結的 Synapse Spark 集區 使用者身分識別、附加至附加 Synapse Spark 集區的使用者指派受控識別、附加 Synapse Spark 集區的系統指派受控識別 附加 Synapse Spark 集區的系統指派受控識別

本文描述 Spark 作業的資源存取。 在筆記本工作階段中,無伺服器 Spark 計算和連結的 Synapse Spark 集區會在互動式資料整頓期間,使用使用者身分識別傳遞進行資料存取。

注意

  • 為了確保 Spark 作業執行成功,將參與者儲存體 Blob 資料參與者角色 (在用於資料輸入和輸出的 Azure 儲存體帳戶上) 指派給將用於 Spark 作業提交的身分識別。
  • 如果連結的 Synapse Spark 集區指向 Apache Spark 工作區中的 Synapse Spark 集區,且該工作區具有相關聯的受控虛擬網路,請設定儲存體帳戶的受控私人端點。 此設定將協助確保資料存取。

下一步