Freigeben über


Autoskalierung von Azure HDInsight on AKS-Clustern

Wichtig

Diese Funktion steht derzeit als Vorschau zur Verfügung. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen enthalten weitere rechtliche Bestimmungen, die für Azure-Features in Betaversionen, in Vorschauversionen oder anderen Versionen gelten, die noch nicht allgemein verfügbar gemacht wurden. Informationen zu dieser spezifischen Vorschau finden Sie unter Informationen zur Vorschau von Azure HDInsight on AKS. Bei Fragen oder Funktionsvorschlägen senden Sie eine Anfrage an AskHDInsight mit den entsprechenden Details, und folgen Sie uns für weitere Updates in der Azure HDInsight-Community.

Die Dimensionierung eines Clusters, um die Anforderungen an die Auftragsleistung zu erfüllen und die Kosten im Voraus zu verwalten, ist immer schwierig. Einer der lukrativen Vorteile der Erstellung eines Data Lakehouse über die Cloud ist seine Elastizität, d. h. das Feature „Autoskalierung“ wird verwendet, um die Nutzung der verfügbaren Ressourcen zu maximieren. Die Autoskalierung mit Kubernetes ist ein Schlüssel zur Schaffung eines kostenoptimierten Ökosystems. Da die Nutzungsmuster in jedem Unternehmen variieren, kann auch die Clusterlast im Laufe der Zeit schwanken. Dies kann dazu führen, dass Cluster unterdimensioniert (schlechte Leistung) oder überdimensioniert (unnötige Kosten aufgrund von Ressourcen im Leerlauf) werden.

Mit dem Feature „Autoskalierung“ von HDInsight on AKS können Sie die Anzahl der Workerknoten in Ihrem Cluster automatisch erhöhen oder verringern. Die Autoskalierung verwendet die Clustermetriken und die Skalierungsrichtlinie der Kund*innen.

Dieses Feature eignet sich gut für unternehmenskritische Workloads, auf die Folgendes zutrifft:

  • Variable oder unvorhersehbare Datenverkehrsmuster und Notwendigkeit von SLAs für hohe Leistung und Skalierung oder
  • Notwendigkeit eines vordefinierten Zeitplans, damit die erforderlichen Workerknoten zum erfolgreichen Ausführen der Aufträge auf dem Cluster verfügbar sind

Die Autoskalierung von HDInsight on AKS-Clustern ermöglicht die Bereitstellung kosteneffizienter und elastischer Cluster in Azure.

Mit der Autoskalierung können Kund*innen Cluster herunterskalieren, ohne dass sich dies auf Workloads auswirkt. Sie bietet zudem erweiterte Funktionen wie ordnungsgemäße Außerbetriebnahme und Abkühlphase. Mit diesen Funktionen können Benutzer*innen basierend auf der aktuellen Clusterlast fundierte Entscheidungen zum Hinzufügen und Entfernen von Knoten treffen.

Funktionsweise

Das Feature skaliert die Anzahl von Knoten innerhalb vorgegebener Grenzwerte – entweder auf der Grundlage von Clustermetriken oder nach einem definierten Zeitplan mit Vorgängen zum Hoch- und Herunterskalieren. Zum Auslösen von Autoskalierungsereignissen werden zwei Arten von Bedingungen verwendet: schwellenwertbasierte Trigger für verschiedene Clusterleistungsmetriken (lastbasierte Skalierung) und zeitbasierte Trigger (zeitplanbasierte Skalierung).

Die lastbasierte Skalierung ändert die Anzahl der Knoten in Ihrem Cluster innerhalb eines von Ihnen festgelegten Bereichs, um eine optimale CPU-Auslastung zu gewährleisten und die Betriebskosten zu minimieren.

Bei der zeitplanbasierten Skalierung wird die Anzahl von Knoten in Ihrem Cluster auf der Grundlage eines Zeitplans mit Vorgängen zum Hoch- und Herunterskalieren geändert.

