分享方式:


自動調整 HDInsight on AKS 叢集

注意

AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。

在淘汰日期之前,只有基本支援可用。

重要

此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 Azure HDInsight on AKS 預覽版資訊。 如有問題或功能建議,請在 AskHDInsight 上提交要求並附上詳細資料,並且在 Azure HDInsight 社群上追蹤我們以獲得更多更新資訊。

調整任何叢集的大小以符合作業效能及提前管理成本,總是很棘手,也很難決定! 透過雲端建置 Data Lake House 的其中一個有利優點是其彈性,這意味著使用自動調整功能將手邊的資源使用率最大化。 使用 Kubernetes 自動調整是建立成本最佳化生態系統的關鍵之一。 由於每個企業都有不同的使用模式,叢集負載可能會隨著時間而變化,導致叢集佈建不足 (效能不佳) 或過度佈建 (閒置資源造成不必要的成本)。

HDInsight on AKS 中提供的自動調整功能可以自動增加或減少叢集中的背景工作角色節點數目。 自動調整會使用客戶所使用的叢集計量和調整原則。

此功能非常適合任務關鍵性工作負載,這些工作負載可能具有

  • 可變動或無法預測的流量模式,且需要高效能與縮放方面的 SLA,或者
  • 必要背景工作角色節點的預先決定排程,可供在叢集上順利執行作業。

自動調整 HDInsight on AKS 叢集可以讓叢集在 Azure 上具有成本效益和彈性。

透過自動調整,客戶可以縮小叢集而不會影響工作負載。 它已啟用進階功能,例如正常解除委任和冷卻期間。 這些功能可讓使用者根據叢集目前的負載,針對新增和移除節點做出明智的選擇。

運作方式

此功能的運作方式是根據叢集計量或已定義的擴大和縮小作業排程,調整預設限制中的節點數目。 觸發自動調整事件的條件有兩種類型:針對各種叢集效能計量的閾值型觸發程序 (稱為負載型調整) 以及以時間為基礎的觸發程序 (稱為排程型調整)。

負載型調整會變更叢集中您所設定範圍內的節點數目,確保達到最佳的 CPU 使用量,並將執行成本降到最低。

排程型調整會根據擴大和縮小作業的排程,變更叢集中的節點數目。

注意

自動調整不支援變更現有叢集的 SKU 類型。

叢集相容性

下表描述與自動調整功能相容的叢集類型,以及可用或規劃中的類型。

工作負載 負載型 排程型
Flink 計劃 Yes
Trino 是** 是**
Spark 是** 是**

**可設定正常解除委任。

調整方法

  • 排程型調整

    • 當您的工作預計會按照固定排程執行,而且會持續一段可預測的時間,或當您預計一天中特定時間內的使用量偏低時,例如下班後、結束一日工作時的測試和開發環境。

      此螢幕擷取畫面顯示如何選取以排程為基礎的調整。

  • 負載型調整

    • 當負載模式在白天大幅波動且無法預測時,例如,基於各種因素,在負載模式中隨機波動的訂單資料處理。

      此螢幕擷取畫面顯示如何選取以負載為基礎的調整。

      現在您可以透過新的設定調整規則選項,自訂調整規則。

      此螢幕擷取畫面顯示如何在以負載為基礎的調整中設定調整規則。

      此螢幕擷取畫面顯示如何針對以負載為基礎的調整,在設定調整規則中新增規則。

      提示

      • 觸發一或多個規則時,擴大規則會優先。 即使只有其中一個擴大規則顯示叢集佈建不足,叢集也會嘗試擴大。 若要縮小,則不應觸發擴大規則。

以負載為基礎的調整條件

當偵測到下列情況時,自動調整會發出調整要求

