Das richtige Feature verwendet Apache Beam-Ressourcenhinweise, um Worker-Ressourcen für eine Pipeline anzupassen. Die Möglichkeit, Ressourcen auf bestimmte Pipelineschritte anzuwenden, bietet zusätzliche Pipelineflexibilität und -funktionen sowie potenzielle Kosteneinsparungen. Sie können teurere Ressourcen auf Pipelineschritte anwenden, die sie benötigen, und weniger teure Ressourcen auf andere Pipelineschritte. Verwenden Sie die richtige Anpassung, um Ressourcenanforderungen für eine gesamte Pipeline oder für bestimmte Pipelineschritte anzugeben.
Unterstützung und Einschränkungen
- Ressourcenhinweise werden mit den Apache Beam Java SDK und Python SDK Version 2.31.0 und höher unterstützt.
- Right Fitting wird bei Batchpipelines unterstützt. Streamingpipelines werden nicht unterstützt.
- Right Fitting unterstützt Dataflow Prime.
- Right Fitting unterstützt nicht FlexRS.
- Wenn Sie die richtige Anpassung verwenden, verwenden Sie nicht die Dienstoption
worker_accelerator
.
Richtige Anpassung aktivieren
Verwenden Sie einen oder mehrere verfügbare Ressourcenhinweise in Ihrer Pipeline, um die richtige Anpassung zu aktivieren. Wenn Sie in Ihrer Pipeline einen Ressourcenhinweis verwenden, wird die korrekte Anpassung automatisch aktiviert. Weitere Informationen finden Sie im Abschnitt Ressourcenhinweise verwenden in diesem Dokument.
Verfügbare Ressourcenhinweise
Die folgenden Ressourcenhinweise sind verfügbar:
Ressourcenhinweis | Beschreibung |
---|---|
min_ram |
Die Mindestmenge an RAM in Gigabyte, die Workern zugewiesen werden soll. Dataflow verwendet diesen Wert als Untergrenze, wenn neuen Workern (horizontale Skalierung) oder vorhandenen Workern (vertikale Skalierung) Arbeitsspeicher zugewiesen wird. Beispiel: min_ram=NUMBERGB
|
accelerator |
Eine vom Nutzer bereitgestellte Zuweisung von GPUs, mit der Sie die Nutzung und Kosten von GPUs in Ihrer Pipeline und deren Schritten steuern können. Geben Sie den Typ und die Anzahl der GPUs an, die an Dataflow-Worker als Parameter für das Flag angehängt werden sollen. Beispiel: accelerator="type:GPU_TYPE;count:GPU_COUNT;machine_type:MACHINE_TYPE;CONFIGURATION_OPTIONS"
Weitere Informationen zur Verwendung von GPUs finden Sie unter GPUs mit Dataflow. |
Verschachtelung von Ressourcenhinweisen
Ressourcenhinweise werden so auf die Pipeline-Transformationshierarchie angewendet:
min_ram
: Der Wert einer Transformation wird als der größtemin_ram
-Hinweiswert unter den Werten ausgewertet, die für die Transformation selbst und alle übergeordneten Elemente in der Transformationshierarchie festgelegt sind.- Beispiel: Wenn ein Hinweis zur inneren Transformation
min_ram
auf 16 GB und der Hinweis zur äußeren Transformation in der Hierarchiemin_ram
auf 32 GB festlegt, wird ein Hinweis von 32 GB für alle Schritte in der gesamten Transformation verwendet. - Beispiel: Wenn ein Hinweis zur inneren Transformation
min_ram
auf 16 GB und der Hinweis zur äußeren Transformation in der Hierarchiemin_ram
auf 8 GB festlegt, wird für alle Schritte in der äußeren Transformation ein Hinweis von 8 GB verwendet, die nicht in der inneren Transformation sind, und für alle Schritte in der inneren Transformation wird ein 16-GB-Hinweis verwendet.
- Beispiel: Wenn ein Hinweis zur inneren Transformation
accelerator
: Der innerste Wert in der Hierarchie der Transformation hat Vorrang.- Wenn sich beispielsweise ein Hinweis
accelerator
zur inneren Transformation von dem Hinweisaccelerator
zur äußeren Transformation in einer Hierarchie unterscheidet, wird der Hinweisaccelerator
zur inneren Transformation für die innere Transformation verwendet.
- Wenn sich beispielsweise ein Hinweis
Pipelinehinweise: Hinweise, die für die gesamte Pipeline festgelegt werden, werden so behandelt, als wären sie für eine separate äußerste Transformation festgelegt.
Ressourcenhinweise verwenden
Sie können Ressourcenhinweise für die gesamte Pipeline oder für Pipelineschritte festlegen.
Ressourcenhinweise für Pipelines
Ressourcenhinweise lassen sich für die gesamte Pipeline festlegen, wenn Sie die Pipeline über die Befehlszeile ausführen.
Informationen zum Einrichten Ihrer Python-Umgebung finden Sie in der Python-Kurzanleitung.
Beispiel:
python my_pipeline.py \
--runner=DataflowRunner \
--resource_hints=min_ram=numberGB \
--resource_hints=accelerator="type:type;count:number;install-nvidia-driver" \
...
Ressourcenhinweise für Pipelineschritte
Sie können Ressourcenhinweise für Pipelineschritte (Transformationen) programmatisch festlegen.
Java
Informationen zum Installieren des Apache Beam SDK für Java finden Sie unter Apache Beam SDK installieren.
Mit der Klasse ResourceHints
können Sie Ressourcenhinweise programmatisch für Pipelinetransformationen festlegen.
Das folgende Beispiel zeigt, wie Ressourcenhinweise programmatisch für Pipelinetransformationen festgelegt werden.
pcoll.apply(MyCompositeTransform.of(...)
.setResourceHints(
ResourceHints.create()
.withMinRam("15GB")
.withAccelerator(
"type:nvidia-tesla-l4;count:1;install-nvidia-driver")))
pcoll.apply(ParDo.of(new BigMemFn())
.setResourceHints(
ResourceHints.create().withMinRam("30GB")))
Verwenden Sie die ResourceHintsOptions
-Oberfläche, um Ressourcenhinweise für die gesamte Pipeline programmatisch festzulegen.
Python
Informationen zum Installieren des Apache Beam SDK für Python finden Sie unter Apache Beam SDK installieren.
Mit der Klasse PTransforms.with_resource_hints
können Sie Ressourcenhinweise programmatisch für Pipelinetransformationen festlegen.
Weitere Informationen finden Sie im Artikel zur Klasse ResourceHint
.
Das folgende Beispiel zeigt, wie Ressourcenhinweise programmatisch für Pipelinetransformationen festgelegt werden.
pcoll | MyPTransform().with_resource_hints(
min_ram="4GB",
accelerator="type:nvidia-tesla-l4;count:1;install-nvidia-driver")
pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
min_ram="30GB")
Wenn Sie Ressourcenhinweise für die gesamte Pipeline festlegen möchten, verwenden Sie beim Ausführen der Pipeline die Pipelineoption --resource_hints
. Ein Beispiel finden Sie unter Ressourcenhinweise für Pipeline.
Go
Ressourcenhinweise werden in Go nicht unterstützt.
Richtige Anpassung und Zusammenführung
In einigen Fällen können im Rahmen der Zusammenführungsoptimierung Transformationen mit verschiedenen Ressourcenhinweisen auf Workern im selben Worker-Pool ausgeführt werden. Wenn Transformationen zusammengeführt werden, führt Dataflow sie in einer Umgebung aus, die die Vereinigung der auf den Transformationen festgelegten Ressourcenhinweise erfüllt.
Wenn Ressourcenhinweise nicht zusammengeführt werden können, erfolgt keine Zusammenführung. Beispielsweise können Ressourcenhinweise für verschiedene GPUs nicht zusammengeführt werden, sodass diese Transformationen nicht zusammengeführt werden.
Sie können die Zusammenführung auch verhindern, indem Sie Ihrer Pipeline einen Vorgang hinzufügen, der Dataflow zwingt, eine zwischengeschaltete PCollection
zu realisieren. Weitere Informationen finden Sie unter Zusammenführung verhindern.
Fehler bei der richtigen Anpassung beheben
In diesem Abschnitt finden Sie eine Anleitung zur Behebung häufiger Probleme im Zusammenhang mit der richtigen Anpassung.
Ungültige Konfiguration
Wenn Sie versuchen, die richtige Anpassung zu verwenden, tritt der folgende Fehler auf:
Workflow failed. Causes: One or more operations had an error: 'operation-OPERATION_ID':
[UNSUPPORTED_OPERATION] 'NUMBER vCpus with NUMBER MiB memory is
an invalid configuration for NUMBER count of 'GPU_TYPE' in family 'MACHINE_TYPE'.'.
Dieser Fehler tritt auf, wenn der ausgewählte GPU-Typ nicht mit dem ausgewählten Maschinentyp kompatibel ist. Wählen Sie einen kompatiblen GPU-Typ und Maschinentyp aus, um diesen Fehler zu beheben. Weitere Informationen zur Kompatibilität finden Sie unter GPU-Plattformen.