Accéder aux données Kafka dans Cloud Storage

Si vous devez charger des données d'un sujet Google Cloud Managed Service pour Apache Kafka dans un bucket Cloud Storage, vous pouvez le faire à l'aide d'un modèle Dataflow. Vous pouvez utiliser la Google Cloud console, l'API REST ou la Google Cloud CLI.

Ce document vous aide à configurer le modèle Kafka vers Cloud Storage Dataflow à l'aide de la Google Cloud console.

Google Cloud Produits utilisés

Le modèle Kafka vers Cloud Storage Dataflow utilise les produits payants suivants Google Cloud . Utilisez le Simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.

  • Dataflow : Dataflow est un service de traitement de données entièrement géré. Le modèle Kafka vers Cloud Storage Dataflow utilise Dataflow pour créer un pipeline qui lit les données de votre sujet Kafka, effectue les transformations nécessaires et les écrit dans Cloud Storage. Les fonctionnalités d'autoscaling et d'autoréparation de Dataflow garantissent que votre pipeline s'exécute de manière fiable et efficace.
  • Cloud Storage : sert de destination pour vos données Kafka. Vous aurez besoin d'un bucket Cloud Storage pour stocker les données transférées par le pipeline Dataflow.

La solution utilise également Google Cloud Managed Service pour Apache Kafka.

  • Google Cloud Managed Service pour Apache Kafka : un Google Cloud service qui vous aide à exécuter Apache Kafka. Fournit les données sources pour le pipeline. Vous aurez besoin d'un cluster et d'un sujet Managed Service pour Apache Kafka existants contenant les données que vous souhaitez transférer vers Cloud Storage. Pour en savoir plus sur les tarifs de Google Cloud Managed Service pour Apache Kafka, consultez le guide des tarifs.

Avant de commencer

Avant de lancer votre modèle Kafka vers Cloud Storage Dataflow, assurez-vous d'avoir effectué les opérations suivantes :

  1. Créez un cluster et un sujet Managed Service pour Apache Kafka.

    Pour créer un cluster et un sujet, vous pouvez suivre le guide de démarrage rapide de Managed Service pour Apache Kafka.

    Si votre sujet contient des enregistrements Avro, consultez la section Spécifier le format des messages pour connaître les exigences supplémentaires en matière de ressources.

  2. Activez les Google Cloud API suivantes :

    • Dataflow

    • Cloud Storage

    gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \
    
  3. Créez un bucket Cloud Storage.

    Pour en savoir plus sur la création d'un bucket Cloud Storage, consultez la page Créer un bucket.

Accorder le rôle de client Kafka géré au compte de service de nœud de calcul Dataflow

Pour connecter votre job Dataflow à Managed Service pour Apache Kafka, vous devez accorder des autorisations spécifiques au compte de service de nœud de calcul Dataflow. Ce compte de service est l'identité utilisée pour toutes les VM de nœud de calcul de votre job Dataflow, et toutes les requêtes effectuées à partir de ces VM utilisent ce compte.

Pour autoriser l'accès à vos ressources Kafka, vous devez accorder le rôle roles/managedkafka.client au compte de service de nœud de calcul Dataflow. Ce rôle inclut l'autorisation managedkafka.clusters.connect nécessaire pour établir des connexions.

Pour en savoir plus sur le compte de service de nœud de calcul, consultez la section Sécurité et autorisations pour les pipelines sur Google Cloud.

Pour accorder le rôle de client Kafka géré au compte de service Dataflow, procédez comme suit :

Console

  1. Dans la Google Cloud console, accédez à la page IAM.
    Accéder à IAM
  2. Vérifiez que le projet est défini sur le projet consommateur auquel le client Managed Service pour Apache Kafka accédera.
  3. Cliquez sur Accorder l'accès.
  4. Sur la nouvelle page, dans Ajouter des comptes principaux, saisissez l'adresse e-mail du compte de service de nœud de calcul Dataflow que vous utilisez.
  5. Dans Attribuer des rôles, sélectionnez le rôle Client Kafka géré.
  6. Cliquez sur Enregistrer.