擴大 縮小
5 分鐘輪詢間隔 (1 分鐘檢查期間) 的已配置核心大於 80% 5 分鐘輪詢間隔 (1 分鐘檢查期間) 的已配置核心小於或等於 20%
  • 若需擴大,自動調整會發出擴大要求,新增所需的節點數目。 擴大的基準在於需要多少新的背景工作角色節點,才符合目前 CPU 和記憶體的需求。 此值上限為已設定的背景工作角色節點數目上限。

  • 針對縮小,自動調整會發出移除某些節點的要求。 縮小的考量包括每個節點的 Pod 數目、目前的 CPU 和記憶體需求,以及背景工作角色節點,這些節點是根據目前作業執行而移除的候選項目。 相應減少作業會先解除委任節點,然後從叢集中移除它們。

    重要

    自動調整規則引擎會每隔 30 分鐘主動排清舊事件,以將系統記憶體最佳化。 因此,在調整規則間隔方面有 30 分鐘的上限限制。 為了確保調整動作的觸發一致且可靠,您必須將調整規則間隔設定為小於上限的值。 藉由遵守此指導方針,您可以保證一個順暢且有效率的調整流程,同時有效地管理系統資源。

叢集計量

自動調整會持續監視叢集,並收集下列負載型自動調整的計量:

可用於調整用途的叢集計量

計量 描述
可用的核心百分比 叢集中可用的核心總數占叢集中核心總數的比例。
可用的記憶體百分比 叢集中可用的記憶體總量 (以 MB 為單位) 占叢集中記憶體總量的比例。
已配置的核心百分比 叢集中已配置的核心總數占叢集中核心總數的比例。
已配置的記憶體百分比 叢集中已配置的記憶體總量占叢集中記憶體總量的比例。

根據預設,每 300 秒會檢查上述計量,當您使用自訂自動調整選項自訂輪詢間隔時,也可以加以設定。 自動調整會根據這些計量來決定要擴大或縮小。

注意

根據預設,自動調整會針對適用於 Apache Spark 的 YARN 使用預設的資源計算機。 負載型調整適用於 Apache Spark 叢集。

正常解除委任

企業需要有方法透過自動調整達到 PB 規模,並且在不再需要資源時正常解除委任資源。 在這類情節中,正常解除委任的功能就很方便。

即使在自動調整已觸發背景工作角色節點解除委任之後,正常解除委任也可讓作業完成。 此功能可讓節點繼續佈建,直到作業完成為止。

  • Trino:根據預設,背景工作角色已啟用 [正常解除委任]。 協調器可讓終止的背景工作角色在設定的時間內完成其任務,再從叢集中移除該背景工作角色。 您可以使用原生 Trino 參數 shutdown.grace-period 或在 Azure 入口網站服務設定頁面上設定逾時。

  • Apache Spark:縮小可能會影響/停止叢集中任何執行中的作業。 若您在 Azure 入口網站上啟用正常解除委任設定,它會納入 YARN 節點的正常解除委任,並確保背景工作角色節點上正在進行的任何工作都已完成,再從 HDInsight on AKS 叢集中移除節點。

冷卻期間

為了避免持續進行擴大作業,自動調整引擎會先等待一段可設定的間隔,再開始進行另一組擴大作業。 預設值設定為 180 秒

注意

  • 在自訂調整規則中,任何規則觸發程序都不能有大於 30 分鐘的觸發程序間隔。 發生自動調整事件之後,在強制執行另一個調整原則之前等待的時間量。
  • 冷卻期間應該大於原則間隔,以便叢集計量可以重設。

開始使用

  1. 若要讓自動調整進行運作,您必須使用左窗格中的 IAM,在叢集層級將 [擁有者] 或 [參與者] 權限指派給 MSI (在叢集建立期間使用)。

  2. 請參閱下列圖例以及如何新增角色指派的步驟

    此螢幕擷取畫面顯示如何新增角色指派。

  3. 選取 [新增角色指派]

    1. 指派類型:特殊權限系統管理員角色
    2. 角色:[擁有者] 或 [參與者]
    3. 成員:選擇 [受控識別],然後選取在叢集建立階段提供的 [使用者指派的受控識別]
    4. 指派角色。

