Dataflow-Worker-VMs konfigurieren

Durch das Anpassen von Worker-VMs können Sie Rechen- und Speicherressourcen an die Arbeitsspeicher- und Verarbeitungsanforderungen Ihrer Pipeline anpassen. So können Sie die Jobleistung optimieren und die Infrastrukturkosten für ressourcenintensive Arbeitslasten verwalten.

Standardmäßig wählt Dataflow den Maschinentyp für die Worker-VMs aus, auf denen Ihr Job ausgeführt wird, sowie die Größe und den Typ des nichtflüchtigen Speichers. Wenn Sie diese Ressourcen anpassen möchten, legen Sie beim Erstellen des Jobs die folgenden Pipelineoptionen fest.

Maschinentyp

Der Compute Engine-Maschinentyp, den Dataflow beim Starten von Worker-VMs verwendet. Sie können x86- oder Arm-Maschinentypen verwenden, einschließlich benutzerdefinierter Maschinentypen.

Java

Legen Sie die Pipelineoption workerMachineType fest.

Python

Legen Sie die Pipelineoption machine_type fest.

Go

Legen Sie die Pipelineoption worker_machine_type fest.

  • Für Arm werden die Maschinenreihen Tau T2A und C4A unterstützt. Weitere Informationen zur Verwendung von Arm-VMs finden Sie unter Arm-VMs in Dataflow verwenden.

  • x86-VMs werden automatisch unterstützt.

  • Maschinentypen mit gemeinsam genutztem Kern (z. B. f1-micro, g1-small, e2-micro, e2-small und e2-medium) werden für Dataflow-Jobs nicht empfohlen und im Rahmen des Dataflow-Service-Level-Agreements nicht unterstützt.

  • Die Abrechnung erfolgt unabhängig von der Maschinentypfamilie. Weitere Informationen finden Sie unter Dataflow – Preise.

  • Für die Maschinentypen f1-micro und g1-small wird Dataflow so abgerechnet, als hätten sie 1 vCPU, und für die Maschinentypen e2-micro, e2-small und e2-medium wird Dataflow so abgerechnet, als hätten sie 2 vCPUs. Diese Raten werden auch dann in Rechnung gestellt, wenn Maschinentypen mit gemeinsam genutztem Kern weniger als die in Rechnung gestellten vCPUs an kontinuierlicher CPU-Zeit bieten.

Benutzerdefinierte Maschinentypen

Geben Sie benutzerdefinierte Maschinentypen im folgenden Format an: FAMILY-vCPU-MEMORY. Ersetzen Sie Folgendes:

  • FAMILY: Verwenden Sie einen der folgenden Werte:
    MaschinenserieWert
    N1custom
    N2n2-custom
    N2Dn2d-custom
    E2e2-custom
  • vCPU: die Anzahl der vCPUs.
  • MEMORY: Der Arbeitsspeicher in MB.

Um erweiterten Speicher zu aktivieren, hängen Sie -ext an den Maschinentyp an. Beispiele: n2-custom-6-3072, n2-custom-2-32768-ext.

Weitere Informationen zu gültigen benutzerdefinierten Maschinentypen finden Sie in der Compute Engine-Dokumentation unter Benutzerdefinierte Maschinentypen.

Nicht unterstützte Maschinentypen für Hyperdisk Balanced

Wenn Sie Hyperdisk Balanced-Laufwerke verwenden, kann Ihr Job mit einem Fehler ähnlich dem folgenden fehlschlagen:

hyperdisk-balanced disk type cannot be used by MACHINE_TYPE machine type

Dies geschieht, wenn Sie einen Maschinentyp auswählen, der nicht mit Hyperdisk Balanced kompatibel ist. Dieser Fehler kann auch auftreten, wenn kein Maschinentyp angegeben ist oder wenn Sie „autoVM“ verwenden. Eine Liste der mit Hyperdisk Balanced kompatiblen Maschinentypen finden Sie unter Hyperdisk Balanced.

Laufwerkstyp

Der Typ des nichtflüchtigen Speichers, der verwendet werden soll.

Geben Sie keinen nichtflüchtigen Speicher an, wenn Sie entweder Streaming Engine oder den N4-Maschinentyp verwenden.

Java

Legen Sie die Pipelineoption workerDiskType fest.

Python

Legen Sie die Pipelineoption worker_disk_type fest.

Go

Legen Sie die Pipelineoption disk_type fest.

Geben Sie den Laufwerkstyp im folgenden Format an: compute.googleapis.com/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE.

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Projekt-ID.
  • ZONE: die Zone für den nichtflüchtigen Speicher, z. B. us-central1-b
  • DISK_TYPE: der Laufwerkstyp, z. B. pd-ssd, pd-standard oder hyperdisk-balanced

Weitere Informationen finden Sie in der Compute Engine API-Referenzseite für diskTypes.

IOPS und Durchsatz bereitstellen

Wenn Sie Hyperdisk Balanced-Laufwerke verwenden, können Sie IOPS und Durchsatz unabhängig von der Laufwerkgröße bereitstellen. Verwenden Sie die folgenden Pipelineoptionen, um IOPS und Durchsatz bereitzustellen:

Java

  • Um IOPS bereitzustellen, legen Sie die Pipelineoption diskProvisionedIOPS fest.
  • Wenn Sie den Durchsatz in MiB/s bereitstellen möchten, legen Sie die Pipelineoption diskProvisionedThroughput fest.

Python

  • Um IOPS bereitzustellen, legen Sie die Pipelineoption disk_provisioned_iops fest.
  • Wenn Sie den Durchsatz in MiB/s bereitstellen möchten, legen Sie die Pipelineoption disk_provisioned_throughput_mibps fest.

