Konfiguration von Managed Service for Apache Spark-Clustern

In Cloud Data Fusion bezieht sich die Clusterkonfiguration auf die Definition, wie Ihre Datenverarbeitungspipelines Rechenressourcen nutzen, wenn Sie Spark-Jobs in Managed Service for Apache Spark ausführen. Auf dieser Seite werden die wichtigsten Ansätze für die Clusterkonfiguration beschrieben.

Sitzungsspezifische Standardcluster (empfohlen)

Die Verwendung der Standardcluster ist der empfohlene Ansatz für Cloud Data Fusion-Pipelines.

  • Cloud Data Fusion stellt automatisch sitzungsspezifische Managed Service for Apache Spark-Cluster für jede Pipelineausführung bereit und verwaltet sie. Der Cluster wird zu Beginn der Pipelineausführung erstellt und nach Abschluss der Pipelineausführung wieder gelöscht.
  • Vorteile von sitzungsspezifischen Clustern:
    • Einfachheit: Sie müssen den Cluster nicht manuell konfigurieren oder verwalten.
    • Kosteneffizienz: Sie zahlen nur für die Ressourcen, die während der Pipelineausführung verwendet werden.

Informationen zum Anpassen von Clustern und Optimieren der Leistung finden Sie unter Clustergröße.

Statische Cluster (für bestimmte Szenarien)

In den folgenden Szenarien können Sie statische Cluster verwenden:

  • Pipelines mit langer Laufzeit: Bei Pipelines, die kontinuierlich oder über einen längeren Zeitraum ausgeführt werden, kann ein statischer Cluster kostengünstiger sein als das wiederholte Erstellen und Löschen sitzungsspezifischer Cluster.
  • Zentrale Clusterverwaltung: Wenn Ihre Organisation eine zentrale Kontrolle über die Richtlinien für die Clustererstellung und -verwaltung benötigt, können statische Cluster zusammen mit Tools wie Terraform verwendet werden.
  • Clustererstellungszeit: Wenn die Zeit, die zum Erstellen eines neuen Clusters für jede Pipeline benötigt wird, für Ihren Anwendungsfall untragbar ist.

Statische Cluster erfordern jedoch mehr manuelle Konfiguration und Sie müssen den Clusterlebenszyklus selbst verwalten.

Wenn Sie einen statischen Cluster verwenden möchten, müssen Sie die folgenden Eigenschaften für den Managed Service for Apache Spark-Cluster festlegen:

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

Optionen für die Clusterkonfiguration für statische Cluster

Wenn Sie statische Cluster verwenden, bietet Cloud Data Fusion Konfigurationsoptionen für die folgenden Aspekte:

  • Worker-Maschinentyp: Geben Sie den Typ der virtuellen Maschine für die Worker Knoten in Ihrem Cluster an. Dadurch werden die vCPUs und der Arbeitsspeicher festgelegt, die für jeden Worker verfügbar sind.
  • Anzahl der Worker: Definieren Sie die anfängliche Anzahl der Worker-Knoten in Ihrem Cluster. Managed Service for Apache Spark kann diese Anzahl je nach Arbeitslast automatisch skalieren.
  • Zone: Wählen Sie die Zone Ihres Clusters aus. Google Cloud Der Standort kann sich auf die Datenlokalität und die Netzwerkleistung auswirken.
  • Zusätzliche Konfigurationen: Sie können erweiterte Optionen für Ihren statischen Cluster konfigurieren, z. B. Einstellungen für die Preemption, Netzwerkeinstellungen und Initialisierungsaktionen.

Best Practices

Verwenden Sie die folgenden Konfigurationen, wenn Sie einen statischen Cluster für Ihre Pipelines erstellen.

