自動調整 Azure Synapse Analytics Apache Spark 集區

適用於 Azure Synapse Analytics 的 Apache Spark 集區自動調整功能會自動擴大和縮小叢集執行個體中的節點數目。 在為 Azure Synapse Analytics 集區建立新的 Apache Spark 期間,選取 [自動調整] 時,可以設定最多 200 個節點的最小和最大節點數目。 接著自動調整就會監視負載的資源需求,然後擴大或縮小節點數目。 這項功能不需額外付費。

計量監視

自動調整會持續監視 Spark 執行個體,並收集下列計量:

計量 描述
擱置的 CPU 總計 開始執行所有暫止作業所需的核心總數。
擱置的記憶體總計 開始執行所有擱置中作業所需的記憶體總計 (以 MB 為單位)。
可用的 CPU 總計 使用中節點上所有未使用的核心總和。
可用的記憶體總計 使用中節點上未使用的記憶體總和 (以 MB 為單位)。
每個節點的已使用記憶體 節點上的負載。 已使用 10 GB 記憶體的節點會被視為,所承受的負載高於已使用 2 GB 記憶體的背景工作角色。

上述計量每 30 秒會檢查一次。 自動調整會根據這些計量做出相應增加和相應減少決策。

負載型調整條件

偵測到下列條件時,自動調整將會發出調整要求:

擴大 縮小
擱置的 CPU 總計大於可用的 CPU 總計超過 1 分鐘。 擱置的 CPU 總計小於可用的 CPU 總計超過 2 分鐘。
擱置的記憶體總計大於可用記憶體總計超過 1 分鐘。 擱置的記憶體總計小於可用記憶體總計超過 2 分鐘。

針對相應增加,Azure Synapse 自動調整服務會計算符合目前 CPU 和記憶體需求所需的新節點數目,然後發出相應增加要求以新增所需的節點數目。

針對相應減少,根據執行程式數目、每個節點的應用程式主機、目前的CPU和記憶體需求,自動調整會發出要求來移除特定數目的節點。 服務也會根據目前的作業執行,偵測哪些節點是移除的候選節點。 相應減少作業會先解除委任節點,然後從叢集中移除它們。

注意

關於更新和強制將自動調整設定套用至現有 Spark 集區的附註。 如果啟用 Azure 入口網站 或 ForceApplySetting PowerShell 中的強制新設定,則會終止所有現有的 Spark 工作階段,並立即套用設定變更。 如果未選取此選項,則組態會套用至新的Spark會話,而且不會終止現有的會話。

開始使用

建立具有自動調整的無伺服器 Apache Spark 集區

若要啟用自動調整功能,請在一般集區的建立過程中完成下列步驟:

  1. 在 [基本] 索引標籤上,選取 [啟用自動調整] 核取方塊。

  2. 輸入下列屬性所需的值:

    • 節點數目下限
    • 節點數目上限

節點的初始數目將會是最小值。 此值會在建立執行個體時定義該執行個體的初始大小。 節點數目下限不能少於三個。

您可以選擇性地在執行程式需求在Spark作業的各個階段之間大不相同,或處理的數據量隨著時間變動而變動的情況下,啟用執行程式的動態配置。 藉由啟用執行程序動態配置,我們可以視需要利用容量。

在啟用動態配置時,它可讓作業在指定的執行程式數目下限和最大數目來調整執行程式數目。

Apache Spark 透過程式代碼啟用動態配置執行程式設定,如下所示:

    %%configure -f
    {
        "conf" : {
            "spark.dynamicAllocation.maxExecutors" : "6",
            "spark.dynamicAllocation.enabled": "true",
            "spark.dynamicAllocation.minExecutors": "2"
     }
    }

透過程式代碼指定的預設值會覆寫透過使用者介面設定的值。

在此範例中,如果您的作業只需要 2 個執行程式,它只會使用 2 個執行程式。 當作業需要更多時,它會相應增加至 6 個執行程式(1 個驅動程式、6 個執行程式)。 當作業不需要執行程式時,它會將執行程式解除委任。 如果不需要節點,則會釋放節點。

注意

maxExecutors 會保留已設定的執行程序數目。 請考慮此範例,即使您只使用 2,也會保留 6。

因此,在啟用動態配置時,執行程式會根據執行程式使用率相應增加或減少。 這可確保執行程式會根據執行中作業的需求布建。

最佳作法

請考慮相應增加或相應減少作業的延遲

調整作業可能需要 1 到 5 分鐘才能完成。

準備相應減少

在實例相應減少程式期間,自動調整會將節點置於解除委任狀態,讓任何新的執行程式都無法在該節點上啟動。

執行中的作業將會繼續執行並完成。 擱置中的作業會隨著可用節點減少而等待依正常方式排程。

注意

根據預設,spark.yarn.executor.decommission.enabled 會設定為 true,讓使用量過低的節點自動關閉,以將計算效率優化。 如果偏好較不積極的相應減少,此設定可以設定為 false。

下一步

設定新的Spark集 區建立Spark集區的快速入門