Si vous devez charger des données à partir d'un sujet 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 console Google Cloud , 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 console Google Cloud .
Google Cloud produits utilisés
Le modèle Kafka vers Cloud Storage Dataflow utilise les produits payants Google Cloud suivants. Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
- Dataflow : Dataflow est un service de traitement de données entièrement géré. Le modèle Dataflow Kafka vers Cloud Storage 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 Managed Service pour Apache Kafka.
- Managed Service pour Apache Kafka : service Google Cloud qui vous aide à exécuter Apache Kafka. Fournit les données sources du 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 la tarification de 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 :
Créez un cluster et un sujet Managed Service pour Apache Kafka.
Pour créer un cluster et un sujet, vous pouvez suivre le démarrage rapide de Managed Service pour Apache Kafka.
Si votre sujet contient des enregistrements Avro, consultez Configurer le format des messages Kafka pour connaître les exigences supplémentaires en termes de ressources.
Activez les API Google Cloud suivantes :
Dataflow
Cloud Storage
gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \créer un bucket Cloud Storage ;
Pour en savoir plus sur la création d'un bucket Cloud Storage, consultez Créer un bucket.
Attribuer le rôle "Client Managed Kafka" au compte de service de nœud de calcul Dataflow
Pour associer 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. Toutes les requêtes effectuées à partir de ces VM utilisent ce compte.
Pour autoriser l'accès à vos ressources Kafka, vous devez attribuer 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 du nœud de calcul, consultez Sécurité et autorisations pour les pipelines sur Google Cloud.
Pour attribuer le rôle "Client Managed Kafka" au compte de service Dataflow, procédez comme suit :
Console
- Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Vérifiez que le projet est défini sur le projet client auquel le client Managed Service pour Apache Kafka accéderait.
- Cliquez sur Accorder l'accès.
- 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.
- Pour Attribuer des rôles, sélectionnez le rôle Client Kafka géré.
- Cliquez sur Enregistrer.
gcloud CLI
-
Dans la console Google Cloud , activez Cloud Shell.
En bas de la console Google Cloud , 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.
-
Exécutez la commande
gcloud projects add-iam-policy-binding: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 du nœud de calcul Dataflow.
-
Lancer le modèle Dataflow Kafka vers Cloud Storage
Vous pouvez lancer le modèle Kafka vers Cloud Storage Dataflow depuis la page d'informations du cluster dans la console.
-
Dans la console Google Cloud , accédez à la page Cluster.
Les clusters que vous avez créés dans un projet sont listés.
- Pour afficher la page des détails d'un cluster, cliquez sur son nom.
- Sur la page d'informations du cluster, cliquez sur Importer des données.
La page Créer un job Dataflow à partir du modèle "Kafka vers Kafka" s'ouvre.
- Dans le modèle, pour Modèle Dataflow, remplacez le modèle par Kafka vers Cloud Storage.
Configurez les champs du modèle en fonction des informations incluses dans les sections suivantes.
Saisissez un nom de job
Dans le champ Nom du job, saisissez un nom pour votre job Dataflow.
Le 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 pour minimiser les frais de transfert de données interrégionaux.
Les nœuds de calcul Dataflow peuvent s'exécuter indépendamment de la région de votre cluster Kafka. Toutefois, vous devrez payer des frais de sortie interrégionaux 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 Lister vos clusters Managed Service pour Apache Kafka.
Configurer la source
Pour Source, conservez la valeur par défaut Managed Service pour Apache Kafka.
Pour Cluster Kafka et Mode d'authentification de la source Kafka, conservez les valeurs par défaut.
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 formats de message suivants :
Format filaire Avro Confluent : chaque message Kafka inclut un octet magique, un ID de schéma et l'enregistrement Avro encodé au format binaire.
Pour les formats Avro (format fil Confluent), vous pouvez utiliser un ou plusieurs schémas :
Schéma unique : tous les messages respectent un schéma Avro prédéfini unique.
Schémas multiples : les messages peuvent utiliser différents schémas. Cette option n'est disponible que pour le format Avro (format filaire Confluent).
Avro (codé au format 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 respectent pas le schéma sont envoyés à la file d'attente des messages non distribuables (si elle est configurée) ou un message d'erreur est consigné. Le format accepté est le format
{"field": "value"}. Le format[{"name": "field", "value": "value"}]n'est pas accepté.
Managed Service pour Apache Kafka ne propose pas de registre de schémas. Le modèle n'accepte que le transfert d'identifiants d'authentification aux registres de schémas compatibles avec le format Confluent-wire.
Format filaire Avro Confluent
Si vous sélectionnez 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. Cela 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 à un ou plusieurs schémas. Configurez les paramètres supplémentaires suivants :
URL de connexion au registre de schémas : indiquez l'URL permettant de 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 schéma unique et 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 sélectionnez 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
Pour éviter de retraiter les messages lorsque des workers individuels ou l'ensemble du pipeline doivent être redémarrés, sélectionnez l'option Valider les décalages dans Kafka. Cela garantit que votre pipeline reprend le traitement là où il s'est arrêté, ce qui évite le traitement en double et d'éventuelles incohérences dans les données.
Dans le champ Saisissez 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 puisse être redémarré.
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 :
Earliest (Le plus ancien) : traite les messages depuis le début du sujet Kafka.
Dernier : traite les messages à partir du dernier décalage disponible.
Configurer la destination
Ces options contrôlent la façon dont votre pipeline de données écrit les données dans Cloud Storage.
Dans le champ Destination, saisissez le chemin d'accès au bucket et incluez le préfixe du nom de fichier pour vos fichiers de sortie. Le préfixe du fichier doit se terminer par une barre oblique. Exemple :
gs://test-bucket/test-prefix/.Pour Durée de la fenêtre, saisissez la période pendant laquelle les données seront écrites dans Cloud Storage. Choisissez le format approprié (
Nspour les secondes,Nmpour les minutes,Nhpour les heures) en fonction de vos besoins de traitement des données.Pour Préfixe du nom de fichier des fichiers à écrire, vous pouvez fournir un préfixe à ajouter à chaque fichier de sortie pour une meilleure organisation et identification.
Définissez le nombre maximal de partitions de sortie sur zéro. Vous pouvez spécifier le nombre de partitions à générer lors de l'écriture de fichiers. Augmenter ce nombre peut permettre d'obtenir un débit plus élevé, mais cela entraîne également une augmentation des coûts en raison de coûts de mélange plus élevés. Le service sélectionne un nombre optimal lorsque vous le définissez sur zéro.
Configurer la file d'attente de lettres mortes
Il arrive que des messages ne puissent pas être traités en raison d'une corruption, de types de données incompatibles ou d'incohérences de schéma.
Pour gérer ces cas, activez la file d'attente des messages non distribués dans le modèle et indiquez 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 unGoogle-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 savoir comment configurer une clé CMEK, consultez 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 des 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 la 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 Paramètres facultatifs.
Surveillance
Le modèle Dataflow 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 de 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 de job qui surveille les éléments suivants :
Débit : volume de données traitées à tout moment. Cela est utile pour surveiller le flux de données dans votre job et identifier les problèmes de performances potentiels.
Pour en savoir plus, consultez 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 fréquentes tentatives.
Pour en savoir plus, consultez Surveillance de la fraîcheur des données Dataflow.
Backlog : 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 :
Résolvez les problèmes liés aux pipelines de traitement en flux continu lents ou bloqués.
Résoudre les problèmes liés aux retardataires dans les pipelines
Pour obtenir un aperçu général du débogage des pipelines Dataflow, consultez Dépanner 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 projet Google Cloud est défini sur le même projet que celui contenant le cluster Managed Service pour Apache Kafka.