Flexible Vorlagen konfigurieren

Diese Seite enthält Informationen zu den erforderlichen Dockerfile-Umgebungsvariablen und den unterstützten Pipelineparametern für flexible Vorlagen von Dataflow.

Erforderliche Dockerfile-Umgebungsvariablen festlegen

Wenn Sie eine eigene Docker-Datei für einen flexiblen Vorlagenjob erstellen möchten, müssen Sie die folgenden Umgebungsvariablen angeben:

Java

Sie müssen FLEX_TEMPLATE_JAVA_MAIN_CLASS und FLEX_TEMPLATE_JAVA_CLASSPATH im Dockerfile angeben.

Python

Geben Sie Folgendes im Dockerfile an: FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE, FLEX_TEMPLATE_PYTHON_PY_FILE, FLEX_TEMPLATE_PYTHON_PY_OPTIONS und FLEX_TEMPLATE_PYTHON_SETUP_FILE.

In der Anleitung zur Streaming in Python-Flex-Vorlage werden zum Beispiel die folgenden Umgebungsvariablen festgelegt:

ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"

Basis-Image ändern

Sie müssen ein von Google bereitgestelltes Basis-Image verwenden, um Ihre Container mit Docker zu packen. Wählen Sie den neuesten Versionsnamen aus der Referenz zu Flex-Vorlagen aus. Wählen Sie nicht latest aus.

Geben Sie das Basis-Image im folgenden Format an:

gcr.io/dataflow-templates-base/IMAGE_NAME:VERSION_NAME

Dabei gilt:

Pipelineparameter angeben

Pipelineoptionen sind Ausführungsparameter, mit denen festgelegt wird, wie und wo Dataflow-Jobs ausgeführt werden sollen. Mit dem gcloud-Befehlszeilentool können Sie die folgenden Dataflow-Pipelineoptionen für flexible Vorlagenjobs festlegen:

Java

Feld Typ Beschreibung Standardwert
gcpTempLocation String Cloud Storage-Pfad für temporäre Dateien. Muss eine gültige Cloud Storage-URL sein, die mit gs:// beginnt.
numWorkers int Die anfängliche Zahl der Google Compute Engine-Instanzen für die Ausführung Ihrer Pipeline. Diese Option legt fest, wie viele Worker der Dataflow-Dienst startet, wenn Ihr Job beginnt. Wenn keine Angabe erfolgt, ermittelt der Dataflow-Dienst die erforderliche Anzahl an Workern.
maxNumWorkers int Die maximale Zahl der Compute Engine-Instanzen, die der Pipeline während der Ausführung zur Verfügung gestellt werden. Diese kann höher als die anfängliche Worker-Anzahl (angegeben durch numWorkers) sein, damit Ihr Job automatisch oder anderweitig skaliert werden kann. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst die Zahl der Worker.
numberOfWorkerHarnessThreads int Die Anzahl der Threads pro Worker-Harness. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst eine geeignete Anzahl von Threads pro Worker.
workerRegion String

Gibt eine Compute Engine-Region an, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Diese Option wird verwendet, um Worker an einem anderen Standort als der region auszuführen, in der Jobs bereitgestellt, verwaltet und überwacht werden. Die Zone für workerRegion wird automatisch zugewiesen.

Hinweis: Diese Option kann nicht mit workerZone oder zone kombiniert werden.

Enthält standardmäßig den für region festgelegten Wert, wenn nichts anderes festgelegt wird.
workerZone String

Gibt eine Compute Engine-Zone an, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Diese Option wird verwendet, um Worker an einem anderen Standort als der region auszuführen, in der Jobs bereitgestellt, verwaltet und überwacht werden.

Hinweis: Diese Option kann nicht mit workerRegion oder zone kombiniert werden.