Hinweis

Das Ändern des SKU-Typs eines vorhandenen Clusters wird von der Autoskalierung nicht unterstützt.

Clusterkompatibilität

Die folgende Tabelle beschreibt die Clustertypen, die mit dem Feature „Autoskalierung“ kompatibel sind, und deren Triggertyp.

Workload Lastbasiert Zeitplanbasiert
Flink Geplant Ja
Trino Ja** Ja**
Spark Ja** Ja**

**Ordnungsgemäße Außerbetriebnahme kann konfiguriert werden.

Skalierungsmethoden

  • Zeitplanbasierte Skalierung:

    • Wenn Ihre Aufträge nach festen Zeitplänen und für eine vorhersagbare Dauer ausgeführt werden sollen oder Sie eine geringe Auslastung zu bestimmten Tageszeiten erwarten, z. B. Test- und Entwicklungsumgebungen nach Büroschluss am Tagesende.

      Screenshot: Auswahl der zeitplanbasierten Skalierung

  • Lastbasierte Skalierung:

    • Wenn die Lastmuster im Laufe des Tages erheblich und unvorhersehbar schwanken, z. B. Verarbeitung von Bestelldaten mit zufälligen Schwankungen in den Lastmustern basierend auf verschiedenen Faktoren.

      Screenshot: Auswahl der lastbasierten Skalierung

      Mit der neuen Option zum Konfigurieren von Skalierungsregeln können Sie jetzt die Skalierungsregeln anpassen.

      Screenshot: Skalierung einer Skalierungsregel für die lastbasierte Skalierung

      Screenshot: Hinzufügen von Regeln beim Konfigurieren von Skalierungsregeln für die lastbasierte Skalierung

      Tipp

      • Regeln für das Hochskalieren haben Vorrang, wenn eine oder mehrere Regeln ausgelöst werden. Selbst wenn nur eine der Regeln für das Hochskalieren darauf hinweist, dass der Cluster unterdimensioniert ist, versucht der Cluster, eine Hochskalierung vorzunehmen. Eine Herunterskalierung erfolgt nur, wenn keine Skalierungsregel ausgelöst wird.

Lastbasierte Skalierungsbedingungen

Wenn die folgenden Bedingungen erkannt werden, gibt die Autoskalierung eine Skalierungsanforderung aus.

Zentrales Hochskalieren Zentrales Herunterskalieren
Die Größe der zugeordneten Kerne ist für ein Abrufintervall von 5 Minuten größer als 80 % (Prüfungszeitraum von 1 Minute). Die Größe der zugeordneten Kerne ist für ein Abrufintervall von 5 Minuten kleiner oder gleich 20 % (Prüfungszeitraum von 1 Minute).
  • Zum Hochskalieren gibt die Autoskalierung eine Anforderung aus, die erforderliche Anzahl von Knoten hinzuzufügen. Das zentrale Hochskalieren basiert auf der erforderlichen Anzahl von neuen Workerknoten zum Erfüllen der aktuellen CPU- und Arbeitsspeicheranforderungen. Dieser Wert ist auf die festgelegte Höchstzahl von Workerknoten begrenzt.

  • Zum Herunterskalieren gibt die Autoskalierung eine Anforderung zum Entfernen einiger Knoten aus. Beim Herunterskalieren werden die Anzahl der Pods pro Knoten, die aktuellen CPU- und Arbeitsspeicheranforderungen sowie die Workerknoten berücksichtigt, die basierend auf der aktuellen Auftragsausführung für die Entfernung in Frage kommen. Der Vorgang des Herunterskalierens deaktiviert zunächst die Knoten und entfernt sie dann aus dem Cluster.

    Wichtig

    Die Regel-Engine für die Autoskalierung löscht alte Ereignisse proaktiv alle 30 Minuten, um die Nutzung des Systemspeichers zu optimieren. Daher gilt für das Skalierungsregelintervall eine Obergrenze von 30 Minuten. Um die konsistente und zuverlässige Auslösung von Skalierungsaktionen sicherzustellen, muss das Skalierungsregelintervall auf einen Wert festgelegt werden, der kleiner als der Grenzwert ist. Wenn Sie sich an diese Richtlinie halten, können Sie einen reibungslosen und effizienten Skalierungsprozess garantieren und gleichzeitig die Systemressourcen effektiv verwalten.

