Größenanpassung bei Clustern

In Cloud Data Fusion wurde standardmäßig „Autoscale“ als Compute-Profil verwendet. Die optimale Anzahl von Cluster-Workern (Knoten) für eine Arbeitslast zu ermitteln, ist schwierig und eine einzelne Clustergröße für eine gesamte Pipeline ist oft nicht ideal. Das Dataproc-Autoscaling bietet einen Mechanismus zur Automatisierung der Clusterressourcenverwaltung und ermöglicht das Autoscaling von Cluster-Worker-VMs. Weitere Informationen finden Sie unter Autoscaling.

Auf der Seite Compute-Konfiguration, auf der eine Liste der Profile angezeigt wird, gibt es die Spalte Kerne insgesamt mit der maximalen Anzahl von vCPUs, auf die das Profil skaliert werden kann, z. B. Up to 84.

Wenn Sie das Dataproc-Computing-Profil verwenden möchten , können Sie die Clustergröße basierend auf der Pipelinegröße verwalten.

Masterknoten

Masterknoten verwenden Ressourcen, die der Anzahl der Pipelines oder zusätzlichen Anwendungen proportional entsprechen, die auf dem Cluster ausgeführt werden. Wenn Sie Pipelines auf sitzungsspezifischen Clustern ausführen, verwenden Sie 2 CPUs und 8 GB Arbeitsspeicher für die Masterknoten. Wenn Sie nichtflüchtige Cluster verwenden, benötigen Sie möglicherweise größere Masterknoten, um mit dem Workflow Schritt zu halten. Sie können die Speicher- und CPU-Auslastung auf dem Knoten überwachen, um festzustellen, ob Sie größere Masterknoten benötigen. Wir empfehlen, die Größe Ihrer Worker-Knoten mit mindestens 2 CPUs und 8 GB Arbeitsspeicher festzulegen. Wenn Sie Ihre Pipelines so konfiguriert haben, dass sie größere Speichermengen verwenden, müssen Sie größere Worker verwenden.

Achten Sie darauf, dass Ihr Cluster genügend Knoten hat, um eine möglichst parallele Verarbeitung zu ermöglichen, um die Ausführungszeit zu minimieren.

Worker

In den folgenden Abschnitten werden Aspekte der Größe von Arbeitsknoten beschrieben.

CPU und Arbeitsspeicher

Wir empfehlen, die Größe Ihrer Worker-Knoten mit mindestens 2 CPUs und 8 GB Arbeitsspeicher festzulegen. Wenn Sie Ihre Pipelines so konfiguriert haben, dass sie größere Speichermengen verwenden, müssen Sie größere Worker verwenden. Bei einem Worker-Knoten mit 4 CPUs und 15 GB stehen beispielsweise jedem Worker 4 CPUs und 12 GB für die Ausführung von YARN-Containern zur Verfügung. Wenn Ihre Pipeline für die Ausführung von 1 CPU und 8 GB Ausführenden konfiguriert ist, kann YARN nicht mehr als einen Container pro Workerknoten ausführen. Jeder Worker-Knoten hätte dann 3 CPUs und 4 GB zusätzlich, die nicht genutzt werden können, da sie nicht für die Ausführung von Aufgaben verwendet werden können. Um die Ressourcennutzung in Ihrem Cluster zu maximieren, sollten der YARN-Speicher und die CPUs ein genaues Vielfaches der pro Spark-Executor benötigten Menge sein. Sie können in YARN unter yarn.nodemanager.resource.memory-mb nachsehen, wie viel Arbeitsspeicher jeder Worker für YARN reserviert hat.

Wenn Sie Dataproc verwenden, beträgt der für YARN-Container verfügbare Arbeitsspeicher etwa 75% des VM-Arbeitsspeichers. Die minimale YARN-Containergröße wird ebenfalls anhand der Größe der Worker-VMs angepasst. In der folgenden Tabelle sind einige gängige Workergrößen und die entsprechenden YARN-Einstellungen aufgeführt.

Worker-CPU Arbeitsspeicher des Workers (GB) YARN-Knotenspeicher (GB) YARN-Min.-Allokationsspeicher (MB)
1 4 3 256
2 8 6 512
4 16 12 1.024
8 32 24 1.024
16 64 51 1.024

Beachten Sie, dass Spark mehr Arbeitsspeicher anfordert als der für die Pipeline festgelegte Executor-Speicher und dass YARN diesen angeforderten Betrag aufrundet. Angenommen, Sie haben den Arbeitsspeicher des Executors auf 2.048 MB festgelegt und keinen Wert für spark.yarn.executor.memoryOverhead angegeben. In diesem Fall wird der Standardwert von 384 MB verwendet. Das bedeutet, dass Spark 2.048 MB + 384 MB für jeden Executor anfordert, was von YARN auf ein genaues Vielfaches der YARN-Mindestzuweisung aufgerundet wird. Wenn der Job auf einem Worker-Knoten mit 8 GB ausgeführt wird, wird er auf 2,5 GB aufgerundet, da die Mindestzuweisung für YARN 512 MB beträgt. Das bedeutet, dass jeder Worker zwei Container ausführen kann, alle verfügbaren CPUs belegt, aber 1 GB YARN-Speicher (6 GB – 2,5 GB – 2,5 GB) ungenutzt lässt. Das bedeutet, dass der Worker-Knoten etwas kleiner sein kann oder den Executoren etwas mehr Arbeitsspeicher zugewiesen werden kann. Bei der Ausführung auf einem Worker-Knoten mit 16 GB wird 2.048 MB + 1.024 MB auf 3 GB aufgerundet, da die YARN-Mindestzuweisung 1.024 MB beträgt. Das bedeutet, dass auf jedem Worker-Knoten vier Container ausgeführt werden können, wobei alle CPUs und der gesamte YARN-Speicher verwendet werden.