Parameter Beschreibung
yarn.nodemanager.delete.debug-delay-sec Behält YARN-Logs bei.
Empfohlener Wert: 86400 (entspricht einem Tag)
yarn.nodemanager.pmem-check-enabled Ermöglicht YARN, virtuelle Speicherlimits zu prüfen und Container zu beenden, wenn sie über den physischen Speicher hinausgehen.
Empfohlener Wert: false
yarn.nodemanager.vmem-check-enabled Ermöglicht YARN, virtuelle Speicherlimits zu prüfen und Container zu beenden, wenn sie über den physischen Speicher hinausgehen.
Empfohlener Wert: false
dataproc.scheduler.driver-size-mb Aufgrund des durchschnittlichen Arbeitsspeicherbedarfs des Treibers stellt Managed Service for Apache Spark den Job in die Warteschlange, wenn der Masterknoten nicht genügend Arbeitsspeicher hat, um den Treiberprozess auszuführen. Dies kann sich auf die Job-Concurrency auswirken, lässt sich aber durch die Verwendung eines Masterknotens mit mehr Arbeitsspeicher vermeiden.
Empfohlener Wert: 2048

Weitere Informationen finden Sie unter Pipeline für einen vorhandenen Managed Service for Apache Spark-Cluster ausführen.

Cluster wiederverwenden

Sie können Managed Service for Apache Spark-Cluster zwischen Ausführungen wiederverwenden, um die Verarbeitungszeit zu verbessern. Die Clusterwiederverwendung wird in einem Modell implementiert, das dem Verbindungspooling oder Thread-Pooling ähnelt. Ein Cluster wird nach Abschluss der Ausführung für eine bestimmte Zeit ausgeführt. Wenn eine neue Ausführung gestartet wird, wird versucht, einen verfügbaren inaktiven Cluster zu finden, der der Konfiguration des Compute-Profils entspricht. Wenn ein solcher Cluster vorhanden ist, wird er verwendet. Andernfalls wird ein neuer Cluster gestartet.

Hinweise zur Wiederverwendung von Clustern

  • Cluster werden nicht freigegeben. Ähnlich wie beim regulären Bereitstellungsmodell für sitzungsspezifische Cluster wird in einem Cluster jeweils nur eine Pipelineausführung ausgeführt. Ein Cluster wird nur wiederverwendet, wenn er inaktiv ist.
  • Wenn Sie die Clusterwiederverwendung für alle Ausführungen aktivieren, wird die erforderliche Anzahl von Clustern nach Bedarf erstellt, um alle Ausführungen zu verarbeiten. Ähnlich wie beim Bereitsteller für sitzungsspezifische Managed Service for Apache Spark-Cluster gibt es keine direkte Kontrolle über die Anzahl der erstellten Cluster. Sie können weiterhin Google Cloud Kontingente verwenden, um Ressourcen zu verwalten. Wenn Sie beispielsweise 100 Ausführungen mit maximal 7 parallelen Ausführungen ausführen, haben Sie zu einem bestimmten Zeitpunkt bis zu 7 Cluster.
  • Cluster werden zwischen verschiedenen Pipelines wiederverwendet, sobald diese Pipelines dasselbe Profil verwenden und dieselben Profileinstellungen haben. Wenn die Profilanpassung verwendet wird, werden Cluster weiterhin wiederverwendet, aber nur, wenn die Anpassungen genau gleich sind, einschließlich aller Clustereinstellungen wie der Clusterkennzeichnung.

  • Wenn die Clusterwiederverwendung aktiviert ist, sind zwei Hauptkostenfaktoren zu berücksichtigen:

    • Für den Clusterstart und die Clusterinitialisierung werden weniger Ressourcen verwendet.
    • Für Cluster werden mehr Ressourcen verwendet, um zwischen den Pipelineausführungen und nach der letzten Pipelineausführung inaktiv zu bleiben.

Es ist zwar schwierig, die Kostenauswirkungen der Clusterwiederverwendung vorherzusagen, aber Sie können eine Strategie anwenden, um maximale Einsparungen zu erzielen. Die Strategie besteht darin, einen kritischen Pfad für verkettete Pipelines zu ermitteln und die Clusterwiederverwendung für diesen kritischen Pfad zu aktivieren. Dadurch wird sichergestellt, dass der Cluster sofort wiederverwendet wird, keine Leerlaufzeit verschwendet wird und maximale Leistungssteigerungen erzielt werden.

