Freigeben über


Automatische Skalierung von Azure Synapse Analytics Apache Spark Pools

Apache Spark für das Autoscale-Feature des Azure Synapse Analytics-Pools skaliert automatisch die Anzahl der Knoten in einer Clusterinstanz nach oben und unten. Während der Erstellung eines neuen Apache Spark für Azure Synapse Analytics-Pool kann eine minimale und maximale Anzahl von Knoten, bis zu 200 Knoten, festgelegt werden, wenn Autoscale ausgewählt wird. Die automatische Skalierung überwacht dann die Ressourcenanforderungen der Auslastung und skaliert die Anzahl von Knoten zentral hoch oder herunter. Für dieses Feature fallen keine zusätzlichen Gebühren an.

Metriküberwachung

Die automatische Skalierung überwacht kontinuierlich die Spark-Instanz und sammelt die folgenden Metriken:

Metric Description
CPU insgesamt für ausstehende Die Gesamtzahl der Kerne, die zum Starten der Ausführung aller ausstehenden Aufträge erforderlich sind.
Arbeitsspeicher insgesamt für ausstehende Der Gesamtspeicher (in MB), der zum Starten der Ausführung aller ausstehenden Aufträge erforderlich ist.
Freie CPUs insgesamt Die Summe aller nicht verwendeten Kerne auf den aktiven Knoten.
Freier Arbeitsspeicher insgesamt Die Summe des nicht verwendeten Arbeitsspeichers (in MB) auf den aktiven Knoten.
Verwendeter Arbeitsspeicher pro Knoten Die Auslastung eines Knotens. Ein Knoten, auf dem 10 GB Arbeitsspeicher verwendet werden, ist höher ausgelastet als ein Knoten, auf dem 2 GB verwendet werden.

Die obigen Metriken werden alle 30 Sekunden überprüft. Die automatische Skalierung trifft Hochskalierungs- und Herunterskalierungsentscheidungen basierend auf diesen Metriken.

Ladebasierte Skalierungsbedingungen

Wenn die folgenden Bedingungen erkannt werden, gibt Autoscale eine Skalierungsanforderung aus:

Zentrales Hochskalieren Zentrales Herunterskalieren
„CPU insgesamt für ausstehende“ ist länger als eine Minute größer als die Anzahl der insgesamt freien CPUs. „CPU insgesamt für ausstehende“ ist länger als 2 Minuten kleiner als die Anzahl der insgesamt freien CPUs.
„Arbeitsspeicher insgesamt für ausstehende“ ist länger als 1 Minute größer als der insgesamt freie Arbeitsspeicher. „Arbeitsspeicher insgesamt für ausstehende“ ist länger als 2 Minuten kleiner als der insgesamt freie Arbeitsspeicher.

Für die Skalierung berechnet der Azure Synapse Autoscale-Dienst, wie viele neue Knoten erforderlich sind, um die aktuellen CPU- und Arbeitsspeicheranforderungen zu erfüllen, und gibt dann eine Skalierungsanforderung aus, um die erforderliche Anzahl von Knoten hinzuzufügen.

Für die Skalierung nach unten, basierend auf der Anzahl der Executoren und der Anwendungsmaster pro Knoten sowie den aktuellen Anforderungen an CPU und Speicher, stellt Autoscale eine Anforderung, um einige Knoten zu entfernen. Der Dienst erkennt außerdem, welche Knoten Kandidaten für das Entfernen sind, basierend auf der aktuellen Auftragsausführung. Der Vorgang des Herunterskalierens deaktiviert zunächst die Knoten und entfernt sie dann aus dem Cluster.

Hinweis

Hinweis zum Aktualisieren und Erzwingen der Anwendung der Autoskalenkonfiguration auf einen vorhandenen Spark-Pool. Wenn Neue Einstellung erzwingen im Azure-Portal oder ForceApplySetting in PowerShell aktiviert ist, werden alle vorhandenen Spark-Sitzungen beendet und Konfigurationsänderungen sofort angewendet. Wenn diese Option nicht ausgewählt ist, wird die Konfiguration auf die neuen Spark-Sitzungen angewendet, und vorhandene Sitzungen werden nicht beendet.