Wenn Sie entweder region oder workerRegion angeben, verwendet workerZone standardmäßig eine Zone aus der entsprechenden Region. Dieses Verhalten lässt sich durch Angabe einer anderen Zone überschreiben.
zone String (Verworfen) Für Apache Beam SDK 2.17.0 oder eine frühere Version wird hier die Compute Engine-Zone angegeben, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Wenn Sie region angeben, verwendet zone standardmäßig eine Zone aus der entsprechenden Region. Dieses Verhalten lässt sich durch Angabe einer anderen Zone überschreiben.
dataflowKmsKey String Gibt den vom Kunden verwalteten Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK) zum Verschlüsseln inaktiver Daten an. Sie können den Verschlüsselungsschlüssel über Cloud KMS verwalten. Sie müssen auch gcpTempLocation angeben, um dieses Feature verwenden zu können. Wenn kein Wert angegeben ist, verwendet Dataflow die standardmäßige Google Cloud-Verschlüsselung anstelle eines CMEK.
network String Das Compute Engine-Netzwerk für den Start von Compute Engine-Instanzen zum Ausführen Ihrer Pipeline. Siehe Netzwerk angeben. Wenn nichts festgelegt ist, geht Google Cloud davon aus, dass Sie ein Standardnetzwerk mit dem Namen default verwenden möchten.
subnetwork String Das Compute Engine-Subnetzwerk für den Start von Compute Engine-Instanzen zum Ausführen Ihrer Pipeline. Siehe Subnetzwerk angeben. Der Dataflow-Dienst ermittelt den Standardwert.
enableStreamingEngine boolean Gibt an, ob Streaming Engine von Dataflow aktiviert oder deaktiviert wird (true = aktiviert). Wenn Streaming Engine aktiviert wird, können die Schritte der Streamingpipeline im Dataflow-Dienst-Back-End ausgeführt und damit CPU-, Arbeitsspeicher- und nichtflüchtige Speicherressourcen eingespart werden. Der Standardwert ist false. Dies bedeutet, dass die Schritte der Streamingpipeline ausschließlich auf Worker-VMs ausgeführt werden.
serviceAccount String Legt ein vom Nutzer verwaltetes Controller-Dienstkonto fest und verwendet dafür das Format my-service-account-name@<project-id>.iam.gserviceaccount.com. Weitere Informationen finden Sie im Abschnitt Controller-Dienstkonto auf der Seite "Cloud Dataflow-Sicherheit und -Berechtigungen". Wenn nicht festgelegt, verwenden Worker das Compute Engine-Dienstkonto Ihres Projekts als Controller-Dienstkonto.
workerMachineType String

Der Compute Engine-Maschinentyp, den Dataflow beim Starten von Worker-VMs verwendet. Sie können jede der verfügbaren Compute Engine-Maschinentypfamilien sowie benutzerdefinierte Maschinentypen verwenden.

Die besten Ergebnisse erzielen Sie mit n1-Maschinentypen. Maschinentypen mit gemeinsam genutztem Kern, beispielsweise Worker der Serien f1 und g1, werden im Rahmen des Service Level Agreements von Dataflow nicht unterstützt.

Beachten Sie, dass Dataflow nach der Anzahl der vCPUs und GB Arbeitsspeicher in Workern abrechnet. Die Abrechnung erfolgt unabhängig von der Maschinentypfamilie.

Wenn Sie diese Option nicht festlegen, wählt der Dataflow-Dienst einen geeigneten Maschinentyp anhand Ihres Jobs aus.

Python

Feld Typ Beschreibung Standardwert
temp_location str Cloud Storage-Pfad für temporäre Dateien. Muss eine gültige Cloud Storage-URL sein, die mit gs:// beginnt. Enthält standardmäßig den Wert für staging_location, wenn nichts anderes festgelegt wird. Sie müssen mindestens eine der Optionen temp_location oder staging_location angeben, um Ihre Pipeline in Google Cloud auszuführen.
num_workers int Die Anzahl der Compute Engine-Instanzen, die beim Ausführen der Pipeline verwendet werden sollen. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst die Zahl der Worker.
max_num_workers int Die maximale Zahl der Compute Engine-Instanzen, die der Pipeline während der Ausführung zur Verfügung gestellt werden. Diese kann höher als die anfängliche Worker-Anzahl (angegeben durch num_workers) sein, damit Ihr Job automatisch oder anderweitig skaliert werden kann. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst die Zahl der Worker.
number_of_worker_harness_threads int Die Anzahl der Threads pro Worker-Harness. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst eine geeignete Anzahl von Threads pro Worker. Um diesen Parameter verwenden zu können, müssen Sie auch das Flag --experiments=use_runner_v2 verwenden
worker_region String

