共用方式為


Azure Synapse Analytics 中的 Apache Spark 核心概念

Apache Spark 是一個平行處理架構,可支援記憶體內部處理,以大幅提升巨量資料分析應用程式的效能。 Azure Synapse Analytics 中的 Apache Spark 是 Microsoft 在雲端中的其中一種 Apache Spark 實作。

Azure Synapse 可讓您輕鬆地在 Azure 中建立和設定 Spark 功能。 Azure Synapse 會提供此處所述 Spark 功能的不同執行方式。

Spark 集區

無伺服器 Apache Spark 集區會建立在 Azure 入口網站中。 其定義是,當 Spark 集區具現化時,會用來建立可處理資料的 Spark 執行個體。 建立 Spark 集區時,其只會以中繼資料的形式存在,而且不會耗用或執行任何資源,或向您收取資源費用。 Spark 集區具有一系列的屬性,可控制 Spark 執行個體的特性。 這些特性包括但不限於名稱、大小、調整行為、存留時間。

由於建立 Spark 集區沒有相關聯的費用或資源成本,因此可以使用任意數目的不同設定來建立任何數量的集區。 您也可以對 Spark 集區套用權限,讓使用者只能存取部分集區,而不能存取其他集區。

最佳做法是建立較小的 Spark 集區來進行開發和偵錯,然後建立更大的集區來執行生產工作負載。

您可以在這裡了解如何建立 Spark 集區並查看其所有屬性:開始使用 Azure Synapse Analytics 中的 Spark 集區

Spark 執行個體

當您連線到 Spark 集區、建立工作階段及執行作業時,Spark 執行個體會隨即建立。 因為有多個使用者可存取單一 Spark 集區,所以會為每個連線的使用者建立新的 Spark 執行個體。

當您提交第二個作業時,如果集區中有容量,則現有的 Spark 執行個體也會有容量。 然後,現有的執行個體會處理作業。 否則,如果集區層級有可用的容量,則會建立新的 Spark 執行個體。

當 Azure VM 啟動時,執行個體的計費就會開始。 當集區執行個體變更為終止時,Spark 集區執行個體的計費就會停止。 如需如何啟動和解除配置 Azure VM 的詳細資訊,請參閱 Azure 虛擬機器的狀態和計費狀態

範例

範例 1

  • 您會建立名為 SP1 的 Spark 集區;其叢集大小固定為 20 個中型節點
  • 您會提交使用 10 個節點的筆記本作業 J1,此時會建立一個 Spark 執行個體 SI1 來處理作業
  • 您現在會提交另一個使用 10 個節點的作業 J2,因為集區中仍然有容量,而該執行個體 (J2) 會由 SI1 處理
  • 如果 J2 要求 11 個節點,則 SP1 或 SI1 中沒有容量。 在此情況下,如果 J2 來自筆記本,則作業會遭到拒絕;如果 J2 來自批次作業,則會將其排入佇列。
  • 計費會從提交筆記本作業 J1 開始。
    • Spark 集區會使用 20 個中型節點具現化,每個節點都有 8 個 V 核心,通常需要大約 3 分鐘的時間才能啟動。 20 x 8 = 160 個 V 核心。
    • 視確切的 Spark 集區啟動時間、閒置逾時和兩個筆記本作業的執行階段而定;集區可能會執行 18 到 20 分鐘 (Spark 集區具現化時間 + 筆記本作業執行階段 + 閒置逾時)。
    • 假設為 20 分鐘的執行階段,160 x 0.3 小時 = 48 V 核心時數。
    • 注意:V 核心時數會按分鐘計費,而 V 核心定價會因 Azure 區域而異。 如需詳細資訊,請參閱 Azure Synapse Analytics 定價