建立排程型自動調整的叢集

  1. 建立叢集集區之後,使用所需的工作負載建立新叢集 (在叢集類型上),然後完成一般叢集建立流程中的其他步驟。

  2. 在 [設定] 索引標籤上,啟用 [自動調整] 切換。

  3. 選取 [排程型] 自動調整

  4. 選取您的時區,然後按一下 [+ 新增規則]

  5. 選取新條件應套用的工作日。

  6. 編輯條件應生效的時間,及叢集應調整的節點數目。

    此螢幕擷取畫面顯示如何開始使用以排程為基礎的自動調整。

    注意

    • 使用者應該在叢集 MSI 上擁有 [擁有者] 或 [參與者] 角色,才能讓自動調整發揮作用。
    • 預設值會在建立叢集時,定義叢集的初始大小。
    • 兩個排程之間的差異預設為 30 分鐘。
    • 時間值遵循 24 小時格式
    • 如果連續的時段跨天超過 24 小時,您需要設定跨天自動縮放排程,而自動縮放會假設 23:59 為 00:00 (具有相同節點計數) 跨越兩天,從 22:00 到 23:59、00:00 到 02:00 作為 22:00 到 02:00。
    • 排程會預設以國際標準時間 (UTC) 來設定。 您始終可以在可用的下拉式清單中,更新與當地時區相對應的時區。 當您位於遵守日光節約時間的時區時,排程不會自動調整,您必須相應地管理排程更新。

建立負載型自動調整的叢集

  1. 建立叢集集區之後,使用所需的工作負載建立新叢集 (在叢集類型上),然後完成一般叢集建立流程中的其他步驟。

  2. 在 [設定] 索引標籤上,啟用 [自動調整] 切換。

  3. 選取 [負載型] 自動調整

  4. 根據工作負載類型,您可以選擇新增 [正常解除委任逾時]、[冷卻期間]

  5. 選取最小最大節點,並在必要時,視需要 [設定調整規則] 以自訂自動調整。

    此螢幕擷取畫面顯示如何開始使用以負載為基礎的自動調整。

    提示

    • 您的訂用帳戶擁有每個區域的容量配額。 前端節點的核心總數與背景工作角色節點的最大數目,不能超過容量配額。 但是這個配額是軟性限制;您一律可以建立支援票證,輕鬆增加配額。
    • 如果您超過總核心配額限制,您會收到錯誤訊息,指出 The maximum node count you can select is {maxCount} due to the remaining quota in the selected subscription ({remaining} cores)
    • 觸發一或多個規則時,擴大規則會優先。 即使只有其中一個擴大規則顯示叢集佈建不足,叢集也會嘗試擴大。 若要縮小,則不應觸發擴大規則。
    • 在公開預覽中,HDInsight on AKS 可支援叢集中最多 500 個節點。

使用 Resource Manager 範本建立叢集

排程型自動調整

您可以使用 Azure Resource Manager 範本建立排程型自動調整的 HDInsight on AKS 叢集,方法是將自動調整新增至 [clusterProfile] -> [autoscaleProfile] 區段。

自動調整節點包含一個具有時區和排程 (用於描述變更發生時間) 的週期。 若需完整的 Resource Manager 範本,請參閱範例 JSON

{
  "autoscaleProfile": {
    "enabled": true,
    "autoscaleType": "ScheduleBased",
    "gracefulDecommissionTimeout": 60,
    "scheduleBasedConfig": {
      "schedules": [
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday"
          ],
          "startTime": "09:00",
          "endTime": "10:00",
          "count": 2
        },
        {
          "days": [
            "Sunday",
            "Saturday"
          ],
          "startTime": "12:00",
          "endTime": "22:00",
          "count": 5
        },
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "startTime": "22:00",
          "endTime": "23:59",
          "count": 6
        },
        {
          "days": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "startTime": "00:00",
          "endTime": "05:00",
          "count": 6
        }
      ],
      "timeZone": "UTC",
      "defaultCount": 110
    }
  }
}