Clustermetriken

Die Autoskalierung überwacht den Cluster kontinuierlich und sammelt die folgenden Metriken für die lastbasierte Autoskalierung:

Für Skalierungszwecke verfügbare Clustermetriken

Metrik Beschreibung
Verfügbare Kerne in Prozent Die Gesamtanzahl der verfügbaren Kerne im Cluster im Vergleich zur Gesamtanzahl der Kerne im Cluster.
Verfügbarer Arbeitsspeicher in Prozent Der gesamte verfügbare Arbeitsspeicher (in MB) im Cluster im Vergleich zur Gesamtmenge des Arbeitsspeichers im Cluster.
Zugeordnete Kerne in Prozent Die Gesamtanzahl der zugeordneten Kerne im Cluster im Vergleich zur Gesamtanzahl der Kerne im Cluster.
Zugeordneter Arbeitsspeicher in Prozent Der zugeordnete Arbeitsspeicher im Cluster im Vergleich zur Gesamtmenge des Arbeitsspeichers im Cluster.

Standardmäßig werden die obigen Metriken alle 300 Sekunden überprüft. Dieser Wert kann auch konfiguriert werden, wenn Sie das Abrufintervall mit der Option zum Anpassen der Autoskalierung anpassen. Die Autoskalierung trifft auf Basis dieser Metriken Entscheidungen zum Hoch- oder Herunterskalieren.

Hinweis

Standardmäßig verwendet die Autoskalierung den Standardressourcenrechner für YARN für Apache Spark. Die lastbasierte Skalierung ist für Apache Spark-Cluster verfügbar.

Ordnungsgemäßen Außerbetriebnahme

Unternehmen müssen in der Lage sein, eine Skalierung im Petabytebereich mit der Autoskalierung zu erreichen und Ressourcen ordnungsgemäß außer Betrieb zu nehmen, wenn sie nicht mehr benötigt werden. In einem solchen Szenario ist das Feature für die ordnungsgemäße Außerbetriebnahme hilfreich.

Die ordnungsgemäße Außerbetriebnahme ermöglicht das Abschließen von Aufträgen, auch wenn die Autoskalierung die Außerbetriebnahme der Workerknoten ausgelöst hat. Mit diesem Feature können Knoten weiterhin bereitgestellt werden, bis Aufträge abgeschlossen sind.

  • Trino: Für Worker ist die ordnungsgemäße Außerbetriebnahme standardmäßig aktiviert. Für die konfigurierte Zeitspanne erlaubt der Koordinator es dem zu beendenden Worker, seine Aufgaben abzuschließen, bevor er aus dem Cluster entfernt wird. Sie können das Timeout entweder mithilfe des nativen Trino-Parameters shutdown.grace-period oder auf der Seite zur Dienstkonfiguration im Azure-Portal konfigurieren.

  • Apache Spark: Das Herunterskalieren kann Auswirkungen auf ausgeführte Aufträge im Cluster haben bzw. diese beenden. Wenn Sie die Einstellungen für die ordnungsgemäße Außerbetriebnahme im Azure-Portal aktivieren, umfasst die Einstellung die ordnungsgemäße Außerbetriebnahme von YARN-Knoten, und es wird sichergestellt, dass alle laufenden Arbeiten auf einem Workerknoten abgeschlossen werden, bevor der Knoten aus dem HDInsight on AKS-Cluster entfernt wird.

Abkühlphase