Gcloud CLI

  1. Dans la Google Cloud console, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la Google Cloud console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Exécutez la gcloud projects add-iam-policy-binding commande :

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/managedkafka.client

    Remplacez les éléments suivants :

    • PROJECT_ID est l'ID de projet.

    • SERVICE_ACCOUNT_EMAIL est l'adresse e-mail du compte de service de nœud de calcul Dataflow.

Lancer le modèle Kafka vers Cloud Storage Dataflow

Vous pouvez lancer le modèle Kafka vers Cloud Storage Dataflow à partir de la page des détails du cluster dans la console.

  1. Dans la Google Cloud console, accédez à la page Cluster.

    Accéder aux clusters

    Les clusters que vous avez créés dans un projet sont listés.

  2. Pour afficher la page des détails du cluster, cliquez sur le nom d'un cluster.
  3. Sur la page des détails du cluster, cliquez sur Importer des données.

    La page Créer un job Dataflow à l'aide du modèle "Kafka vers Kafka" s'ouvre.

  4. Dans le modèle, pour Modèle Dataflow, mettez à jour le modèle sur Kafka vers Cloud Storage.

Configurez les champs du modèle en fonction des informations incluses dans les sections suivantes.

Saisir un nom de job

Dans le champ Nom du job, saisissez un nom pour votre job Dataflow.

Ce nom doit être unique parmi tous les jobs en cours d'exécution dans le projet.

Choisir un point de terminaison régional pour votre pipeline

Dans le champ Point de terminaison régional, définissez le point de terminaison régional sur l'emplacement de votre cluster Kafka afin de réduire les frais de transfert de données interrégional.

Les nœuds de calcul Dataflow peuvent s'exécuter indépendamment de la région de votre cluster Kafka. Toutefois, des frais de sortie interrégionaux vous seront facturés si vous lancez des nœuds de calcul en dehors de la région de votre cluster Kafka.

Pour afficher l'emplacement du cluster, suivez les étapes décrites dans la section Lister vos clusters Managed Service pour Apache Kafka.

Configurer la source

  1. Pour Source, conservez la valeur par défaut Managed Service pour Apache Kafka.

  2. Pour Cluster Kafka et Mode d'authentification de la source Kafka, conservez les valeurs par défaut.

  3. Pour Sujet Kafka, sélectionnez un sujet dans la liste des sujets disponibles.

Configurer le format des messages Kafka

Le modèle Dataflow est compatible avec les trois formats de message suivants :

  • Format filaire Avro Confluent : chaque message Kafka inclut un octet magique, un ID de schéma et l'enregistrement encodé en binaire Avro.

    Pour les formats Avro (format filaire Confluent), vous pouvez utiliser un seul schéma ou plusieurs schémas :

    • Schéma unique : tous les messages respectent un seul schéma Avro prédéfini.

    • Plusieurs schémas : les messages peuvent utiliser différents schémas. Cette option n'est compatible qu'avec le format filaire Avro (Confluent).

  • Avro (encodé en binaire) : les messages ne contiennent que la charge utile de l'enregistrement, sans métadonnées. Vous devez fournir un fichier de schéma Avro (.avsc) importé dans Cloud Storage. Tous les messages doivent respecter ce schéma unique.

  • JSON : les enregistrements ne nécessitent pas de schéma prédéfini. Les enregistrements qui ne sont pas conformes au schéma sont envoyés à la file d'attente de lettres mortes (si elle est configurée) ou un message d'erreur est consigné. Le format compatible est {"field": "value"}. Le format [{"name": "field", "value": "value"}] n'est pas compatible.

Google Cloud Managed Service pour Apache Kafka n'offre pas de registre de schémas. Le modèle n'est compatible qu'avec la transmission d'identifiants d'authentification aux registres de schémas compatibles avec le format filaire Confluent.

Format filaire Avro Confluent

Si vous choisissez cette option comme Format de message Kafka, configurez les paramètres supplémentaires suivants :

