Wenn Sie Daten aus einem Managed Service for Apache Kafka-Thema in einen Cloud Storage-Bucket laden müssen, können Sie dazu eine Dataflow-Vorlage verwenden. Sie können die Google Cloud Console, die REST API oder die Google Cloud CLI verwenden.
In diesem Dokument wird beschrieben, wie Sie die Dataflow-Vorlage für Kafka zu Cloud Storage über die Google Cloud Konsole konfigurieren.
Google Cloud Verwendete Produkte
Für die Vorlage Kafka to Cloud Storage Dataflow werden die folgenden abrechenbaren Google Cloud Produkte verwendet. Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.
- Dataflow: Dataflow ist ein vollständig verwalteter Dienst zur Datenverarbeitung. Die Vorlage Kafka to Cloud Storage Dataflow verwendet Dataflow, um eine Pipeline zu erstellen, die Daten aus Ihrem Kafka-Thema liest, alle erforderlichen Transformationen ausführt und sie in Cloud Storage schreibt. Die Autoscaling- und Self-Healing-Funktionen von Dataflow sorgen dafür, dass Ihre Pipeline zuverlässig und effizient ausgeführt wird.
- Cloud Storage: Dient als Ziel für Ihre Kafka-Daten. Sie benötigen einen Cloud Storage-Bucket, um die von der Dataflow-Pipeline übertragenen Daten zu speichern.
Außerdem wird in der Lösung auch Managed Service for Apache Kafka verwendet.
- Managed Service for Apache Kafka: Ein Google Cloud Dienst, der Sie bei der Ausführung von Apache Kafka unterstützt. Stellt die Quelldaten für die Pipeline bereit. Sie benötigen einen vorhandenen Managed Service for Apache Kafka-Cluster und ein Thema mit Daten, die Sie in Cloud Storage übertragen möchten. Weitere Informationen zu den Preisen für Managed Service for Apache Kafka finden Sie in der Preisübersicht.
Hinweis
Bevor Sie die Vorlage Kafka to Cloud Storage Dataflow starten, müssen Sie Folgendes erledigt haben:
Erstellen Sie einen Managed Service for Apache Kafka-Cluster und ein Thema.
Eine Möglichkeit, einen Cluster und ein Thema zu erstellen, ist die Kurzanleitung für Managed Service for Apache Kafka.
Wenn Ihr Thema Avro-Datensätze enthält, finden Sie zusätzliche Ressourcenanforderungen unter Kafka-Nachrichtenformat konfigurieren.
Aktivieren Sie die folgenden Google Cloud APIs:
Dataflow
Cloud Storage
gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \Cloud Storage-Bucket erstellen
Weitere Informationen zum Erstellen eines Cloud Storage-Bucket finden Sie unter Bucket erstellen.
Dem Dataflow-Worker-Dienstkonto die Rolle „Managed Kafka Client“ gewähren
Wenn Sie Ihren Dataflow-Job mit Managed Service for Apache Kafka verbinden möchten, müssen Sie dem Dataflow-Worker-Dienstkonto bestimmte Berechtigungen gewähren. Dieses Dienstkonto ist die Identität, die für alle Worker-VMs in Ihrem Dataflow-Job verwendet wird. Alle Anfragen, die von diesen VMs gesendet werden, verwenden dieses Konto.
Damit auf Ihre Kafka-Ressourcen zugegriffen werden kann, müssen Sie dem Dataflow-Worker-Dienstkonto die Rolle roles/managedkafka.client zuweisen. Diese Rolle enthält die erforderliche Berechtigung managedkafka.clusters.connect zum Herstellen von Verbindungen.
Weitere Informationen zum Worker-Dienstkonto finden Sie unter Sicherheit und Berechtigungen für Pipelines in Google Cloud.
So gewähren Sie dem Dataflow-Dienstkonto die Rolle „Managed Kafka Client“:
Console
- Rufen Sie in der Google Cloud Console die Seite IAM auf.
IAM aufrufen - Prüfen Sie, ob das Projekt auf das Nutzerprojekt festgelegt ist, auf das der Managed Service for Apache Kafka-Client zugreifen würde.
- Klicken Sie auf Zugriff erlauben.
- Geben Sie auf der neuen Seite unter Hauptkonten hinzufügen die E-Mail-Adresse des Dataflow-Worker-Dienstkontos ein, das Sie verwenden.
- Wählen Sie unter Rollen zuweisen die Rolle Managed Kafka-Client aus.
- Klicken Sie auf Speichern.
gcloud-CLI
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
-
Führen Sie den Befehl
gcloud projects add-iam-policy-bindingaus:gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role roles/managedkafka.client
Ersetzen Sie Folgendes:
-
PROJECT_ID ist die Projekt-ID.
-
SERVICE_ACCOUNT_EMAIL ist die E-Mail-Adresse des Dataflow-Worker-Dienstkontos.
-
Dataflow-Vorlage „Kafka für Cloud Storage“ starten
Sie können die Vorlage Kafka to Cloud Storage Dataflow auf der Detailseite des Clusters in der Console starten.
-
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Die Cluster, die Sie in einem Projekt erstellt haben, werden aufgelistet.
- Klicken Sie auf einen Clusternamen, um die Cluster-Detailseite aufzurufen.
- Klicken Sie auf der Seite mit den Clusterdetails auf Daten importieren.
Die Seite Dataflow-Job mit der Vorlage „Kafka zu Kafka“ erstellen wird geöffnet.
- Aktualisieren Sie in der Vorlage unter Dataflow-Vorlage die Vorlage zu Kafka zu Cloud Storage.
Konfigurieren Sie die Felder in der Vorlage anhand der Informationen in den folgenden Abschnitten.
Jobname eingeben
Geben Sie im Feld Jobname einen Namen für Ihren Dataflow-Job ein.
Der Name muss unter allen aktuell laufenden Jobs im Projekt eindeutig sein.
Regionalen Endpunkt für Ihre Pipeline auswählen
Legen Sie im Feld Regionaler Endpunkt den regionalen Endpunkt auf den Standort Ihres Kafka-Clusters fest, um gebietsübergreifende Datenübertragungsgebühren zu minimieren.
Die Dataflow-Worker können unabhängig von der Region Ihres Kafka-Clusters ausgeführt werden. Wenn Sie Worker außerhalb der Region Ihres Kafka-Clusters starten, fallen jedoch Kosten für ausgehenden Traffic zwischen Regionen an.
Wenn Sie den Standort des Clusters aufrufen möchten, folgen Sie der Anleitung unter Managed Service for Apache Kafka-Cluster auflisten.
Quelle konfigurieren
Behalten Sie für Quelle den Standardwert Managed Service for Apache Kafka bei.
Behalten Sie für Kafka-Cluster und Modus der Kafka-Quellauthentifizierung die Standardwerte bei.
Wählen Sie unter Kafka-Thema ein Thema aus der Liste der verfügbaren Themen aus.
Kafka-Nachrichtenformat konfigurieren
Die Dataflow-Vorlage unterstützt die folgenden Nachrichtenformate:
Avro Confluent-Wire-Format: Jede Kafka-Nachricht enthält ein Magic Byte, eine Schema-ID und den binärcodierten Avro-Datensatz.
Für Avro-Formate (Confluent-Wire-Format) können Sie entweder ein einzelnes Schema oder mehrere Schemas verwenden:
Einzelnes Schema: Alle Nachrichten entsprechen einem einzelnen vordefinierten Avro-Schema.
Mehrere Schemas: Für Nachrichten können verschiedene Schemas verwendet werden. Dies wird nur für das Avro-Format (Confluent-Wire-Format) unterstützt.
Avro (binär codiert): Nachrichten enthalten nur die Nutzlast des Datensatzes ohne Metadaten. Sie müssen eine Avro-Schemadatei (.avsc) angeben, die in Cloud Storage hochgeladen wurde. Alle Nachrichten müssen diesem einen Schema entsprechen.
JSON: Für Datensätze ist kein vordefiniertes Schema erforderlich. Datensätze, die nicht dem Schema entsprechen, werden an die Dead-Letter-Queue gesendet (sofern konfiguriert) oder es wird eine Fehlermeldung protokolliert. Das unterstützte Format ist
{"field": "value"}. Das Format[{"name": "field", "value": "value"}]wird nicht unterstützt.
Managed Service for Apache Kafka bietet keine Schema-Registry. Die Vorlage unterstützt nur die Übergabe von Anmeldedaten für die Authentifizierung an Schemaregister, die mit dem Confluent-Wire-Format kompatibel sind.
Avro-Confluent-Wire-Format
Wenn Sie diese Option als Kafka-Nachrichtenformat auswählen, konfigurieren Sie die folgenden zusätzlichen Einstellungen:
Schemaquelle: In diesem Feld wird angegeben, wo sich das Schema befindet. Wählen Sie eine der folgenden Optionen aus:
Schema-Registry: Ihre Schemas werden in einer Confluent-Schema-Registry gespeichert. Das ist nützlich, um Schemas weiterzuentwickeln und mehrere Versionen zu verwalten. Die Schema-Registry muss für das Netzwerk des Managed Service for Apache Kafka-Clusters zugänglich sein und in derselben Region wie Ihre Dataflow-Worker gehostet werden. Sie können eine Schemaregistrierung sowohl für Szenarien mit einem als auch mit mehreren Schemas verwenden. Konfigurieren Sie die folgenden zusätzlichen Einstellungen:
Schema-Registry-Verbindungs-URL: Geben Sie die URL an, über die eine Verbindung zu Ihrer Schema-Registry hergestellt werden soll.
Authentifizierungsmodus: Wenn für Ihre Registry eine Authentifizierung erforderlich ist, wählen Sie OAuth oder TLS aus. Wählen Sie andernfalls Keine aus.
Einzelne Schemadatei: Wählen Sie diese Option aus, wenn alle Ihre Nachrichten einem einzelnen, festen Schema folgen, das in einer Datei definiert ist.
- Cloud Storage-Datei für die Avro-Schemadatei: Der Pfad zur Avro-Schemadatei, die zum Decodieren aller Nachrichten in einem Thema verwendet wird.
Binärcodierung in Avro
Wenn Sie diese Option als Kafka-Nachrichtenformat auswählen, konfigurieren Sie die folgenden zusätzlichen Einstellungen:
- Cloud Storage-Datei für die Avro-Schemadatei: Der Pfad zur Avro-Schemadatei, die zum Decodieren aller Nachrichten in einem Thema verwendet wird.
JSON
Wenn Sie diese Option als Kafka-Nachrichtenformat auswählen, sind keine weiteren Konfigurationen erforderlich.
Kafka-Offset angeben
Wenn Sie vermeiden möchten, dass Nachrichten neu verarbeitet werden, wenn einzelne Worker oder die gesamte Pipeline neu gestartet werden müssen, wählen Sie die Option Commit offsets to Kafka (Offsets in Kafka festschreiben) aus. So wird sichergestellt, dass die Verarbeitung in Ihrer Pipeline an der Stelle fortgesetzt wird, an der sie unterbrochen wurde. Das verhindert eine doppelte Verarbeitung und potenzielle Dateninkonsistenzen.
Geben Sie im Feld Enter Consumer Group ID (Nutzergruppen-ID eingeben) einen eindeutigen Namen für die Gruppe dieser Pipeline ein. In den meisten Fällen soll die Pipeline jede Nachricht einmal lesen und neu gestartet werden können.
Für das Feld Standard-Kafka-Start-Offset bietet die Dataflow-Pipeline zwei Optionen für den Start-Offset. Entscheiden Sie sich für eine der folgenden Möglichkeiten:
Earliest: Verarbeitet Nachrichten ab dem Anfang des Kafka-Themas.
Latest: Nachrichten werden ab dem neuesten verfügbaren Offset verarbeitet.
Ziel konfigurieren
Mit diesen Optionen wird gesteuert, wie Ihre Datenpipeline Daten in Cloud Storage schreibt.
Geben Sie unter Ziel den Bucket-Pfad ein und fügen Sie das Dateinamenpräfix für Ihre Ausgabedateien hinzu. Das Dateipräfix muss mit einem Schrägstrich enden. Beispiel:
gs://test-bucket/test-prefix/Geben Sie unter Window duration (Fensterdauer) das Zeitfenster für das Schreiben von Daten in Cloud Storage ein. Wählen Sie das passende Format (
Nsfür Sekunden,Nmfür Minuten,Nhfür Stunden) entsprechend Ihren Anforderungen an die Datenverarbeitung aus.Für Präfix für Ausgabedateinamen der zu schreibenden Dateien können Sie ein Präfix angeben, das jeder Ausgabedatei hinzugefügt wird, um die Organisation und Identifizierung zu verbessern.
Legen Sie für Maximale Anzahl an Ausgabe-Shards die Zahl auf null fest. Sie können die Anzahl der Shards angeben, die beim Schreiben von Dateien erstellt werden sollen. Durch Erhöhen der Anzahl kann ein höherer Durchsatz erzielt werden, aber es führt auch zu höheren Kosten aufgrund höherer Shuffle-Kosten. Wenn Sie die Anzahl auf null setzen, wählt der Dienst eine optimale Anzahl aus.
Dead-Letter-Warteschlange konfigurieren
Manchmal können Nachrichten aufgrund von Beschädigungen, inkompatiblen Datentypen oder Schemadiskrepanzen nicht verarbeitet werden.
Um diese Fälle zu verarbeiten, aktivieren Sie die Warteschlange für unzustellbare Nachrichten in der Vorlage und geben Sie einen Tabellennamen an. Mit der Vorlage wird die Tabelle mit einem standardisierten Schema erstellt.
Verschlüsselung konfigurieren
Standardmäßig werden alle Daten im Ruhezustand und bei der Übertragung mit einerGoogle-owned and Google-managed encryption keyverschlüsselt. Wenn Sie kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) haben, können Sie Ihre eigenen Schlüssel auswählen. Weitere Informationen zum Konfigurieren eines CMEK finden Sie unter Nachrichtenverschlüsselung konfigurieren.
Netzwerk konfigurieren
Sie müssen das Netzwerk und das Subnetzwerk des Clusters in der Dataflow-Vorlage angeben. Im Abschnitt Optionale Parameter der Vorlage können Sie das Netzwerk für Ihre Dataflow-Worker definieren.
Mit der Vorlage Kafka to Cloud Storage Dataflow werden standardmäßig Dataflow-Worker im Standardnetzwerk Ihres Projekts bereitgestellt. Damit Ihr Managed Service for Apache Kafka-Cluster Daten über Dataflow an Cloud Storage senden kann, müssen Ihre Dataflow-Worker auf das Netzwerk Ihres Clusters zugreifen können.
Wenn Ihr Kafka-Cluster nicht mit einem Subnetz im Standardnetzwerk des Projekts verbunden ist, empfehlen wir, das Standardnetzwerk des Projekts für Ihren Kafka-Cluster zu verwenden.
Weitere Informationen zum Einrichten des Netzwerks für Ihre Dataflow-Pipeline finden Sie unter:
Wenn Sie Probleme bei der Konfiguration Ihres Dataflow-Netzwerks haben, lesen Sie den Leitfaden zur Fehlerbehebung bei Dataflow-Netzwerken.
Optionale Dataflow-Parameter konfigurieren
Konfigurieren Sie die optionalen Parameter nur, wenn Sie wissen, welche Auswirkungen die Konfiguration auf die Dataflow-Worker hat. Falsche Einstellungen können sich auf die Leistung oder die Kosten auswirken. Ausführliche Erläuterungen zu den einzelnen Optionen finden Sie unter Optionale Parameter.
Monitoring
Die Dataflow-Vorlage für Kafka to Cloud Storage bietet eine Monitoring-Umgebung, in der Sie Logs, Messwerte und Fehler in der Console untersuchen können. Diese Monitoring-Tools sind Teil der Dataflow-Benutzeroberfläche.
Auf dem Tab Jobmesswerte können Sie benutzerdefinierte Dashboards erstellen. Für die Dataflow-Vorlage Kafka to Cloud Storage empfehlen wir, ein Job Metrics-Dashboard einzurichten, das Folgendes überwacht:
Durchsatz: Das Datenvolumen, das zu einem bestimmten Zeitpunkt verarbeitet wird. Das ist nützlich, um den Datenfluss durch Ihren Job zu überwachen und potenzielle Leistungsprobleme zu erkennen.
Weitere Informationen finden Sie unter Dataflow-Durchsatzmonitoring.
Datenaktualität: Die Differenz in Sekunden zwischen dem Zeitstempel des Datenelements und dem Zeitpunkt, zu dem das Ereignis in Ihrer Pipeline verarbeitet wird. So lassen sich Leistungs- und Datenquellenengpässe oder häufige Wiederholungsversuche erkennen.
Weitere Informationen finden Sie unter Dataflow-Monitoring der Datenaktualität.
Rückstand: Die Menge der Byte, die auf die Verarbeitung warten. Diese Informationen werden für Autoscaling-Entscheidungen verwendet.
Weitere Informationen zum Dataflow-Monitoring finden Sie in der Dataflow-Monitoring-Dokumentation.
Fehlerbehebung
Wenn bei Ihrer Dataflow-Pipeline Leistungsprobleme auftreten, bietet Dataflow eine umfassende Reihe von Tools zur Fehlerbehebung und Diagnose.
Hier sind zwei häufige Szenarien und die entsprechenden Anleitungen zur Fehlerbehebung:
Eine allgemeine Übersicht zur Fehlerbehebung bei Dataflow-Pipelines finden Sie unter Fehlerbehebung bei Dataflow-Pipelines.
Bekannte Einschränkungen
Die Vorlage unterstützt nicht die Übergabe von Anmeldedaten für die Authentifizierung an Ihre Schemaregistrierung.
Achten Sie beim Erstellen des Dataflow-Jobs Kafka to Cloud Storage darauf, dass das Google Cloud Projekt auf dasselbe Projekt festgelegt ist, das den Managed Service for Apache Kafka-Cluster enthält.