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 計算資源終止之後,提交下一個作業將需要「冷啟動」。 下一個視覺效果會顯示一些工作階段無活動期間和叢集終止案例。
工作階段層級 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 日。 在此日期之後,此執行階段將停用。
- 為了獲得持續的支援和最佳效能,建議您移轉至 Apache Spark 3.4
注意
針對工作階段層級 Conda 套件:
- 「冷啟動」大約需要十到十五分鐘。
- 使用相同 Conda 套件的「暖啟動」大約需要一分鐘。
- 具有不同 Conda 套件的「暖啟動」也需要大約十到十五分鐘。
- 如果您安裝的套件很大或需要很長的安裝時間,則可能會影響到 Spark 執行個體啟動時間。
- 不支援更改 PySpark、Python、Scala/Java、.NET 或 Spark 版本。
- 不支援 Docker 映像。
改善使用工作階段層級 Conda 套件時的工作階段冷啟動時間
您可以將 spark.hadoop.aml.enable_cache
設定變數設定為 true
,以改善 Spark 工作階段冷啟動時間。 使用工作階段層級 Conda 套件時,工作階段在第一次啟動時的工作階段冷啟動通常需要 10 到 15 分鐘。 不過,後續工作階段「冷啟動」只需三到五分鐘。 在 [設定工作階段] 使用者介面的 [組態設定] 下,定莪組態變數。
連結的 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 集區,且該工作區具有相關聯的受控虛擬網路,請設定儲存體帳戶的受控私人端點。 此設定將協助確保資料存取。