Um fortlaufende Hochskalierungsvorgänge zu vermeiden, wartet die Engine für die Autoskalierung ein konfigurierbares Intervall ab, bevor sie weitere Hochskalierungsvorgänge initiiert. Der Standardwert beträgt 180 Sekunden.

Hinweis

  • In benutzerdefinierten Skalierungsregeln kann für keinen Regeltrigger ein Triggerintervall von mehr als 30 Minuten festgelegt werden. Dies ist die Wartezeit nach einem Autoskalierungsereignis, bevor eine andere Skalierungsrichtlinie erzwungen wird.
  • Der Abkühlphase sollte größer als das Richtlinienintervall sein, damit die Clustermetriken zurückgesetzt werden können.

Erste Schritte

  1. Damit die Autoskalierung funktioniert, müssen Sie der MSI (die während der Clustererstellung verwendet wird) die Berechtigung Besitzer oder Mitwirkender auf Clusterebene zuweisen, indem Sie im linken Bereich die Option „Zugriffssteuerung (IAM)“ verwenden.

  2. Der folgende Screenshot und die unten genannten Schritte zeigen, wie Sie eine Rollenzuweisung hinzufügen.

    Screenshot des Hinzufügens einer Rollenzuweisung

  3. Wählen Sie Rollenzuweisung hinzufügen aus.

    1. Zuweisungstyp: Privilegierte Administratorrollen
    2. Rolle: Besitzer oder Mitwirkender
    3. Mitglieder: Wählen Sie „Verwaltete Identität“ und dann die benutzerseitig zugewiesene verwaltete Identität aus, die während der Clustererstellung angegeben wurde.
    4. Weisen Sie die Rolle zu.

Erstellen eines Clusters mit zeitplanbasierter Autoskalierung

  1. Nachdem Ihr Clusterpool erstellt wurde, erstellen Sie einen neuen Cluster mit der gewünschten Workload (für den Clustertyp), und führen Sie die anderen Schritte des normalen Clustererstellungsprozesses aus.

  2. Aktivieren Sie auf der Registerkarte Konfiguration die Umschaltfläche Autoskalierung.

  3. Wählen Sie den Autoskalierungstyp Zeitplanbasiert aus.

  4. Wählen Sie Ihre Zeitzone und dann + Bedingung hinzufügen aus.

  5. Wählen Sie die Tage der Woche, an denen die neue Bedingung angewendet werden soll.

  6. Bearbeiten Sie die Zeit, zu der die Bedingung wirksam werden soll, und die Anzahl der Knoten, auf die der Cluster skaliert werden soll.

    Screenshot: Erste Schritte mit der zeitplanbasierten automatischen Skalierung

    Hinweis

    • Der*die Benutzer*in sollte über die Rolle „Besitzer“ oder „Mitwirkender“ für die Cluster-MSI verfügen, damit die Autoskalierung funktioniert.
    • Der Standardwert definiert die Anfangsgröße des Clusters bei der Erstellung.
    • Der Abstand zwischen zwei Zeitplänen ist standardmäßig auf 30 Minuten festgelegt.
    • Der Zeitwert folgt dem 24-Stunden-Format.
    • Im Fall eines fortlaufenden Zeitfensters von mehr als 24 Stunden über mehrere Tage hinweg müssen Sie den Zeitplan für die Autoskalierung über Tage hinweg festlegen. Die Autoskalierung interpretiert 23:59 als 00:00 (mit derselben Knotenanzahl) über eine Zeitspanne von zwei Tagen von 22:00 bis 23:59 und 00:00 bis 02:00 als 22:00 bis 02:00.
    • Die Zeitpläne werden standardmäßig in der koordinierten Weltzeit (Coordinated Universal Time, UTC) festgelegt. Sie können jederzeit auf die Zeitzone aktualisieren, die Ihrer lokalen Zeitzone in der verfügbaren Dropdownliste entspricht. Wenn Sie sich in einer Zeitzone mit Sommerzeit befinden, wird der Zeitplan nicht automatisch angepasst. Sie müssen die Zeitplanaktualisierungen entsprechend verwalten.

