Optimieren der Leistung der Azure Integration Runtime

Datenflüsse werden in Spark-Clustern ausgeführt, die zur Laufzeit gestartet werden. Die Konfiguration für den verwendeten Cluster wird in der Integration Runtime (IR) der Aktivität definiert. Beim Definieren Ihrer Integration Runtime müssen drei Leistungsaspekte berücksichtigt werden: Clustertyp, Clustergröße und Gültigkeitsdauer.

Weitere Informationen zum Erstellen einer Integration Runtime finden Sie unter Integrationslaufzeit.

Die einfachste Möglichkeit, mit Datenflussintegrationslaufzeiten zu beginnen, besteht darin, klein, mittel oder groß aus der Berechnungsgrößenauswahl auszuwählen. Siehe die Zuordnungen zu Clusterkonfigurationen für diese Größen unten.

Clustergröße

Bei Datenflüssen wird die Datenverarbeitung auf unterschiedliche Kerne eines Spark-Clusters verteilt, damit Vorgänge parallel ausgeführt werden können. Bei Verwendung eines Spark-Clusters mit mehr Kernen erhöht sich die Anzahl von Kernen in der Compute-Umgebung. Eine größere Anzahl von Kernen führt zu einer Erhöhung der Verarbeitungsleistung des Datenflusses. Die Erhöhung der Clustergröße ist häufig eine einfache Möglichkeit, um die Verarbeitungszeit zu verkürzen.

Die Standardclustergröße beträgt vier Treiberkerne und vier Workerkerne (klein). Je mehr Daten Sie verarbeiten, desto größere Cluster sollten Sie verwenden. Unten sind die möglichen Optionen für die Größenanpassung angegeben:

Workerkerne Treiberkerne Kerne insgesamt Notizen
4 4 8 Small
8 8 16 Medium
16 16 32 Groß
32 16 48
64 16 80
128 16 144
256 16 272

Die Preise von Datenflüssen werden nach „Stunden der virtuellen Kerne“ berechnet. Dies bedeutet, dass sowohl die Clustergröße als auch die Ausführungszeit einfließen. Beim Hochskalieren erhöhen sich Ihre Clusterkosten pro Minute, aber die Gesamtdauer verringert sich.

Tipp

Für die Auswirkung der Größe eines Clusters auf die Leistung eines Datenflusses gibt es eine Obergrenze. Je nach Umfang Ihrer Daten gibt es einen bestimmten Punkt, an dem die Erhöhung der Größe eines Clusters nicht mehr zu einer Verbesserung der Leistung führt. Wenn Sie beispielsweise über mehr Kerne als Partitionen mit Daten verfügen, ist das Hinzufügen weiterer Kerne nicht hilfreich. Eine bewährte Methode besteht darin, klein anzufangen und dann hochzuskalieren, um Ihre Leistungsanforderungen zu erfüllen.

Benutzerdefinierte Shuffle-Partition

Dataflow unterteilt die Daten in Partitionen und transformiert sie mithilfe verschiedener Prozesse. Wenn die Datengröße in einer Partition die Menge übersteigt, die der Prozess im Arbeitsspeicher halten kann, schlägt der Prozess mit OOM-Fehlern (Out of Memory) fehl. Wenn Dataflow sehr große Datenmengen mit Joins/Aggregationen enthält, sollten Sie versuchen, Shuffle-Partitionen inkrementell zu ändern. Sie können den Wert von 50 bis auf 2000 festlegen, um OOM-Fehler zu vermeiden. Benutzerdefinierte Eigenschaften von Compute in der Dataflow-Runtime ist eine Möglichkeit zur Steuerung Ihrer Computeanforderungen. Der Eigenschaftenname lautet Shuffle-Partitionen und ist vom Typ ganzzahlig. Diese Anpassung sollte nur in bekannten Szenarien verwendet werden, andernfalls kann es zu unnötigen Dataflow-Fehlern kommen.

Stellen Sie beim Erhöhen der Shuffle-Partitionen sicher, dass die Daten gut verteilt werden. Ein grober Anhaltspunkt ist es, etwa 1,5 GB an Daten pro Partition einzuplanen. Wenn Daten verzerrt (schief) sind, ist das Erhöhen der „Shuffle-Partitionen“ nicht hilfreich. Wenn Sie beispielsweise über 500 GB Daten verfügen, sollte ein Wert zwischen 400 und 500 funktionieren. Der Standardgrenzwert für Shuffle-Partitionen beträgt 200, was für ca. 300 GB Daten gut funktioniert.

  1. Wählen Sie im ADF-Portal unter Verwalten eine benutzerdefinierte Integration Runtime aus, und wechseln Sie in den Bearbeitungsmodus.
  2. Wechseln Sie auf der Registerkarte „Dataflow-Runtime“ zum Abschnitt Benutzerdefinierte Eigenschaften für Compute.
  3. Wählen Sie unter „Eigenschaftenname“ die Option Shuffle-Partitionen aus, und geben Sie einen Wert Ihrer Wahl ein, z. B. 250, 500 usw.

Sie können dies auch erreichen, indem Sie die JSON-Datei der Runtime bearbeiten und ein Array mit Eigenschaftenname und -wert hinter einer vorhandenen Eigenschaft wie der cleanup-Eigenschaft (Bereinigung) hinzufügen.

Gültigkeitsdauer

Standardmäßig startet jede Datenflussaktivität basierend auf der Azure IR-Konfiguration einen neuen Spark-Cluster. Das Starten des kalten Clusters dauert einige Minuten, und die Datenverarbeitung kann erst gestartet werden, nachdem dieser Vorgang abgeschlossen ist. Wenn Ihre Pipelines mehrere sequenzielle Datenflüsse enthalten, können Sie einen Wert für die Gültigkeitsdauer aktivieren. Bei Angabe eines Werts für die Gültigkeitsdauer bleibt ein Cluster nach Abschluss der Ausführung noch eine bestimmte Zeit aktiv. Falls die IR während der Gültigkeitsdauer von einem neuen Auftrag genutzt wird, wird der vorhandene Cluster wiederverwendet und die Startzeit beträchtlich verkürzt. Nachdem der zweite Auftrag abgeschlossen ist, bleibt der Cluster erneut so lange aktiv, wie dies durch die Gültigkeitsdauer vorgegeben ist.

Wenn die meisten Ihrer Datenflüsse jedoch parallel ausgeführt werden, wird nicht empfohlen, TTL für die Integration Runtime zu aktivieren, die Sie für diese Aktivitäten verwenden. In einem Cluster kann jeweils nur ein Auftrag ausgeführt werden. Wenn ein Cluster verfügbar ist, aber zwei Datenflüsse gestartet werden, wird er nur für einen davon verwendet. Für den zweiten Auftrag wird ein eigener isolierter Cluster gestartet.

Hinweis

Die Gültigkeitsdauer ist nicht verfügbar, wenn Sie die Integration Runtime mit automatischer Auflösung (Standard) verwenden.

Lesen Sie die folgenden Artikel zu Datenflüssen in Bezug auf die Leistung: