Écrire des données Managed Service pour Apache Kafka dans BigQuery

Si vous devez charger des messages AVRO ou JSON à partir d'un sujet Managed Service pour Apache Kafka dans une table BigQuery, vous pouvez le faire à l'aide d'un modèle Dataflow. Ce document vous aide à configurer un pipeline basé sur ce modèle à l'aide de la console Google Cloud . Vous pouvez également utiliser l'API REST ou Google Cloud CLI pour configurer ce pipeline.

Google Cloud  produits utilisés

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

  • BigQuery : BigQuery est l'entrepôt de données sans serveur de Google Cloud. Dans cette solution, BigQuery sert de destination pour vos données Kafka. L'API BigQuery Streaming Write est utilisée pour écrire les données dans BigQuery. Vous pouvez ensuite utiliser BigQuery pour analyser ces données avec des requêtes SQL, créer des modèles de machine learning avec BigQuery ML et alimenter vos applications d'informatique décisionnelle.
  • Dataflow : Dataflow est un service de traitement de données entièrement géré. Le modèle Dataflow Kafka vers BigQuery 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 BigQuery. Les fonctionnalités d'autoscaling et d'autoréparation de Dataflow garantissent l'exécution fiable et efficace de votre pipeline.
  • Cloud Storage : bien qu'il ne soit pas directement impliqué dans le flux de données principal, Cloud Storage peut être utilisé pour stocker vos fichiers de schéma Avro si vous utilisez l'encodage binaire Avro pour vos messages Kafka. Cela permet au pipeline Dataflow d'interpréter correctement la structure de vos données.

La solution utilise également Managed Service pour Apache Kafka.

  • Managed Service pour Apache Kafka : service Google Cloud qui vous aide à exécuter Apache Kafka. Managed Service pour Apache Kafka vous permet de vous concentrer sur la création de systèmes basés sur les événements et de pipelines de données par flux, plutôt que sur la gestion de l'infrastructure. 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 BigQuery 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 démarrage rapide de Managed Service pour Apache Kafka.

    Si votre sujet contient des enregistrements Avro, consultez Configurer le format de message Kafka pour connaître les exigences supplémentaires en termes de ressources.

  2. Activez les API Google Cloud suivantes :

    • Dataflow

    • BigQuery

    • Cloud Storage

    gcloud services enable dataflow.googleapis.com bigquery.googleapis.com \
    storage.googleapis.com
    
  3. Créez un ensemble de données et une table BigQuery. Assurez-vous que le schéma de la table correspond à celui de votre sujet d'entrée Kafka.

    Si vous utilisez plusieurs schémas dans le même thème et que vous écrivez dans plusieurs tables, vous n'avez pas besoin de créer une table avant de configurer le pipeline.

    Pour savoir comment créer un ensemble de données et une table BigQuery, consultez Créer un ensemble de données et Créer une table vide avec une définition de schéma.

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

  1. Dans la console Google Cloud , 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éderait.
  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. Pour Attribuer des rôles, sélectionnez le rôle Client Kafka géré.
  6. Cliquez sur Enregistrer.

gcloud CLI

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

    Activer 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.

  2. 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 du projet.

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

Lancer le modèle Dataflow Kafka vers BigQuery

Vous pouvez lancer le modèle Kafka vers BigQuery Dataflow depuis la page d'informations du cluster dans la console.

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

    Accéder à Clusters

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

  2. Pour afficher la page d'informations sur un cluster, cliquez sur son nom.
  3. Sur la page d'informations du cluster, sous Thèmes, cliquez sur l'icône BigQuery Export pour n'importe quel thème.

    La page Créer une tâche Dataflow à l'aide du modèle "Kafka vers BigQuery" s'ouvre.

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 ou de l'ensemble de données BigQuery pour minimiser 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, 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.

Choisir un modèle Dataflow

Pour Modèle Dataflow, conservez la valeur par défaut Kafka vers BigQuery.

Configurer la source

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

  2. Les valeurs par défaut pour Cluster Kafka, Sujet Kafka et Mode d'authentification de la source Kafka sont déjà sélectionnées en fonction du sujet que vous avez choisi. Conservez ces valeurs.