提示

  • 您必須使用 ARM 部署來設定不衝突的排程,以避免調整作業失敗。

負載型自動調整

您可以使用 Azure Resource Manager 範本建立負載型自動調整的 HDInsight on AKS 叢集,方法是將自動調整新增至 [clusterProfile] -> [autoscaleProfile] 區段。

自動調整節點包含

  • 輪詢間隔、冷卻期間、
  • 正常解除委任、
  • 最小和最大節點、
  • 標準閾值規則、
  • 描述變更發生時間的調整計量。

若需完整的 Resource Manager 範本,請參閱範例 JSON,如下所示

  {
  "autoscaleProfile": {
    "enabled": true,
    "autoscaleType": "LoadBased",
    "gracefulDecommissionTimeout": 60,
    "loadBasedConfig": {
      "minNodes": 2,
      "maxNodes": 157,
      "pollInterval": 300,
      "cooldownPeriod": 180,
      "scalingRules": [
        {
          "actionType": "scaleup",
          "comparisonRule": {
            "threshold": 80,
            "operator": " greaterThanOrEqual"
          },
          "evaluationCount": 1,
          "scalingMetric": "allocatedCoresPercentage"
        },
        {
          "actionType": "scaledown",
          "comparisonRule": {
            "threshold": 20,
            "operator": " lessThanOrEqual"
          },
          "evaluationCount": 1,
          "scalingMetric": "allocatedCoresPercentage"
        }
      ]
    }
  }
}

使用 REST API

若要使用 REST API 在執行中的叢集上啟用或停用自動調整,請向自動調整端點提出 PATCH 要求:https://management.azure.com/subscriptions/{{USER_SUB}}/resourceGroups/{{USER_RG}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSTER_POOL_NAME}}/clusters/{{CLUSTER_NAME}}?api-version={{HILO_API_VERSION}}

  • 在要求承載中使用適當的參數。 JSON 承載可用來啟用自動調整。
  • 使用承載 (autoscaleProfile: null) 或使用旗標 (enabled, false) 來停用自動調整。
  • 如需參考,請參閱上述步驟中所述的 JSON 範例。

暫停執行中叢集的自動調整

我們已在自動調整中引進暫停功能。 現在,您可以使用 Azure 入口網站在執行中的叢集上暫停自動調整。 下圖說明如何選取暫停及繼續自動調整

此螢幕擷取畫面顯示如何暫停自動調整。

一旦想要繼續進行自動調整作業,就可以繼續。

此螢幕擷取畫面顯示如何繼續自動調整。

提示

當您設定多個排程並暫停自動調整時,它不會觸發下一個排程。 即使節點處於已解除委任的狀態,節點計數仍維持不變。

複製自動調整設定

現在,您可以使用 Azure 入口網站跨叢集集區複製相同叢集圖形的相同自動調整設定,並使用此功能匯入或匯出相同的設定。

顯示如何從自動調整匯出或匯入設定的螢幕擷取畫面。

監視自動調整活動

叢集狀態

Azure 入口網站中列出的叢集狀態可協助您監視自動調整活動。 您可能會看到的所有叢集狀態訊息都會在清單中說明。

叢集狀態 描述
成功 叢集正常執行。 所有之前的自動調整活動都已順利完成。
已接受 已接受叢集作業 (例如:擴大),等待作業完成。
失敗 這表示目前的作業因為某些原因而失敗,叢集可能無法運作。
已取消 目前的作業已取消。

顯示叢集狀態的螢幕擷取畫面。

若要檢視叢集中目前的節點數目,請移至叢集 [概觀] 頁面上的 [叢集大小] 圖表。

顯示叢集大小的螢幕擷取畫面。

作業記錄

您可以檢視叢集計量包含的叢集擴大和縮小記錄。 您也可以列出過去一天、一週或其他期間所有的調整動作。

此螢幕擷取畫面顯示叢集在活動記錄上的作業歷程記錄。

其他資源

手動調整 - Azure HDInsight on AKS (部分機器翻譯)