Gibt eine Compute Engine-Region an, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Diese Option wird verwendet, um Worker an einem anderen Standort als der region auszuführen, in der Jobs bereitgestellt, verwaltet und überwacht werden. Die Zone für worker_region wird automatisch zugewiesen.

Hinweis: Diese Option kann nicht mit worker_zone oder zone kombiniert werden.

Enthält standardmäßig den für region festgelegten Wert, wenn nichts anderes festgelegt wird.
worker_zone String

Gibt eine Compute Engine-Zone an, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Diese Option wird verwendet, um Worker an einem anderen Standort als der region auszuführen, in der Jobs bereitgestellt, verwaltet und überwacht werden.

Hinweis: Diese Option kann nicht mit worker_region oder zone kombiniert werden.

Wenn Sie entweder region oder worker_region angeben, verwendet worker_zone standardmäßig eine Zone aus der entsprechenden Region. Dieses Verhalten lässt sich durch Angabe einer anderen Zone überschreiben.
zone str (Verworfen) Für Apache Beam SDK 2.17.0 oder eine frühere Version wird hier die Compute Engine-Zone angegeben, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Wenn Sie region angeben, verwendet zone standardmäßig eine Zone aus der entsprechenden Region. Dieses Verhalten lässt sich durch Angabe einer anderen Zone überschreiben.
dataflow_kms_key str Gibt den vom Kunden verwalteten Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK) zum Verschlüsseln inaktiver Daten an. Sie können den Verschlüsselungsschlüssel über Cloud KMS verwalten. Sie müssen auch temp_location angeben, um dieses Feature verwenden zu können. Wenn kein Wert angegeben ist, verwendet Dataflow die standardmäßige Google Cloud-Verschlüsselung anstelle eines CMEK.
network str Das Compute Engine-Netzwerk für den Start von Compute Engine-Instanzen zum Ausführen Ihrer Pipeline. Siehe Netzwerk angeben. Wenn nichts festgelegt ist, geht Google Cloud davon aus, dass Sie ein Standardnetzwerk mit dem Namen default verwenden möchten.
subnetwork str Das Compute Engine-Subnetzwerk für den Start von Compute Engine-Instanzen zum Ausführen Ihrer Pipeline. Siehe Subnetzwerk angeben. Der Dataflow-Dienst ermittelt den Standardwert.
enable_streaming_engine bool Gibt an, ob Streaming Engine von Dataflow aktiviert oder deaktiviert wird (true = aktiviert). Wenn Streaming Engine aktiviert wird, können die Schritte der Streamingpipeline im Dataflow-Dienst-Back-End ausgeführt und damit CPU-, Arbeitsspeicher- und nichtflüchtige Speicherressourcen eingespart werden. Der Standardwert ist false. Dies bedeutet, dass die Schritte der Streamingpipeline ausschließlich auf Worker-VMs ausgeführt werden.
service_account_email str Legt ein vom Nutzer verwaltetes Controller-Dienstkonto fest und verwendet dafür das Format my-service-account-name@<project-id>.iam.gserviceaccount.com. Weitere Informationen finden Sie im Abschnitt Controller-Dienstkonto auf der Seite "Cloud Dataflow-Sicherheit und -Berechtigungen". Wenn nicht festgelegt, verwenden Worker das Compute Engine-Dienstkonto Ihres Projekts als Controller-Dienstkonto.
machine_type str

Der Compute Engine-Maschinentyp, den Dataflow beim Starten von Worker-VMs verwendet. Sie können jede der verfügbaren Compute Engine-Maschinentypfamilien sowie benutzerdefinierte Maschinentypen verwenden.

Die besten Ergebnisse erzielen Sie mit n1-Maschinentypen. Maschinentypen mit gemeinsam genutztem Kern, beispielsweise Worker der Serien f1 und g1, werden im Rahmen des Service Level Agreements von Dataflow nicht unterstützt.

Beachten Sie, dass Dataflow nach der Anzahl der vCPUs und GB Arbeitsspeicher in Workern abrechnet. Die Abrechnung erfolgt unabhängig von der Maschinentypfamilie.

Wenn Sie diese Option nicht festlegen, wählt der Dataflow-Dienst einen geeigneten Maschinentyp anhand Ihres Jobs aus.

Nächste Schritte