Go

  • Um IOPS bereitzustellen, legen Sie die Pipelineoption disk_provisioned_iops fest.
  • Wenn Sie den Durchsatz in MiB/s bereitstellen möchten, legen Sie die Pipelineoption disk_provisioned_throughput_mibps fest.

Wenn Sie diese Optionen nicht festlegen, wird für Jobs, die hyperdisk-balanced-Laufwerke verwenden, standardmäßig die Baseline-Leistung von 3.000 IOPS und 140 MiB/s Durchsatz verwendet. Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Informationen zu Hyperdisk Balanced.

Beschränkungen

  • Die Bereitstellung von IOPS und Durchsatz für Hyperdisk Balanced wird in Apache Beam SDK-Versionen 2.74.0 oder höher unterstützt.

Laufwerksgröße

Die Größe des nichtflüchtigen Speichers.

Java

Legen Sie die Pipelineoption diskSizeGb fest.

Python

Legen Sie die Pipelineoption disk_size_gb fest.

Go

Legen Sie die Pipelineoption disk_size_gb fest.

Wenn Sie diese Option festlegen, geben Sie mindestens 30 GB an, um das Worker-Boot-Image und lokale Logs zu berücksichtigen.

Wenn Sie die Laufwerksgröße verringern, wird die verfügbare Shuffle-E/A reduziert. Bei Shuffle-gebundenen Jobs, die Dataflow Shuffle oder Streaming Engine nicht verwenden, kann es zu einer längeren Laufzeit und höheren Jobkosten kommen.

Batchjobs

Für Batchjobs mit Dataflow Shuffle wird mit dieser Option die Größe eines Worker-VM-Bootlaufwerks festgelegt. Bei Batchjobs, die Dataflow Shuffle nicht verwenden, wird mit dieser Option die Größe der Laufwerke festgelegt, die zum Speichern von Shuffle-Daten verwendet werden. Die Größe des Bootlaufwerks ist davon nicht betroffen.

Wenn ein Batchjob Dataflow Shuffle verwendet, beträgt die Standardlaufwerkgröße 25 GB. Andernfalls beträgt der Standardwert 250 GB.

Streamingjobs

Für Streamingjobs mit Streaming Engine wird mit dieser Option die Größe der Bootlaufwerke festgelegt. Bei Streamingjobs ohne Streaming Engine wird mit dieser Option die Größe jedes zusätzlichen nichtflüchtigen Speichers festgelegt, der vom Dataflow-Dienst erstellt wird. Das Bootlaufwerk ist davon nicht betroffen.

Wenn ein Streamingjob Streaming Engine nicht verwendet, können Sie die Größe des Bootlaufwerks mit dem Testflag streaming_boot_disk_size_gb festlegen. Geben Sie beispielsweise --experiments=streaming_boot_disk_size_gb=80 an, um Bootlaufwerke mit 80 GB zu erstellen.

Wenn ein Streamingjob Streaming Engine verwendet, beträgt die standardmäßige Laufwerkgröße 30 GB. Andernfalls beträgt der Standardwert 400 GB.

Mindest-CPU-Plattform

Wenn Sie leistungsempfindliche Arbeitslasten haben, die von bestimmten CPU-Funktionen abhängen, können Sie eine Mindest-CPU-Plattform für Worker-VMs angeben. Mit dieser Option wird dafür gesorgt, dass Dataflow-Worker einen Prozessor verwenden, der die angegebene CPU-Generation erfüllt oder übertrifft.

Um die Mindest-CPU-Plattform anzugeben, legen Sie die min_cpu_platform-Option für experimentelle Pipelines fest. Der Wert muss der genaue Name der ausgewählten CPU-Plattform sein, z. B. AMD Milan oder Intel Ice Lake. Geben Sie beispielsweise --experiments=min_cpu_platform='AMD Milan' an, um die Mindest-CPU-Plattform auf AMD Milan festzulegen. Eine Liste der unterstützten Mindestanforderungen für CPU-Plattformen finden Sie unter Verfügbarkeit von CPU-Plattformen. Informationen zu Einschränkungen finden Sie unter Einschränkungen beim Angeben einer Mindest-CPU-Plattform.

So prüfen Sie, ob die Dataflow-Worker-VMs mit der angegebenen Mindest-CPU-Plattform erstellt wurden:

  1. Rufen Sie in der Google Cloud Console die Cloud Logging Console auf.
  2. Verwenden Sie den folgenden Filter und ersetzen Sie die Beispiel-CPU-Plattform und die Dataflow-Job-ID durch die Informationen für Ihren Job.

    resource.type="gce_instance"
    protoPayload.request.minCpuPlatform="AMD Milan"
    "dataflow_job_id"
    
  3. Prüfen Sie anhand der resultierenden Logs, ob Dataflow die CPU-Mindestplattform während der VM-Erstellung erfolgreich angegeben hat.

Cloud Storage FUSE verwenden, um Ihre Cloud Storage-Buckets auf Dataflow-VMs bereitzustellen

Mit Cloud Storage FUSE können Sie Ihre Cloud Storage-Buckets direkt mit Dataflow-VMs bereitstellen. So kann Software auf Dateien zugreifen, als wären sie lokal. Durch diese Integration müssen Daten nicht vorab heruntergeladen werden, was den Datenzugriff für Ihre Arbeitslasten optimiert. Weitere Informationen finden Sie unter ML-Daten mit Dataflow und Cloud Storage FUSE verarbeiten.

Nächste Schritte