Get started

Erstellen eines serverlosen Apache Spark-Pools mit automatischer Skalierung

Um die Funktion für automatische Skalierung zu aktivieren, führen Sie als Teil des normalen Poolerstellungsvorgangs die folgenden Schritte aus:

  1. Aktivieren Sie auf der Registerkarte " Grundlagen " das Kontrollkästchen "Automatische Skalierung aktivieren ".

  2. Geben Sie die gewünschten Werte für die folgenden Eigenschaften ein:

    • Min . Anzahl der Knoten.
    • Maximale Anzahl von Knoten.

Die anfängliche Anzahl von Knoten ist der Minimalwert. Dieser Wert definiert die Anfangsgröße der Instanz bei der Erstellung. Die Mindestanzahl von Knoten darf nicht kleiner als drei sein.

Optional können Sie die dynamische Zuweisung von Executoren in Szenarien aktivieren, in denen sich die Ausführungsanforderungen über Phasen eines Spark-Auftrags oder die Menge der verarbeiteten Daten mit der Zeit erheblich unterscheiden. Durch die Aktivierung der dynamischen Zuweisung von Ausführungsinstanzen können wir die Kapazität nach Bedarf nutzen.

Bei der Aktivierung der dynamischen Zuordnung kann der Auftrag die Anzahl der Executoren innerhalb der minimalen und der maximalen Anzahl der angegebenen Executoren skalieren.

Apache Spark ermöglicht die Konfiguration der dynamischen Zuordnung von Executors über Code wie folgt:

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

Die durch den Code angegebenen Standardwerte überschreiben die werte, die über die Benutzeroberfläche festgelegt wurden.

Wenn Ihr Job in diesem Beispiel nur zwei Ausführungsinstanzen erfordert, werden nur zwei Ausführungsinstanzen verwendet. Wenn der Auftrag mehr Executors benötigt, wird er auf bis zu 6 Executors hochskaliert (1 Treiber, 6 Executors). Wenn der Auftrag die Executors nicht mehr benötigt, werden sie außer Betrieb genommen. Wenn er den Knoten nicht benötigt, wird er den Knoten freigeben.

Hinweis

Die maxExecutors-Option reserviert die Anzahl der konfigurierten Executoren. Auf das Beispiel bezogen bedeutet dies, dass selbst bei Verwendung von nur 2 Executors 6 Executors reserviert werden.

Wenn Sie also die dynamische Zuteilung aktivieren, werden die Executors entsprechend der Auslastung der Executors hoch- oder herunterskaliert. Dadurch wird sichergestellt, dass die Executors entsprechend den Anforderungen des ausgeführten Auftrags bereitgestellt werden.

Bewährte Methoden

Berücksichtigen Sie die Latenz von Hochskalierungs- oder Herunterskalierungsvorgängen.

Es kann 1 bis 5 Minuten dauern, bis ein Skalierungsvorgang abgeschlossen ist.

Vorbereiten der Skalierung nach unten

Während des Herunterskalierungsprozesses versetzt Autoscale die Knoten in den Stilllegungszustand, sodass keine neuen Executor-Prozesse auf diesem Knoten gestartet werden können.

Die ausgeführten Aufträge werden weiterhin ausgeführt und abgeschlossen. Für die ausstehenden Aufträge wird auf die reguläre Einplanung mit weniger verfügbaren Knoten gewartet.

Hinweis

Standardmäßig ist spark.yarn.executor.decommission.enabled auf "true" gesetzt, wodurch die automatische Abschaltung von unterausgelasteten Knoten aktiviert wird, um die Recheneffizienz zu optimieren. Wenn eine weniger aggressive Skalierung bevorzugt wird, kann diese Konfiguration auf „false“ festgelegt werden.

Nächste Schritte

Schnellstart zum Einrichten eines neuen Spark-Pools. Erstellen Sie einen Spark-Pool