In der folgenden Tabelle sind empfohlene Worker-Größen für einige gängige Executor-Größen aufgeführt.

Executor-CPU Executor-Speicher (MB) Worker-CPU Arbeitsspeicher ( GB)
1 2.048 4 15
1 3.072 4 21
1 4.096 4 26
2 8.192 4 26

Ein Worker-Knoten mit 26 GB entspricht beispielsweise 20 GB Arbeitsspeicher, der für die Ausführung von YARN-Containern verwendet werden kann. Wenn der Executor-Speicher auf 4 GB festgelegt ist, wird 1 GB als Overhead hinzugefügt. Das entspricht 5 GB YARN-Containern pro Executor. Das bedeutet, dass der Worker vier Container ausführen kann, ohne dass zusätzliche Ressourcen übrig bleiben. Sie können auch die Größe der Worker vervielfachen. Wenn der Arbeitsspeicher des Executors beispielsweise auf 4.096 GB festgelegt ist, eignet sich auch ein Worker mit 8 CPUs und 52 GB Arbeitsspeicher. Bei Compute Engine-VMs wird die Menge des Arbeitsspeichers, die die VM haben kann, basierend auf der Anzahl der Kerne eingeschränkt. Eine VM mit 4 Kernen muss beispielsweise mindestens 7, 25 GB und höchstens 26 GB Arbeitsspeicher haben. Das bedeutet, dass ein Executor, der für die Verwendung von 1 CPU und 8 GB Arbeitsspeicher konfiguriert ist, 2 CPUs und 26 GB Arbeitsspeicher auf der VM verwendet. Wenn Executors stattdessen so konfiguriert sind, dass sie 2 CPUs und 8 GB Arbeitsspeicher verwenden, werden alle CPUs genutzt.

Laufwerk

Der Datenträger ist für einige Pipelines wichtig, aber nicht für alle. Wenn Ihre Pipeline keine Zufallsmixe enthält, wird das Laufwerk nur verwendet, wenn Spark keinen Arbeitsspeicher mehr hat und Daten auf das Laufwerk auslagern muss. Bei diesen Arten von Pipelines haben Laufwerksgröße und ‑typ in der Regel keine großen Auswirkungen auf die Leistung. Wenn in Ihrer Pipeline viele Daten gemischt werden, spielt die Festplattenleistung eine Rolle. Wenn Sie Dataproc verwenden, sollten Sie Laufwerke mit einer Größe von mindestens 1 TB verwenden, da die Laufwerksleistung mit der Laufwerksgröße skaliert. Weitere Informationen zur Laufwerksleistung finden Sie unter Laufwerke so konfigurieren, dass sie die Leistungsanforderungen erfüllen.

Anzahl der Worker

Um die Ausführungszeit zu minimieren, sollte Ihr Cluster so groß sein, dass so viele Aufgaben wie möglich parallel ausgeführt werden können. Wenn Ihre Pipelinequelle beispielsweise Daten mit 100 Aufteilungen liest, muss der Cluster groß genug sein, um 100 Ausführer gleichzeitig auszuführen.

Am einfachsten lässt sich feststellen, ob Ihr Cluster zu klein ist, indem Sie sich den ausstehenden YARN-Speicher im Zeitverlauf ansehen. Wenn Sie Dataproc verwenden, finden Sie ein Diagramm auf der Seite mit den Clusterdetails.

Wenn der ausstehende Arbeitsspeicher über einen längeren Zeitraum hoch ist, können Sie die Anzahl der Worker erhöhen, um Ihrem Cluster so zusätzliche Kapazität zu verleihen. Im vorherigen Beispiel sollte der Cluster um etwa 28 GB erweitert werden, damit die maximale Parallelität erreicht wird.

Modus für verbesserte Flexibilität (Enhanced Flexibility Mode, EFM)

Mit EFM können Sie angeben, dass beim Zufallsmix nur primäre Workerknoten beteiligt sein sollen. Da sekundäre Worker nicht mehr für Zwischen-Shuffle-Daten verantwortlich sind, kommt es bei der Entfernung aus einem Cluster nicht zu Verzögerungen oder Fehlern bei Spark-Jobs. Da primäre Worker nie herunterskaliert werden, wird der Cluster stabiler und effizienter herunterskaliert. Wenn Sie Pipelines mit Zufallsmix in einem statischen Cluster ausführen, wird EFM empfohlen.

Weitere Informationen zum Modus für verbesserte Flexibilität finden Sie unter Dataproc Enhanced Flexibility Mode.