Configurer le format des messages Kafka

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

  • Format filaire Avro Confluent : chaque message Kafka inclut un octet magique, un ID de schéma et l'enregistrement Avro encodé au format binaire. Par défaut, la clé du message n'est pas chargée dans BigQuery.

    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.

    • Plusieurs schémas : les messages peuvent utiliser différents schémas. Cette option n'est disponible que pour le format Avro (format fil 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 respectent pas le schéma de table BigQuery sont envoyés à la file d'attente de lettres mortes (si elle est configurée) ou un message d'erreur est consigné. Le format {"field": "value"} est accepté. Le format[{"name": "field", "value": "value"}]n'est pas accepté.

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.

Managed Service pour Apache Kafka ne propose pas de registre de schémas. Le modèle n'accepte que les identifiants d'authentification transmis aux registres de schémas compatibles avec le format Confluent-wire.

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 sélectionnez cette option comme format de message Kafka, aucune autre configuration n'est requise.

Configurer la persistance de la clé Kafka dans la table BigQuery

Si vous activez l'option Conserver la clé du message Kafka dans la table BigQuery, vous devez également ajouter un champ nommé _key de type BYTES dans la table cible. Bien que la clé puisse représenter des données structurées, le modèle la traite comme un tableau d'octets.

Spécifier les options de décalage

  1. 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.

  2. 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é.

  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 :

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

    • Dernier : traite les messages en commençant par le 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 BigQuery.

Le champ Stratégie de nom de table détermine la façon dont vos données sont organisées dans les tables BigQuery. Deux possibilités s'offrent à vous :

  • Nom de table unique (par défaut) : toutes les données de votre sujet Kafka sont insérées dans une seule table BigQuery. Il s'agit de l'option la plus simple et recommandée lorsque vos données Kafka ont le même schéma.

    Dans le champ Table de sortie BigQuery, spécifiez le nom de la table qui stockera toutes les données de votre sujet Kafka.

  • Noms de tables dynamiques : crée plusieurs tables BigQuery en fonction du schéma de vos messages Kafka. Nous vous recommandons cette option lorsque vos messages Kafka ont des schémas différents. Cette option ne fonctionne que si votre pipeline utilise Avro Confluent Wire ou Schema Registry pour gérer la structure des messages.

    Chaque schéma unique de vos messages Kafka obtient sa propre table dans BigQuery. Les noms de tables sont générés automatiquement en fonction des noms de schémas.

    Si vous sélectionnez Noms de tables dynamiques, configurez les champs supplémentaires suivants :

    • Projet de sortie BigQuery : projet Google Cloud dans lequel se trouve votre ensemble de données BigQuery.

    • Ensemble de données de sortie BigQuery : ensemble de données de votre projet dans lequel les tables sont créées.

    • Préfixe du nom de la table BigQuery (facultatif) : ajoutez un préfixe aux noms de tables générés automatiquement pour mieux les organiser.

Configurer l'API BigQuery Storage Write

Pour Nombre de flux pour l'API BigQuery Storage Write, commencez par 0 (valeur par défaut). Cette option permet au pipeline de déterminer automatiquement le nombre optimal de flux.

Ce paramètre contrôle le nombre de flux parallèles utilisés pour écrire des données dans BigQuery. Des valeurs plus élevées peuvent améliorer la vitesse d'écriture, en particulier pour les grands volumes de données. Le nombre optimal dépend de vos données et de la configuration BigQuery.

Configurer la fréquence de déclenchement

Pour l'option Fréquence de déclenchement en secondes pour l'API BigQuery Write, commencez par 5 secondes (valeur par défaut). Il s'agit d'un bon équilibre pour la plupart des cas d'utilisation.

Ce paramètre détermine la fréquence à laquelle les données sont écrites dans BigQuery.

Plus le nombre est faible, plus les écritures sont fréquentes. Cela peut réduire la latence, mais peut augmenter les coûts BigQuery. Plus les nombres sont élevés, moins les écritures sont fréquentes. Cela peut être plus économique, mais peut augmenter la latence.

Configurer la file d'attente de lettres mortes

Il arrive que les messages ne puissent pas être traités en raison d'une corruption, de types de données incompatibles ou d'un schéma non correspondant à celui de la table BigQuery de destination.

Pour gérer ces cas, activez la file d'attente de lettres mortes dans le modèle et indiquez un nom de table. Le modèle crée la table à l'aide d'un schéma standardisé. Les messages erronés sont écrits dans une table BigQuery distincte.

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 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 Dataflow Kafka vers BigQuery 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 à BigQuery 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 pages 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 pour Kafka vers BigQuery 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 Kafka vers BigQuery, 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. 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 le code temporel 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 les guides de dépannage correspondants :

Pour obtenir une présentation générale 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 auprès de votre registre de schémas.

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

Étapes suivantes