Clusterwiederverwendung aktivieren

Im Abschnitt „Compute-Konfiguration“ der bereitgestellten Pipelinekonfiguration oder beim Erstellen eines neuen Compute-Profils:

  • Aktivieren Sie Clusterlöschung überspringen.
  • Die maximale Leerlaufzeit ist die Zeit, bis zu der ein Cluster auf die nächste Pipeline wartet, um ihn wiederzuverwenden. Die Standardeinstellung für die maximale Leerlaufzeit beträgt 30 Minuten. Berücksichtigen Sie bei der maximalen Leerlaufzeit die Kosten im Vergleich zur Clusterverfügbarkeit für die Wiederverwendung. Je höher der Wert für die maximale Leerlaufzeit ist, desto mehr Cluster sind inaktiv und bereit für eine Ausführung.

Fehlerbehebung: Versionskompatibilität

Problem: Die Version Ihrer Cloud Data Fusion-Umgebung ist möglicherweise nicht mit der Version Ihres Managed Service for Apache Spark-Clusters kompatibel.

Empfehlung: Führen Sie ein Upgrade auf die neueste Cloud Data Fusion-Version durch und verwenden Sie eine der unterstützten Managed Service for Apache Spark-Versionen.

Ältere Versionen von Cloud Data Fusion sind nur mit nicht unterstützten Versionen von Managed Service for Apache Spark kompatibel. Managed Service for Apache Spark bietet keine Aktualisierungen und keine Unterstützung für Cluster, die mit diesen Versionen erstellt wurden. Sie können zwar weiterhin einen Cluster ausführen, der mit einer nicht unterstützten Version erstellt wurde, aber wir empfehlen, ihn durch einen zu ersetzen, der mit einer unterstützten Version erstellt wurde.

Cloud Data Fusion-Version Managed Service for Apache Spark-Version
6.11.1 2.3, 2.2***, 2.1
6.10.1.1 2.2***, 2.1, 2.0 *
6.10 2.1, 2.0 *
6.9 2.1, 2.0, 1.5 *
6.7-6.8 2.0, 1.5 *
6.4-6.6 2.0 *, 1.3 **
6.1-6.3 1.3**

* Cloud Data Fusion-Versionen 6.4 und höher sind mit unterstützten Versionen von Managed Service for Apache Spark kompatibel. Sofern keine bestimmten Betriebssystemfunktionen erforderlich sind, empfiehlt es sich, die major.minor Image-Version anzugeben.
Wenn Sie die Betriebssystemversion angeben möchten, die in Ihrem Managed Service for Apache Spark-Cluster verwendet wird, muss die Betriebssystem version mit einer der unterstützten Managed Service for Apache Spark Versionen für Ihre Cloud Data Fusion-Version in der vorherigen Tabelle kompatibel sein.

** Cloud Data Fusion-Versionen 6.1 bis 6.6 sind mit der nicht unterstützten Managed Service for Apache Spark-Version 1.3 kompatibel.

*** Bei dieser Image-Version wurden bestimmte Probleme festgestellt. Diese Managed Service for Apache Spark -Image-Version wird nicht für die Produktion empfohlen.

Fehlerbehebung: Container wurde mit dem Exitcode 3 ungleich null beendet

Problem: Es wird keine Autoscaling-Richtlinie verwendet und die statischen Managed Service for Apache Spark-Cluster haben Arbeitsspeicherprobleme, was zu einer Ausnahme aufgrund von Arbeitsspeichermangel in den Logs führt: Container exited with a non-zero exit code 3.

Empfehlung: Erhöhen Sie den Arbeitsspeicher des Executors.

Erhöhen Sie den Arbeitsspeicher, indem Sie der Pipeline das Laufzeitargument task.executor.system.resources.memory hinzufügen. Im folgenden Beispiel wird der Arbeitsspeicher mit dem Laufzeitargument auf 4096 MB festgelegt:

"task.executor.system.resources.memory": 4096

Weitere Informationen finden Sie unter Clustergröße.

Nächste Schritte