範例 2

  • 您建立 Spark 集區呼叫 SP2;它已啟用自動調整,至少 10 到最多 20 個中型節點
  • 您會提交使用 10 個節點的筆記本作業 J1,此時會建立一個 Spark 執行個體 SI1 來處理作業
  • 您現在會提交另一個使用 10 個節點的作業 J2,因為集區中仍然有容量,而該執行個體會自動調整為 20 個節點,並且處理 J2。
  • 計費會從提交筆記本作業 J1 開始。
    • Spark 集區會使用 10 個中型節點具現化,每個節點都有 8 個 V 核心,通常需要大約 3 分鐘的時間才能啟動。 10 x 8,80 個 V 核心。
    • 在 J2 提交時,集區會自動調整,方法是新增另外 10 個中型節點,且通常需要 4 分鐘的時間自動調整。 針對總共 160 個 V 核心新增 10 x 8,80 個 V 核心。
    • 根據 Spark 集區啟動時間、第一個筆記本作業 J1 的執行階段、擴大集區的時間、第二個筆記本的執行階段,最後是閒置逾時;集區可能會執行 22 到 24 分鐘 (Spark 集區具現化時間 + J1 筆記本作業執行階段全部在 80 個 V 核心) + (Spark 集區自動調整可用時間 + J2 筆記本作業執行階段 + 閒置逾時全部在 160 個 V 核心)。
    • 80 個 V 核心 4 分鐘 + 160 個 V 核心 20 分鐘 = 58.67 個 V 核心時數。
    • 注意:V 核心時數會按分鐘計費,而 V 核心定價會因 Azure 區域而異。 如需詳細資訊,請參閱 Azure Synapse Analytics 定價

範例 3

  • 您會建立名為 SP1 的 Spark 集區;其叢集大小固定為 20 個節點。
  • 您會提交使用 10 個節點的筆記本作業 J1,此時會建立一個 Spark 執行個體 SI1 來處理作業。
  • 另一個使用者 U2 會提交一個使用 10 個節點的作業 J3,此時會建立新的 Spark 執行個體 SI2 來處理作業。
  • 您現在會提交另一個使用 10 個節點的作業 J2,因為集區中仍然有容量,而執行個體 J2 會由 SI1 處理。
  • 計費從提交筆記本作業 J1 開始。
    • Spark 集區 SI1 會使用 20 個中型節點具現化,每個節點都有 8 個 V 核心,通常需要大約 3 分鐘的時間才能啟動。 20 x 8,160 個 V 核心。
    • 視確切的 Spark 集區啟動時間、閒置逾時第一和第三個筆記本作業的執行階段而定;SI1 集區可能會執行 18 到 20 分鐘 (Spark 集區具現化時間 + 筆記本作業執行階段 + 閒置逾時)。
    • 另一個 Spark 集區 SI2 會使用 20 個中型節點具現化,每個節點都有 8 個 V 核心,通常需要大約 3 分鐘的時間才能啟動。 20 x 8,160 個 V 核心
    • 視確切的 Spark 集區啟動時間、閒置逾時和第一個筆記本作業的執行階段而定;SI2 集區可能會執行 18 到 20 分鐘 (Spark 集區具現化時間 + 筆記本作業執行階段 + 閒置逾時)。
    • 假設兩個集區各執行 20 分鐘,160 x .03 x 2 = 96 個 V 核心時數。
    • 注意:V 核心時數會按分鐘計費,而 V 核心定價會因 Azure 區域而異。 如需詳細資訊,請參閱 Azure Synapse Analytics 定價

適用於 Azure Synapse 的 Apache Spark 中的配額和資源條件約束

工作區層級

每個 Azure Synapse 工作區都有一個預設的虛擬核心配額,可用於 Spark。 配額會分割為使用者配額和資料流程配額,因此這兩種使用模式都不會用盡工作區中的所有虛擬核心。 配額會根據您的訂用帳戶類型而有所不同,但在使用者和資料流程之間的數量是相同的。 不過,如果您要求的 V 核心超過工作區中剩餘的數目,則會收到下列錯誤:

Failed to start session: [User] MAXIMUM_WORKSPACE_CAPACITY_EXCEEDED
Your Spark job requested 480 vCores.
However, the workspace only has xxx vCores available out of quota of yyy vCores.
Try reducing the numbers of vCores requested or increasing your vCore quota. Click here for more information - https://go.microsoft.com/fwlink/?linkid=213499

訊息中的連結會指向這篇文章。

下列文章說明如何要求增加工作區的虛擬核心配額。

  • 選取 "Azure Synapse Analytics" 作為服務類型。
  • 在配額詳細資料視窗中,為每個工作區選取 Apache Spark (虛擬核心)

透過 Azure 入口網站要求增加容量

Spark 集區層級

定義 Spark 集區時,您可以有效地為該集區的每個使用者定義配額,如果您執行多個筆記本或作業,或 2 者混合,則可能會耗盡集區配額。 如果您這麼做,則會產生錯誤訊息

Failed to start session: Your Spark job requested xx vCores.
However, the pool is consuming yy vCores out of available zz vCores.Try ending the running job(s) in the pool, reducing the numbers of vCores requested, increasing the pool maximum size or using another pool

若要解決此問題,您將必須先減少使用集區資源,然後再執行筆記本或作業來提交新的資源要求。

下一步