Der Dataflow-Dienst verwaltet Ressourcen in Google Cloud auf Jobbasis vollständig. Dies umfasst das Erstellen und Beenden von Compute Engine-Instanzen, die auch workers
oder VMs
genannt werden, sowie den Zugriff auf die Cloud Storage-Buckets Ihres Projekts für E/A-Vorgänge und das Staging von temporären Dateien. Wenn die Pipeline jedoch mit Google Cloud-Datenspeichertechnologien wie BigQuery und Cloud Pub/Sub interagiert, müssen Sie die Ressourcen und Kontingente für diese Dienste verwalten.
Dataflow verwendet einen vom Nutzer bereitgestellten Standort in Cloud Storage speziell für das Staging von Dateien. Sie können diesen Speicherort steuern und sollten sicherstellen, dass er so lange erhalten bleibt, wie Jobs daraus lesen. Sie können einen Staging-Speicherort für mehrere Jobausführungen verwenden, da das SDK-interne Caching die Startzeit der Jobs verkürzen kann.
Jobs
Sie können bis zu 25 gleichzeitige Dataflow-Jobs pro Google Cloud-Projekt ausführen. Diese Beschränkung kann jedoch aufgehoben werden, indem Sie den Google Cloud-Support kontaktieren. Weitere Informationen finden Sie unter Kontingente.
Der Dataflow-Dienst ist derzeit auf die Verarbeitung von JSON-Jobanfragen mit maximal 20 MB beschränkt. Die Größe der Jobanfrage ist mit der JSON-Repräsentation der Pipeline verbunden. Eine größere Pipeline führt zu einer größeren Anfrage.
Führen Sie die Pipeline zum Schätzen der Größe der JSON-Anfrage mit der folgenden Option aus:
Java
--dataflowJobFile=<path to output file>
Python
--dataflow_job_file=<path to output file>
Einfach loslegen (Go)
Das Schätzen der Größe der JSON-Nutzlast eines Jobs mit einem Flag wird derzeit in Go nicht unterstützt.
Mit diesem Befehl wird eine JSON-Darstellung des Jobs in eine Datei geschrieben. Die Größe der Anfrage kann anhand der Größe der serialisierten Datei geschätzt werden. Aufgrund von zusätzlichen Informationen in der Anfrage ist die tatsächliche Datei etwas größer.
Weitere Informationen finden Sie auf der Seite zur Fehlerbehebung unter 413 Anfrageentität zu groß/Die Größe der serialisierten JSON-Darstellung der Pipeline überschreitet das zulässige Limit.
Die Grafikgröße Ihres Jobs darf 10 MB außerdem nicht überschreiten. Weitere Informationen finden Sie auf der Seite zur Fehlerbehebung unter "Die Jobgrafik ist zu groß. Versuchen Sie es mit einer kleineren Jobgrafik noch einmal oder teilen Sie den Job in zwei oder mehr kleinere Jobs auf."
Worker
Der Dataflow-Dienst erlaubt aktuell maximal 1.000 Compute Engine-Instanzen pro Job. Bei Batchjobs ist der Standardmaschinentyp n1-standard-1
. Bei Streamingjobs ist der Standardmaschinentyp für Streaming Engine-fähige Jobs n1-standard-2
und der Standardmaschinentyp für nicht-Streaming Engine-fähige Jobs n1-standard-4
. Daher kann der Dataflow-Dienst beim Verwenden der Standardmaschinentypen pro Job bis zu 4.000 Kerne zuweisen. Wenn Sie für Ihren Job mehr Kerne benötigen, können Sie einen größeren Maschinentyp auswählen.
Sie sollten die verwaltete Instanzgruppe für Compute Engine nicht manuell verwalten oder direkt damit interagieren. Dies übernimmt der Dataflow-Dienst für Sie. Mit dem Dataflow-Job verbundene Compute Engine-Ressourcen können nicht manuell geändert werden.
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.
Verwenden Sie einen benutzerdefinierten Maschinentyp mit erweitertem Speicher, um zusätzlichen Speicher pro Worker-Thread zuzuweisen. Beispiel: custom-2-15360-ext
ist ein n1
-Maschinentyp mit 2 CPUs und 15 GB Arbeitsspeicher. Dataflow berücksichtigt die Anzahl der CPUs in einer Maschine, um die Anzahl der Worker-Threads pro Worker-VM zu ermitteln. Wenn Ihre Pipeline speicherintensiven Aufgaben verarbeitet, kann ein benutzerdefinierter Maschinentyp mit erweitertem Speicher mehr Speicher pro Worker-Thread bereitstellen. Weitere Informationen finden Sie unter Benutzerdefinierte VM-Instanz erstellen.
In Dataflow wird nach der Anzahl der vCPUs und der Größe des Arbeitsspeichers (in GB) der Worker abgerechnet. Die Abrechnung erfolgt unabhängig von der Maschinentypfamilie. Sie können beim Erstellen der Pipeline einen Maschinentyp für die Pipeline angeben, indem Sie den entsprechenden Ausführungsparameter festlegen.
Java
Nutzen Sie zum Ändern des Maschinentyps die Option --workerMachineType
.
Python
Nutzen Sie zum Ändern des Maschinentyps die Option --worker_machine_type
.
Go
Nutzen Sie zum Ändern des Maschinentyps die Option ‑‑worker_machine_type
.
Ressourcenkontingent
Der Dataflow-Dienst prüft, ob das Compute Engine-Ressourcenkontingent Ihres Google Cloud-Projekts zur Ausführung des Jobs ausreicht, um den Job zu starten und auf die maximale Anzahl von Worker-Instanzen zu skalieren. Ohne ein ausreichendes Ressourcenkontingent kann der Job nicht gestartet werden.
Wenn der Dataflow-Job virtuelle Compute Engine-Maschinen als verwaltete Instanzgruppe bereitstellt, vergewissern Sie sich, dass das Projekt bestimmte zusätzliche Kontingentanforderungen erfüllt. Speziell für jeden gleichzeitig auszuführenden Dataflow-Job ist einer der folgenden Kontingenttypen erforderlich:
- Eine Instanzgruppe pro Job
- Eine verwaltete Instanzgruppe pro Job
- Eine Instanzvorlage pro Job
Achtung: Sie sollten und können die Instanzvorlage oder die verwaltete Instanzgruppe des Dataflow-Jobs nicht manuell ändern. Verwenden Sie stattdessen die Optionen für die Pipeline-Konfiguration von Dataflow.
Das Feature für horizontales Autoscaling von Dataflow ist auf das für Ihr Projekt verfügbare Compute Engine-Kontingent beschränkt. Wenn der Job beim Start über ein ausreichendes Kontingent verfügt, aber ein anderer Job das restliche verfügbare Kontingent des Projekts verwendet, kann der erste Job zwar ausgeführt, aber nicht vollständig skaliert werden.
Der Dataflow-Dienst verwaltet jedoch keine Kontingenterhöhungen für Jobs, die das Ressourcenkontingent des Projekts übersteigen. Es liegt in Ihrer Verantwortung, jegliche zusätzlich erforderlichen Ressourcenkontingente anzufordern. Sie können hierfür die Google Cloud Console verwenden.
IP-Adressen
Standardmäßig weist Dataflow Worker öffentliche und private IP-Adressen zu. Eine öffentliche IP-Adresse erfüllt eines der Kriterien für den Internetzugriff, aber eine öffentliche IP-Adresse wird auch auf Ihr Kontingent an externen IP-Adressen angerechnet.
Wenn Ihre Worker-VMs keinen Zugriff auf das öffentliche Internet benötigen, sollten Sie nur interne IP-Adressen verwenden. Diese werden nicht auf Ihr externes Kontingent angerechnet. Weitere Informationen zum Konfigurieren von IP-Adressen finden Sie in den folgenden Ressourcen:
Inaktive Worker
Wenn die Worker eines bestimmten Jobs über einen Zeitraum von einer Stunde nicht genügend Aktivität zeigen, schlägt der Job fehl. Inaktivität von Workern kann aus Problemen mit dem Abhängigkeitsmanagement resultieren. Wenn ein Worker beispielsweise bei der Installation von Abhängigkeiten für ein benutzerdefiniertes Container-Image auf ein Problem stößt, kann der Worker möglicherweise nicht starten oder macht keinen Fortschritt. Der fehlende Fortschritt kann dazu führen, dass der Job fehlschlägt. Weitere Informationen erhalten Sie unter:
- Fehlerbehebung bei benutzerdefinierten Containern in Dataflow
- Fehler beim Synchronisieren des Pods ... „StartContainer“ konnte nicht ausgeführt werden
Nichtflüchtige Speicherressourcen
Der Dataflow-Dienst ist derzeit zum Ausführen eines Streamingjobs pro Worker-Instanz auf 15 nichtflüchtige Speicher beschränkt. Jeder nichtflüchtige Speicher ist lokal einer einzelnen virtuellen Compute Engine-Maschine zugeordnet. Der Job kann nicht mehr Worker als nichtflüchtige Speicher haben. Die Mindestzuweisung sieht ein Verhältnis von 1:1 zwischen Workern und Laufwerken vor.
Für Jobs, die Streaming Engine verwenden, werden 30 GB-Bootlaufwerke verwendet. Für Jobs, die Dataflow Shuffle verwenden, werden 25 GB Bootlaufwerke verwendet. Bei Jobs, die diese Angebote nicht nutzen, beträgt die Standardgröße der nichtflüchtigen Speicher 250 GB im Batchmodus und 400 GB im Streamingmodus.
Standorte
Der Dataflow-Dienst stellt Compute Engine-Ressourcen standardmäßig in der Zone us-central1-f
der Region us-central1
bereit. Sie können diese Einstellung durch Angabe des Parameters --region
überschreiben. Wenn Sie eine bestimmte Zone für Ihre Ressourcen verwenden müssen, geben Sie beim Erstellen der Pipeline den Parameter --zone
an. Wir empfehlen jedoch, nur die Region ohne Zone anzugeben. Dadurch kann der Dataflow-Dienst automatisch die beste Zone innerhalb der Region anhand der bei der Joberstellungsanfrage verfügbaren Zonenkapazität auswählen. Weitere Informationen finden Sie in der Dokumentation zu Dataflow-Regionen.