Erstellen eines Clusters mit lastbasierter Autoskalierung

  1. Nachdem Ihr Clusterpool erstellt wurde, erstellen Sie einen neuen Cluster mit der gewünschten Workload (für den Clustertyp), und führen Sie die anderen Schritte des normalen Clustererstellungsprozesses aus.

  2. Aktivieren Sie auf der Registerkarte Konfiguration die Umschaltfläche Autoskalierung.

  3. Wählen Sie den Autoskalierungstyp Lastbasiert aus.

  4. Je nach Workloadtyp stehen Ihnen Optionen zum Hinzufügen eines Timeouts für die ordnungsgemäße Außerbetriebnahme und einer Abkühlphase zur Verfügung.

  5. Wählen Sie die Mindestanzahl und Höchstanzahl von Knoten aus. Bei Bedarf konfigurieren Sie die Skalierungsregeln, um die Autoskalierung an Ihre Anforderungen anzupassen.

    Screenshot: Erste Schritte mit der lastbasierten automatischen Skalierung

    Tipp

    • Ihr Abonnement verfügt für jede Region über ein Kapazitätskontingent. Die Gesamtanzahl der Kerne Ihrer Hauptknoten und der maximalen Workerknoten darf das Kapazitätskontingent nicht überschreiten. Dieses Kontingent ist jedoch eine weiche Grenze. Sie können immer ein Supportticket erstellen, um es problemlos erhöhen zu lassen.
    • Wenn Sie die Kontingentgrenze für die Gesamtanzahl von Knoten überschreiten, wird die Fehlermeldung The maximum node count you can select is {maxCount} due to the remaining quota in the selected subscription ({remaining} cores) angezeigt.
    • Regeln für das Hochskalieren haben Vorrang, wenn eine oder mehrere Regeln ausgelöst werden. Selbst wenn nur eine der Regeln für das Hochskalieren darauf hinweist, dass der Cluster unterdimensioniert ist, versucht der Cluster, eine Hochskalierung vorzunehmen. Eine Herunterskalierung erfolgt nur, wenn keine Skalierungsregel ausgelöst wird.
    • In der Public Preview unterstützt HDInsight on AKS bis zu 500 Knoten in einem Cluster.

Erstellen eines Clusters mithilfe einer Resource Manager-Vorlage

Zeitplanbasierte Autoskalierung

Sie können einen HDInsight on AKS-Cluster mit zeitplanbasierter Autoskalierung mithilfe einer Azure Resource Manager-Vorlage (ARM) erstellen, indem Sie dem Abschnitt „clusterProfile -> autoscaleProfile“ eine Autoskalierung hinzufügen.

Der Autoskalierungsknoten enthält eine Serie mit einer Zeitzone und einem Zeitplan, der beschreibt, wann die Änderung stattfindet. Eine vollständige Resource Manager-Vorlage finden Sie im JSON-Beispielcode.

{
  "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
    }
  }
}

Tipp

  • Sie müssen nicht in Konflikt stehende Zeitpläne mit ARM-Bereitstellungen festlegen, um Fehler bei Skalierungsvorgängen zu vermeiden.

Lastbasierte Autoskalierung

Sie können einen HDInsight on AKS-Cluster mit lastbasierter Autoskalierung mithilfe einer Azure Resource Manager-Vorlage (ARM) erstellen, indem Sie dem Abschnitt „clusterProfile -> autoscaleProfile“ eine Autoskalierung hinzufügen.

Der Autoskalierungsknoten enthält Folgendes:

  • ein Abrufintervall, eine Abkühlphase,
  • ordnungsgemäßen Außerbetriebnahme,
  • die Mindest- und Höchstanzahl von Knoten,
  • standardmäßige Schwellenwertregeln,
  • Skalierungsmetriken, die beschreiben, wann die Änderung stattfindet

