Dataflow Prime Right Fitting konfigurieren

Übersicht

Dataflow Prime ist eine serverlose Plattform, bei der horizontale und vertikale Skalierung zum Zuweisen von Workern und Worker-Ressourcen verwendet wird. Dabei geben Sie weder die Anzahl noch die Größe und die Form der in Ihrer Pipeline verwendeten Worker an. Zum Anpassen von Worker-Ressourcen können Sie Apache Beam-Ressourcenhinweise verwenden, um Ressourcenanforderungen für eine gesamte Pipeline oder bestimmte Pipelineschritte anzugeben. Das Dataflow Prime-Feature Right Fitting verwendet Ressourcenhinweise, um Worker-Ressourcen für die Pipeline anzupassen.

Beschränkungen und Anforderungen

In der Dataflow Prime-Vorschauphase können Ressourcenhinweise mit Apache Beam 2.30.0 oder höher verwendet werden.

Verfügbare Ressourcenhinweise

Die folgenden Ressourcenhinweise sind während der Dataflow Prime-Vorschau verfügbar:

  1. min_ram="numberGB": Die Mindestmenge an RAM in Gigabyte, die Workern zugewiesen werden soll. Dataflow Prime verwendet diesen Wert als Untergrenze, wenn neuen Workern (horizontale Skalierung) oder vorhandenen Workern (vertikale Skalierung) Arbeitsspeicher zugewiesen wird.

    • Legen Sie dafür den maximalen Wert für den Worker-Arbeitsspeicher fest, den die Pipeline oder der Pipelineschritt benötigt.
    • min_ram ist eine Zusammenfassung pro Worker, nicht pro vCPU. Wenn Sie beispielsweise min_ram=15GB festlegen, legt Dataflow den für alle vCPUs im Worker verfügbaren aggregierten Arbeitsspeicher auf mindestens 15 GB fest.
  2. accelerator="type:type;count:number;configuration-options": Der GPU-Typ, die Anzahl der GPUs und die zu verwendenden GPU-Konfigurationsoptionen (für die Verwendung von NVIDIA-GPUs mit Dataflow müssen Sie die Konfigurationsoption "install-nvidia-driver" festlegen).

Verschachtelung von Ressourcenhinweisen

Ressourcenhinweise werden so auf die Pipeline-Transformationshierarchie angewendet:

  • min_ram: Der Wert einer Transformation wird als der größte min_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 Hierarchie min_ram auf 32 GB festlegt, wird für alle Schritte in der gesamten Transformation ein Hinweis von 32 GB verwendet.
    • Beispiel: Wenn ein Hinweis zur inneren Transformation min_ram auf 16 GB und der Hinweis zur äußeren Transformation in der Hierarchie min_ram auf 8 GB festlegt, wird für alle Schritte in der äußeren Transformation, die nicht in der inneren Transformation enthalten sind, ein Hinweis von 8 GB und für alle Schritte in der inneren Transformation wird ein Hinweis von 16 GB verwendet.
  • accelerator: Der innerste Wert in der Hierarchie der Transformation hat Vorrang.
    • Wenn sich beispielsweise ein Hinweis accelerator zur inneren Transformation von dem Hinweis accelerator zur äußeren Transformation in einer Hierarchie unterscheidet, wird der Hinweis accelerator zur inneren Transformation für die innere Transformation verwendet.

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.

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

Mit ResourceHints können Sie Ressourcenhinweise programmatisch für Pipelinetransformationen festlegen.

Beispiel:

pcoll.apply(MyCompositeTransform.of(...)
    .setResourceHints(
        ResourceHints.create()
            .withMinRam("15GB")
            .withAccelerator(
     "type:nvidia-tesla-k80;count:1;install-nvidia-driver")))

pcoll.apply(ParDo.of(new BigMemFn())
    .setResourceHints(
        ResourceHints.create().withMinRam("30GB")))

Python

Sie können Ressourcenhinweise mithilfe von PTransforms.with_resource_hints programmatisch für Pipelinetransformationen festlegen (siehe auch ResourceHint).

Beispiel:

pcoll | MyPTransform().with_resource_hints(
    min_ram="4GB",
    accelerator="type:nvidia-tesla-k80;count:1;install-nvidia-driver")

pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
    min_ram="30GB")