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 Informationen hierzu 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 sitzungsspezifische Cluster, verwenden 2 CPUs und 8 GB Arbeitsspeicher für den Master Knoten. Wenn Sie nichtflüchtige Cluster verwenden, benötigen Sie möglicherweise größere Master-Knoten 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 Arbeitsspeichermengen nutzen, verwenden Sie und größeren Workern. 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 an die 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 Worker-Arbeitsspeicher (GB) YARN-Knotenspeicher (GB) Min. YARN-Speicherzuordnung (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 Executor-Arbeitsspeicher. festgelegt ist und YARN den angeforderten Betrag rundet. Für Angenommen, Sie haben den Speicher für den Executor auf 2048 MB festgelegt und erhält einen Wert für spark.yarn.executor.memoryOverhead. Dies bedeutet, dass der Standardwert von 384 MB genutzt. 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. Bei der Ausführung auf einem 8 GB-Worker-Knoten, da YARN Mindestzuweisung 512 MB beträgt, wird auf 2,5 GB aufgerundet. Dieses Jeder Worker kann zwei Container ausführen und verfügbaren CPUs, aber noch 1 GB YARN-Arbeitsspeicher (6 GB – 2,5 GB bis 2,5 GB) ungenutzt. Das bedeutet, dass der Worker-Knoten oder den Executors kann etwas mehr Arbeitsspeicher zugewiesen werden. Bei der Ausführung auf einem Worker-Knoten mit 16 GB wird 2048 MB + 1024 MB auf 3 GB aufgerundet, da die YARN-Mindestzuweisung 1024 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.

Die folgende Tabelle enthält empfohlene Worker-Größen anhand der angegebenen einige gängige Executor-Größen.

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 Executor-Arbeitsspeicher auf 4 GB festgelegt ist, entspricht 1 GB als Overhead hinzugefügt, was 5 GB YARN-Container für jeden Executor bedeutet. Dieses Der Worker kann vier Container ausführen, ohne dass zusätzliche Ressourcen übrig bleiben. Sie können auch die Größe der Worker multiplizieren. 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. Beispiel: Eine VM mit vier Kernen muss mindestens 7,25 GB Arbeitsspeicher und höchstens 26 GB Arbeitsspeicher 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 für die Verwendung von 2 CPUs und 8 GB Arbeitsspeicher, alle CPUs werden 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 Ihr viele Daten nach dem Zufallsprinzip verteilt, macht die Laufwerksleistung einen Unterschied. Wenn Sie Dataproc nutzen, wird empfohlen, Laufwerksgrößen von mindestens 1 TB, da die Laufwerksleistung mit der Laufwerkgröße zunimmt. Weitere Informationen Laufwerksleistung für optimale Leistung konfigurieren Anforderungen.

Anzahl der Worker

Um die Ausführungszeit zu minimieren, sollten Sie dafür sorgen, so groß ist, dass er so viel wie möglich parallel verwenden kann. Wenn Ihre Pipelinequelle beispielsweise Daten mit 100 Aufteilungen liest, muss der Cluster groß genug sein, um 100 Ausführer gleichzeitig auszuführen.

Anhand des YARN können Sie am einfachsten feststellen, ob Ihr Cluster zu groß ist. ausstehender Arbeitsspeicher im Zeitverlauf. Wenn Sie Dataproc verwenden, finden Sie ein Diagramm auf der Seite mit den Clusterdetails.

Wenn der ausstehende Speicherplatz über lange Zeiträume hoch ist können Sie die Anzahl der Worker erhöhen, zu Ihrem Cluster. 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 festlegen, dass beim Zufallsmix nur primäre Workerknoten beteiligt sein sollen. Da sekundäre Worker nicht mehr für das Zwischen-Shuffle zuständig sind dass es bei Spark-Jobs nicht zu Verzögerungen kommt, Fehler. Da primäre Worker nie herunterskaliert werden, wird der Cluster stabiler und effizienter herunterskaliert. Wenn Sie Pipelines mit Shuffles auf statische Cluster haben, wird EFM empfohlen.

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