Source du schéma : ce champ indique au pipeline où trouver le schéma. Choisissez l'une des options suivantes :

  • Registre de schémas : vos schémas sont stockés dans un registre de schémas Confluent. Cette option est utile pour faire évoluer les schémas et gérer plusieurs versions. Assurez-vous que le registre de schémas est accessible au réseau du cluster Managed Service pour Apache Kafka et qu'il est hébergé dans la même région que vos nœuds de calcul Dataflow. Vous pouvez utiliser un registre de schémas avec des scénarios à schéma unique et à plusieurs schémas. Configurez les paramètres supplémentaires suivants :

    • URL de connexion au registre de schémas : fournissez l'URL pour vous connecter à votre registre de schémas.

    • Mode d'authentification : si votre registre nécessite une authentification, sélectionnez OAuth ou TLS. Sinon, sélectionnez Aucun.

  • Fichier de schéma unique : choisissez cette option si tous vos messages suivent un seul schéma fixe défini dans un fichier.

    • Fichier Cloud Storage vers le fichier de schéma Avro : chemin d'accès au fichier de schéma Avro utilisé pour décoder tous les messages d'un sujet.

Encodage binaire Avro

Si vous choisissez cette option comme Format de message Kafka, configurez les paramètres supplémentaires suivants :

  • Fichier Cloud Storage vers le fichier de schéma Avro : chemin d'accès au fichier de schéma Avro utilisé pour décoder tous les messages d'un sujet.

JSON

Si vous choisissez cette option comme Format de message Kafka, aucune autre configuration n'est requise.

Spécifier le décalage Kafka

  1. Pour éviter de retraiter les messages lorsque des nœuds de calcul individuels ou l'ensemble du pipeline doivent être redémarrés, sélectionnez l'option Commit des décalages vers Kafka. Cela garantit que votre pipeline reprend le traitement là où il s'est arrêté, ce qui évite le traitement en double et les incohérences potentielles des données.

  2. Dans le champ Saisir l'ID du groupe de consommateurs, saisissez un nom unique pour le groupe de ce pipeline. Dans la plupart des cas, vous souhaitez que le pipeline lise chaque message une seule fois et qu'il puisse être redémarré.

  3. Pour le champ Décalage de début Kafka par défaut, le pipeline Dataflow propose deux options de décalage de début. Sélectionnez l'une des options suivantes :

    • Le plus ancien : traite les messages depuis le début du sujet Kafka.

    • Le plus récent : traite les messages à partir du dernier décalage disponible.

Configurer la destination

Ces options contrôlent la manière dont votre pipeline de données écrit les données dans Cloud Storage.

  1. Pour Destination, saisissez le chemin d'accès au bucket et incluez le préfixe de nom de fichier pour vos fichiers de sortie. Le préfixe de fichier doit se terminer par une barre oblique. Exemple : gs://test-bucket/test-prefix/

  2. Pour Durée de la fenêtre, saisissez la fenêtre temporelle pour l'écriture des données dans Cloud Storage. Choisissez le format approprié (Ns pour les secondes, Nm pour les minutes, Nh pour les heures) en fonction de vos exigences de traitement des données.

  3. Pour Préfixe de nom de fichier de sortie des fichiers à écrire, vous pouvez fournir un préfixe à ajouter à chaque fichier de sortie pour une meilleure organisation et identification.

  4. Pour Nombre maximal de fragments de sortie, définissez le nombre sur zéro. Vous pouvez spécifier le nombre de fragments à produire lors de l'écriture des fichiers. L'augmentation du nombre peut permettre d'obtenir un débit plus élevé, mais elle entraîne également une augmentation des coûts en raison de coûts de shuffle plus élevés. Le service sélectionne un nombre optimal lorsque vous définissez le nombre sur zéro.

Configurer la file d'attente de lettres mortes

Parfois, les messages ne peuvent pas être traités en raison d'une corruption, de types de données incompatibles ou d'incompatibilités de schémas.

Pour gérer ces cas, activez la file d'attente de lettres mortes dans le modèle et fournissez un nom de table. Le modèle crée la table à l'aide d'un schéma standardisé.

