Share via


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集區來執行生產工作負載。

您可以閱讀如何建立 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 個虛擬核心,通常需要大約 3 分鐘的時間才能啟動。 20 x 8 = 160 個虛擬核心。
    • 視確切的 Spark 集區啟動時間、閑置逾時和兩個筆記本作業的運行時間而定;集區可能會執行 18 到 20 分鐘(Spark 集區具現化時間 + 筆記本作業運行時間 + 閒置逾時)。
    • 假設 20 分鐘的運行時間,160 x 0.3 小時 = 48 虛擬核心時數。
    • 注意:虛擬核心時數會按分鐘計費,而虛擬核心定價會因 Azure 區域而異。 如需詳細資訊,請參閱 Azure Synapse 定價

範例 2

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

範例 3

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

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

工作區層級

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

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

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

下一步