Eine vollständige Resource Manager-Vorlage finden Sie im folgenden JSON-Beispielcode.

  {
  "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"
        }
      ]
    }
  }
}

Verwenden der REST-API

Um die Autoskalierung für einen aktiven Cluster über die REST-API zu aktivieren oder zu deaktivieren, senden Sie eine PATCH-Anforderung an den Endpunkt der Autoskalierung: 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}}

  • Verwenden Sie die geeigneten Parameter in der Anforderungsnutzlast. Die nachfolgenden JSON-Nutzdaten könnten verwendet werden, um Autoskalierung zu aktivieren.
  • Verwenden Sie die Nutzdaten (autoscaleProfile: null) oder das Flag (enabled, false), um die automatische Skalierung zu deaktivieren.
  • Sehen Sie sich dazu die im obigen Schritt erwähnten JSON-Beispiele an.

Anhalten der Autoskalierung für einen ausgeführten Cluster

Wir haben das Feature „Anhalten“ in der Autoskalierung eingeführt. Jetzt können Sie die Autoskalierung auf einem ausgeführten Cluster mithilfe des Azure-Portals anhalten. Der folgende Screenshot zeigt, wie Sie die Optionen zum Anhalten und Fortsetzen der Autoskalierung auswählen.

Screenshot: Anhalten der automatischen Skalierung

Wenn Sie die Autoskalierungsvorgänge fortsetzen möchten, können Sie die Option zum Fortsetzen auswählen.

Screenshot: Fortsetzen der automatischen Skalierung

Tipp

Wenn Sie mehrere Zeitpläne konfigurieren und die Autoskalierung anhalten, wird der nächste Zeitplan nicht ausgelöst. Die Knotenanzahl bleibt unverändert, auch wenn die Knoten außer Betrieb genommenen werden.

Kopieren von Autoskalierungskonfigurationen

Im Azure-Portal können Sie jetzt die gleichen Autoskalierungskonfigurationen für eine identische Cluster-Shape in Ihrem Clusterpool kopieren. Sie können dieses Feature verwenden und dieselben Konfigurationen exportieren oder importieren.

Screenshot: Exportieren oder Importieren von Konfigurationen aus der automatischen Skalierung

Überwachen von Autoskalierungsaktivitäten

Clusterstatus

Der im Azure-Portal aufgeführte Clusterstatus kann Ihnen helfen, die Aktivitäten der Autoskalierung zu überwachen. Alle Statusmeldungen des Clusters, die möglicherweise angezeigt werden, werden in der Liste erläutert.

Clusterstatus Beschreibung
Erfolgreich Der Cluster wird normal ausgeführt. Alle vorherigen Autoskalierungsaktivitäten wurden erfolgreich abgeschlossen.
Akzeptiert Der Clustervorgang (z. B. Hochskalieren) wurde akzeptiert, und es wird auf den Abschluss des Vorgangs gewartet.
Fehler Dies bedeutet, dass ein aktueller Vorgang aus irgendeinem Grund fehlgeschlagen ist und der Cluster möglicherweise nicht funktionsfähig ist.
Abgesagt Der aktuelle Vorgang wurde abgebrochen.

Screenshot: Clusterstatus

Um die aktuelle Anzahl der Knoten in Ihrem Cluster anzuzeigen, wechseln Sie zum Diagramm Clustergröße auf der Seite Übersicht für den Cluster.

Screenshot: Clusterdetails

Vorgangsverlauf

Sie können den Verlauf des zentralen Hoch- und Herunterskalierens des Clusters als Teil der Clustermetriken anzeigen. Sie können auch alle Skalierungsaktionen des letzten Tages, der letzten Woche oder eines anderen Zeitraums auflisten.

Screenshot: Vorgangshistorie des Clusters in Aktivitätsprotokollen

Weitere Ressourcen

Manuelle Skalierung: Azure HDInsight on AKS