Configurer le chiffrement

Par défaut, toutes les données au repos et en transit sont chiffrées par une Google-owned and Google-managed encryption key. Si vous disposez de clés de chiffrement gérées par le client (CMEK), vous pouvez sélectionner vos propres clés. Pour en savoir plus sur la configuration d'une CMEK, consultez la section Configurer le chiffrement des messages.

Configurer la mise en réseau

Vous devez spécifier le réseau et le sous-réseau du cluster dans le modèle Dataflow. La section Paramètres facultatifs du modèle vous permet de définir le réseau de vos nœuds de calcul Dataflow.

Par défaut, le modèle Kafka vers Cloud Storage Dataflow provisionne les nœuds de calcul Dataflow dans le réseau par défaut de votre projet. Pour permettre à votre cluster Managed Service pour Apache Kafka d'envoyer des données à Cloud Storage via Dataflow, assurez-vous que vos nœuds de calcul Dataflow peuvent accéder au réseau de votre cluster.

Nous vous recommandons d'utiliser le réseau par défaut de votre projet pour votre cluster Kafka si celui-ci n'est pas connecté à un sous-réseau du réseau par défaut du projet.

Pour en savoir plus sur la configuration de la mise en réseau avec votre pipeline Dataflow, consultez les ressources suivantes :

Si vous rencontrez des difficultés pour configurer votre mise en réseau Dataflow, consultez le guide de dépannage de la mise en réseau Dataflow.

Configurer les paramètres Dataflow facultatifs

Ne configurez les paramètres facultatifs que si vous connaissez l'impact de la configuration sur les nœuds de calcul Dataflow. Des paramètres incorrects peuvent affecter les performances ou les coûts. Pour obtenir des explications détaillées sur chaque option, consultez la section Paramètres facultatifs.

Surveillance

Le modèle Dataflow pour Kafka vers Cloud Storage offre une expérience de surveillance qui vous permet d'explorer les journaux, les métriques et les erreurs dans la console. Cette suite d'outils de surveillance est disponible dans l'interface utilisateur Dataflow.

L'onglet Métriques du job vous permet de créer des tableaux de bord personnalisés. Pour le modèle Dataflow Kafka vers Cloud Storage , nous vous recommandons de configurer un tableau de bord Métriques du job qui surveille les éléments suivants :

  • Débit : volume de données traitées à tout moment. Cette option est utile pour surveiller le flux de données via votre job et identifier les problèmes de performances potentiels.

    Pour en savoir plus, consultez la section Surveillance du débit Dataflow.

  • Fraîcheur des données : différence en secondes entre l'horodatage de l' élément de données et le moment où l'événement est traité dans votre pipeline. Cela permet d'identifier les goulots d'étranglement des performances et des sources de données, ou les nouvelles tentatives fréquentes.

    Pour en savoir plus, consultez la section Surveillance de la fraîcheur des données Dataflow.

  • Travail en attente : quantité d'octets en attente de traitement. Ces informations éclairent les décisions d'autoscaling.

Pour en savoir plus sur la surveillance Dataflow, consultez la documentation sur la surveillance Dataflow.

Dépannage

Si vous rencontrez des problèmes de performances avec votre pipeline Dataflow, Dataflow fournit un ensemble complet d'outils de dépannage et de diagnostic.

Voici deux scénarios courants et leurs guides de dépannage respectifs :

Pour obtenir une présentation générale du débogage des pipelines Dataflow, consultez la section Résoudre les problèmes et déboguer les pipelines Dataflow.

Limitations connues

  • Le modèle n'est pas compatible avec la transmission d'identifiants pour l'authentification à votre registre de schémas.

  • Lorsque vous créez le job Dataflow Kafka vers Cloud Storage, assurez-vous que le Google Cloud projet est défini sur le même projet que celui qui contient le cluster Managed Service pour Apache Kafka.

Apache Kafka® est une marque déposée d'Apache Software Foundation ou de ses filiales aux États-Unis et/ou dans d'autres pays.

Étape suivante